Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 50 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Push | 20256192 | 263 days ago | IN | 0 ETH | 0.00068699 | ||||
Pick | 20256189 | 263 days ago | IN | 0 ETH | 0.00015194 | ||||
Push | 19690354 | 342 days ago | IN | 0 ETH | 0.00358545 | ||||
Pick | 19690352 | 342 days ago | IN | 0 ETH | 0.00078001 | ||||
Push | 19489547 | 370 days ago | IN | 0 ETH | 0.00601775 | ||||
Pick | 19489545 | 370 days ago | IN | 0 ETH | 0.00132068 | ||||
Push | 19463535 | 374 days ago | IN | 0 ETH | 0.0081869 | ||||
Pick | 19463532 | 374 days ago | IN | 0 ETH | 0.00167399 | ||||
Push | 19463521 | 374 days ago | IN | 0 ETH | 0.00862687 | ||||
Pick | 19463519 | 374 days ago | IN | 0 ETH | 0.00193036 | ||||
Push | 19427241 | 379 days ago | IN | 0 ETH | 0.01523716 | ||||
Pick | 19427240 | 379 days ago | IN | 0 ETH | 0.00358497 | ||||
Push | 19427231 | 379 days ago | IN | 0 ETH | 0.01752955 | ||||
Pick | 19427229 | 379 days ago | IN | 0 ETH | 0.00365337 | ||||
Push | 19427222 | 379 days ago | IN | 0 ETH | 0.01811462 | ||||
Pick | 19427220 | 379 days ago | IN | 0 ETH | 0.00368982 | ||||
Push | 19289097 | 398 days ago | IN | 0 ETH | 0.01399148 | ||||
Pick | 19289095 | 398 days ago | IN | 0 ETH | 0.00273744 | ||||
Push | 19210969 | 409 days ago | IN | 0 ETH | 0.00415596 | ||||
Pick | 19210966 | 409 days ago | IN | 0 ETH | 0.00101747 | ||||
Push | 19178627 | 414 days ago | IN | 0 ETH | 0.01168995 | ||||
Pick | 19178626 | 414 days ago | IN | 0 ETH | 0.00256574 | ||||
Push | 19077539 | 428 days ago | IN | 0 ETH | 0.00354784 | ||||
Pick | 19077538 | 428 days ago | IN | 0 ETH | 0.00076296 | ||||
Push | 18828534 | 463 days ago | IN | 0 ETH | 0.01416785 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
RwaSwapOutputConduit
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 {DaiAbstract} from "dss-interfaces/dss/DaiAbstract.sol"; import {PsmAbstract} from "dss-interfaces/dss/PsmAbstract.sol"; import {GemAbstract} from "dss-interfaces/ERC/GemAbstract.sol"; import {GemJoinAbstract} from "dss-interfaces/dss/GemJoinAbstract.sol"; /** * @author Lev Livnev <[email protected]> * @author Nazar Duchak <[email protected]> * @title An Output Conduit for real-world assets (RWA). * @dev This contract differs from the original [RwaOutputConduit](https://github.com/makerdao/MIP21-RWA-Example/blob/fce06885ff89d10bf630710d4f6089c5bba94b4d/src/RwaConduit.sol#L41-L118): * - 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. * - The `push()` method swaps all DAI balance of the contract to GEM using the PSM. * - The `push(uint256)` method swaps specified amount of DAI to GEM using the PSM. * - 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 `quit()` method allows moving outstanding DAI balance to `quitTo`. It can be called only by `mate`d addresses. * - The `quit(uint256)` method allows moving the specified amount of DAI balance to `quitTo`. It can be called only by `mate`d addresses. * - The `file` method allows updating `quitTo`, `psm` addresses. It can be called only by the admin. */ contract RwaSwapOutputConduit { /// @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; /// @dev Addresses with operator access on this contract. `can[usr]` mapping(address => uint256) public can; /// @notice Whitelist for addresses which can be picked. `bud[who]` mapping(address => uint256) public bud; /// @notice Addresses with push access on this contract. `may[usr]` mapping(address => uint256) public may; /// @notice PSM contract address. PsmAbstract public psm; /// @notice GEM Recipient address. address public to; /// @notice Destination address for DAI 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 operator access. * @param usr The user address. */ event Hope(address indexed usr); /** * @notice `usr` operator access was revoked. * @param usr The user address. */ event Nope(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 `who` address whitelisted for pick. * @param who The user address. */ event Kiss(address indexed who); /** * @notice `who` address was removed from whitelist. * @param who The user address. */ event Diss(address indexed who); /** * @notice `who` address was picked as the recipient. * @param who The user address. */ event Pick(address indexed who); /** * @notice `amt` amount of GEM was pushed to the recipient `to`. * @param to Destination address for GEM. * @param amt The amount of GEM. */ event Push(address indexed to, uint256 amt); /** * @notice A contract parameter was updated. * @param what The changed parameter name. Currently the supported values are: "quitTo", "psm". * @param data The new value of the parameter. */ event File(bytes32 indexed what, address data); /** * @notice The conduit outstanding DAI balance was flushed out to `quitTo` address. * @param quitTo The quitTo address. * @param wad The amount of DAI 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, "RwaSwapOutputConduit/not-authorized"); _; } modifier onlyMate() { require(may[msg.sender] == 1 || may[address(0)] == 1, "RwaSwapOutputConduit/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. */ constructor( address _dai, address _gem, address _psm ) public { require(PsmAbstract(_psm).dai() == _dai, "RwaSwapOutputConduit/wrong-dai-for-psm"); require(GemJoinAbstract(PsmAbstract(_psm).gemJoin()).gem() == _gem, "RwaSwapOutputConduit/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); // Give unlimited approval to PSM DaiAbstract(_dai).approve(_psm, 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` operator access to this contract. * @param usr The user address. */ function hope(address usr) external auth { can[usr] = 1; emit Hope(usr); } /** * @notice Revokes `usr` operator access from this contract. * @param usr The user address. */ function nope(address usr) external auth { can[usr] = 0; emit Nope(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); } /** * @notice Whitelist `who` address for `pick`. * @param who The user address. */ function kiss(address who) external auth { bud[who] = 1; emit Kiss(who); } /** * @notice Remove `who` address from `pick` whitelist. * @param who The user address. */ function diss(address who) external auth { if (to == who) to = address(0); bud[who] = 0; emit Diss(who); } /*////////////////////////////////// Administration //////////////////////////////////*/ /** * @notice Updates a contract parameter. * @param what The changed parameter name. `"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 == "psm") { require(PsmAbstract(data).dai() == address(dai), "RwaSwapOutputConduit/wrong-dai-for-psm"); require( GemJoinAbstract(PsmAbstract(data).gemJoin()).gem() == address(gem), "RwaSwapOutputConduit/wrong-gem-for-psm" ); // Revoke approval for the old PSM dai.approve(address(psm), 0); // Give unlimited approval to the new PSM dai.approve(data, type(uint256).max); psm = PsmAbstract(data); } else { revert("RwaSwapOutputConduit/unrecognised-param"); } emit File(what, data); } /** * @notice Sets `who` address as the recipient. * @param who Recipient address. * @dev `who` address should have been whitelisted using `kiss`. */ function pick(address who) external { require(can[msg.sender] == 1 || can[address(0)] == 1, "RwaSwapOutputConduit/not-operator"); require(bud[who] == 1 || who == address(0), "RwaSwapOutputConduit/not-bud"); to = who; emit Pick(who); } /*////////////////////////////////// Operations //////////////////////////////////*/ /** * @notice Swaps the DAI balance of this contract into GEM 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(dai.balanceOf(address(this))); } /** * @notice Swaps the specified amount of DAI into GEM through the PSM and push it to the recipient address. * @dev `msg.sender` must have received push access through `mate()`. * @param wad DAI amount. */ function push(uint256 wad) external onlyMate { _doPush(wad); } /** * @notice Flushes out any DAI balance to `quitTo` address. * @dev `msg.sender` must have received push access through `mate()`. */ function quit() external onlyMate { _doQuit(dai.balanceOf(address(this))); } /** * @notice Flushes out the specified amount of DAI to the `quitTo` address. * @dev `msg.sender` must have received push access through `mate()`. * @param wad DAI amount. */ function quit(uint256 wad) external onlyMate { _doQuit(wad); } /** * @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 GEM received for swapping `wad` of DAI. * @param wad DAI amount. * @return amt Expected GEM amount. */ function expectedGemAmt(uint256 wad) public view returns (uint256 amt) { return _mul(wad, WAD) / _mul(_add(WAD, psm.tout()), to18ConversionFactor); } /** * @notice Calculates the required amount of DAI to get `amt` amount of GEM. * @param amt GEM amount. * @return wad Required DAI amount. */ function requiredDaiWad(uint256 amt) external view returns (uint256 wad) { uint256 amt18 = _mul(amt, to18ConversionFactor); uint256 fee = _mul(amt18, psm.tout()) / WAD; return _add(amt18, fee); } /** * @notice Swaps the specified amount of DAI into GEM through the PSM and push it to the recipient address. * @param wad DAI amount. */ function _doPush(uint256 wad) internal { require(to != address(0), "RwaSwapOutputConduit/to-not-picked"); // We might lose some dust here because of rounding errors. I.e.: USDC has 6 dec and DAI has 18. uint256 gemAmt = expectedGemAmt(wad); require(gemAmt > 0, "RwaSwapOutputConduit/insufficient-swap-gem-amount"); address recipient = to; to = address(0); psm.buyGem(recipient, gemAmt); emit Push(recipient, gemAmt); } /** * @notice Flushes out the specified amount of DAI to `quitTo` address. * @param wad The DAI amount. */ function _doQuit(uint256 wad) internal { require(quitTo != address(0), "RwaSwapOutputConduit/invalid-quit-to-address"); dai.transfer(quitTo, wad); emit Quit(quitTo, wad); } /*////////////////////////////////// Math //////////////////////////////////*/ uint256 internal constant WAD = 10**18; function _add(uint256 x, uint256 y) internal pure returns (uint256 z) { require((z = x + y) >= x, "Math/add-overflow"); } 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; // 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; // 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/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": [ "clipper-mom/=lib/dss-exec-lib/lib/clipper-mom/src/", "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-pause/=lib/dss-gem-joins/lib/dss-deploy/lib/ds-pause/src/", "ds-proxy/=lib/dss-exec-lib/lib/ds-proxy/src/", "ds-stop/=lib/dss-exec-lib/lib/osm-mom/lib/osm/lib/ds-stop/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-auto-line/=lib/dss-exec-lib/lib/dss-auto-line/src/", "dss-chain-log/=lib/mip21-toolkit/lib/dss-chain-log/src/", "dss-deploy/=lib/dss-gem-joins/lib/dss-deploy/src/", "dss-direct-deposit/=lib/dss-exec-lib/lib/dss-direct-deposit/src/", "dss-exec-lib/=lib/dss-exec-lib/src/", "dss-gem-joins/=lib/dss-gem-joins/src/", "dss-interfaces/=lib/dss-interfaces/src/", "dss-lerp/=lib/dss-exec-lib/lib/dss-lerp/src/", "dss-psm/=lib/mip21-toolkit/lib/dss-psm/src/", "dss/=lib/dss/src/", "esm/=lib/dss-gem-joins/lib/dss-deploy/lib/esm/src/", "flipper-mom/=lib/dss-exec-lib/lib/flipper-mom/src/", "forge-std/=lib/forge-std/src/", "forward-proxy/=lib/forward-proxy/src/", "ilk-registry/=lib/mip21-toolkit/lib/ilk-registry/src/", "median/=lib/dss-exec-lib/lib/median/src/", "mip21-toolkit/=lib/mip21-toolkit/src/", "mkr-authority/=lib/dss-exec-lib/lib/mkr-authority/src/", "osm-mom/=lib/dss-exec-lib/lib/osm-mom/src/", "osm/=lib/dss-exec-lib/lib/osm-mom/lib/osm/src/", "univ2-lp-oracle/=lib/dss-exec-lib/lib/univ2-lp-oracle/src/" ], "optimizer": { "enabled": false, "runs": 200 }, "metadata": { "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "istanbul", "libraries": { "src/shared/ChecksummedAddress.sol": { "ChecksummedAddress": "0xf880b93f25d9c528703adc403a56c1fdfb2e5900" }, "src/shared/SolidityTypeConversions.sol": { "SolidityTypeConversions": "0xf9e6d5084f70f814f1f03514e75c37a6b40f4936" }, "src/shared/Strings.sol": { "Strings": "0x93688e1fa99e80d65dc3c07f69ff07198321056d" } } }
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"}],"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":"address","name":"who","type":"address"}],"name":"Diss","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":"Hope","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"who","type":"address"}],"name":"Kiss","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":"usr","type":"address"}],"name":"Nope","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"who","type":"address"}],"name":"Pick","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amt","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":[{"internalType":"address","name":"","type":"address"}],"name":"bud","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"can","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":"address","name":"who","type":"address"}],"name":"diss","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"expectedGemAmt","outputs":[{"internalType":"uint256","name":"amt","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":"hope","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"kiss","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":[{"internalType":"address","name":"usr","type":"address"}],"name":"nope","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"pick","outputs":[],"stateMutability":"nonpayable","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":"wad","type":"uint256"}],"name":"push","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"wad","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":"amt","type":"uint256"}],"name":"requiredDaiWad","outputs":[{"internalType":"uint256","name":"wad","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
60e06040523480156200001157600080fd5b506040516200330838038062003308833981810160405260608110156200003757600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663f4b9fa756040518163ffffffff1660e01b815260040160206040518083038186803b158015620000ba57600080fd5b505afa158015620000cf573d6000803e3d6000fd5b505050506040513d6020811015620000e657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161462000165576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180620032bc6026913960400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff166301664f666040518163ffffffff1660e01b815260040160206040518083038186803b158015620001c357600080fd5b505afa158015620001d8573d6000803e3d6000fd5b505050506040513d6020811015620001ef57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b815260040160206040518083038186803b1580156200024657600080fd5b505afa1580156200025b573d6000803e3d6000fd5b505050506040513d60208110156200027257600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614620002f1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180620032e26026913960400191505060405180910390fd5b6200038a60128373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033e57600080fd5b505afa15801562000353573d6000803e3d6000fd5b505050506040513d60208110156200036a57600080fd5b810190808051906020019092919050505060ff16620005a360201b60201c565b600a0a60c0818152505080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015620004d557600080fd5b505af1158015620004ea573d6000803e3d6000fd5b505050506040513d60208110156200050157600080fd5b81019080805190602001909291905050505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a6060405160405180910390a250505062000627565b600082828403915081111562000621576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4d6174682f7375622d6f766572666c6f7700000000000000000000000000000081525060200191505060405180910390fd5b92915050565b60805160601c60a05160601c60c051612c3a62000682600039806110935280611f11525080610eb852806118a35280611b6b5280611c5b528061234a528061247052806125e1525080610d9252806119c75250612c3a6000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063a0eba259116100de578063d663159411610097578063dc4d20fa11610071578063dc4d20fa14610745578063f29c29c414610789578063f4b9fa75146107cd578063fc2b8cc3146108015761018e565b8063d663159414610661578063d9464ec814610695578063daddce52146106d75761018e565b8063a0eba25914610497578063a3b22fc4146104db578063a81de4f81461051f578063bc206b0a14610563578063bf353dbb146105bb578063d4e8be83146106135761018e565b806365c4ce7a1161014b5780638035f0ce116101255780638035f0ce146103d9578063959ac484146103e35780639a475111146104115780639c52a7f1146104535761018e565b806365c4ce7a1461031d57806365fae35e146103615780637bd2bea7146103a55761018e565b806304bda2621461019357806313151981146101c7578063344cbc68146101fb578063453638ce146102295780634fce7a2a1461028157806359ac371b146102d9575b600080fd5b61019b61080b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101cf610831565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102276004803603602081101561021157600080fd5b8101908080359060200190929190505050610857565b005b61026b6004803603602081101561023f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610962565b6040518082815260200191505060405180910390f35b6102c36004803603602081101561029757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061097a565b6040518082815260200191505060405180910390f35b61031b600480360360208110156102ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610992565b005b61035f6004803603602081101561033357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ab4565b005b6103a36004803603602081101561037757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c6f565b005b6103ad610d90565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103e1610db4565b005b61040f600480360360208110156103f957600080fd5b8101908080359060200190929190505050610f7f565b005b61043d6004803603602081101561042757600080fd5b810190808035906020019092919050505061108a565b6040518082815260200191505060405180910390f35b6104956004803603602081101561046957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061118d565b005b6104d9600480360360208110156104ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ae565b005b61051d600480360360208110156104f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611501565b005b6105616004803603602081101561053557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611622565b005b6105a56004803603602081101561057957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611744565b6040518082815260200191505060405180910390f35b6105fd600480360360208110156105d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061175c565b6040518082815260200191505060405180910390f35b61065f6004803603604081101561062957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611774565b005b610669611e30565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106c1600480360360208110156106ab57600080fd5b8101908080359060200190929190505050611e56565b6040518082815260200191505060405180910390f35b610743600480360360608110156106ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f56565b005b6107876004803603602081101561075b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612104565b005b6107cb6004803603602081101561079f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612226565b005b6107d5612348565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61080961236c565b005b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806108e457506001600360008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f527761537761704f7574707574436f6e647569742f6e6f742d6d61746500000081525060200191505060405180910390fd5b61095f81612537565b50565b60036020528060005260406000206000915090505481565b60026020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612be26023913960400191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f04942e12b9e2310f85c952df158815306377bb9f797dc3677d03be357427c53b60405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612be26023913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610be4576000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f12fdafd291eb287a54e3416070923d22aa5072f5ee04c4fb8361615e7508a37c60405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612be26023913960400191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a6060405160405180910390a250565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541480610e4157506001600360008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b610eb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f527761537761704f7574707574436f6e647569742f6e6f742d6d61746500000081525060200191505060405180910390fd5b610f7d7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610f3d57600080fd5b505afa158015610f51573d6000803e3d6000fd5b505050506040513d6020811015610f6757600080fd5b8101908080519060200190929190505050612741565b565b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148061100c57506001600360008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b61107e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f527761537761704f7574707574436f6e647569742f6e6f742d6d61746500000081525060200191505060405180910390fd5b61108781612741565b50565b6000806110b7837f00000000000000000000000000000000000000000000000000000000000000006129b6565b90506000670de0b6b3a764000061117083600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fae036d56040518163ffffffff1660e01b815260040160206040518083038186803b15801561113057600080fd5b505afa158015611144573d6000803e3d6000fd5b505050506040513d602081101561115a57600080fd5b81019080805190602001909291905050506129b6565b8161117757fe5b0490506111848282612a4b565b92505050919050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611224576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612be26023913960400191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b60405160405180910390a250565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541480611339575060018060008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b61138e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612af56021913960400191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806114085750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61147a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f527761537761704f7574707574436f6e647569742f6e6f742d6275640000000081525060200191505060405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fd867ca092b2baf182819d4b4f6bcb8081f4d47861bc99983f2e701f36a1ba46860405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611598576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612be26023913960400191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f3a21b662999d3fc0ceca48751a22bf61a806dcf3631e136271f02f7cb981fd4360405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146116b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612be26023913960400191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167fe25de3b40ce055247fe4ef6c00f96c8c3b6530536701ba1c48296b30b4bb0d9560405160405180910390a250565b60016020528060005260406000206000915090505481565b60006020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461180b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612be26023913960400191505060405180910390fd5b7f71756974546f00000000000000000000000000000000000000000000000000008214156118795780600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611dde565b7f70736d0000000000000000000000000000000000000000000000000000000000821415611d8c577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663f4b9fa756040518163ffffffff1660e01b815260040160206040518083038186803b15801561191e57600080fd5b505afa158015611932573d6000803e3d6000fd5b505050506040513d602081101561194857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146119c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612acf6026913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff166301664f666040518163ffffffff1660e01b815260040160206040518083038186803b158015611a4257600080fd5b505afa158015611a56573d6000803e3d6000fd5b505050506040513d6020811015611a6c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b815260040160206040518083038186803b158015611ac257600080fd5b505afa158015611ad6573d6000803e3d6000fd5b505050506040513d6020811015611aec57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614611b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612bbc6026913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611c1d57600080fd5b505af1158015611c31573d6000803e3d6000fd5b505050506040513d6020811015611c4757600080fd5b8101908080519060200190929190505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611d0a57600080fd5b505af1158015611d1e573d6000803e3d6000fd5b505050506040513d6020811015611d3457600080fd5b81019080805190602001909291905050505080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ddd565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180612b956027913960400191505060405180910390fd5b5b817f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba82604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a25050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611f35611f0f670de0b6b3a7640000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fae036d56040518163ffffffff1660e01b815260040160206040518083038186803b158015611ecf57600080fd5b505afa158015611ee3573d6000803e3d6000fd5b505050506040513d6020811015611ef957600080fd5b8101908080519060200190929190505050612a4b565b7f00000000000000000000000000000000000000000000000000000000000000006129b6565b611f4783670de0b6b3a76400006129b6565b81611f4e57fe5b049050919050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612be26023913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561205e57600080fd5b505af1158015612072573d6000803e3d6000fd5b505050506040513d602081101561208857600080fd5b8101908080519060200190929190505050508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f3336d8973868f7727fbbf287f4fd9fb0237fe2696b301f8a46c563cb46d7b419836040518082815260200191505060405180910390a3505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461219b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612be26023913960400191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f9cd85b2ca76a06c46be663a514e012af1aea8954b0e53f42146cd9b1ebb21ebc60405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146122bd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612be26023913960400191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f6ffc0fabf0709270e42087e84a3bfc36041d3b281266d04ae1962185092fb24460405160405180910390a250565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806123f957506001600360008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b61246b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f527761537761704f7574707574436f6e647569742f6e6f742d6d61746500000081525060200191505060405180910390fd5b6125357f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156124f557600080fd5b505afa158015612509573d6000803e3d6000fd5b505050506040513d602081101561251f57600080fd5b8101908080519060200190929190505050612537565b565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156125df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612b69602c913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561269257600080fd5b505af11580156126a6573d6000803e3d6000fd5b505050506040513d60208110156126bc57600080fd5b810190808051906020019092919050505050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fc81bfec1ac9d038698c3b15fc900dafbff3af4b9f26062f895dd08a676ec78ae826040518082815260200191505060405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156127e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612b166022913960400191505060405180910390fd5b60006127f482611e56565b90506000811161284f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180612b386031913960400191505060405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d7ef9bb82846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561294b57600080fd5b505af115801561295f573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff167fdf8180823cf670d41db21fa54ef9909b0bd724c931fbd55fe1fcbdc655ea2fb0836040518082815260200191505060405180910390a2505050565b6000808214806129d357508282838502925082816129d057fe5b04145b612a45576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4d6174682f6d756c2d6f766572666c6f7700000000000000000000000000000081525060200191505060405180910390fd5b92915050565b6000828284019150811015612ac8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4d6174682f6164642d6f766572666c6f7700000000000000000000000000000081525060200191505060405180910390fd5b9291505056fe527761537761704f7574707574436f6e647569742f77726f6e672d6461692d666f722d70736d527761537761704f7574707574436f6e647569742f6e6f742d6f70657261746f72527761537761704f7574707574436f6e647569742f746f2d6e6f742d7069636b6564527761537761704f7574707574436f6e647569742f696e73756666696369656e742d737761702d67656d2d616d6f756e74527761537761704f7574707574436f6e647569742f696e76616c69642d717569742d746f2d61646472657373527761537761704f7574707574436f6e647569742f756e7265636f676e697365642d706172616d527761537761704f7574707574436f6e647569742f77726f6e672d67656d2d666f722d70736d527761537761704f7574707574436f6e647569742f6e6f742d617574686f72697a6564a2646970667358221220317e0c9db31afa0179435c264fdd05ea9024a32eda150344dc9cee42d5a11e9864736f6c634300060c0033527761537761704f7574707574436f6e647569742f77726f6e672d6461692d666f722d70736d527761537761704f7574707574436f6e647569742f77726f6e672d67656d2d666f722d70736d0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000089b78cfa322f6c5de0abceecab66aee45393cc5a
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061018e5760003560e01c8063a0eba259116100de578063d663159411610097578063dc4d20fa11610071578063dc4d20fa14610745578063f29c29c414610789578063f4b9fa75146107cd578063fc2b8cc3146108015761018e565b8063d663159414610661578063d9464ec814610695578063daddce52146106d75761018e565b8063a0eba25914610497578063a3b22fc4146104db578063a81de4f81461051f578063bc206b0a14610563578063bf353dbb146105bb578063d4e8be83146106135761018e565b806365c4ce7a1161014b5780638035f0ce116101255780638035f0ce146103d9578063959ac484146103e35780639a475111146104115780639c52a7f1146104535761018e565b806365c4ce7a1461031d57806365fae35e146103615780637bd2bea7146103a55761018e565b806304bda2621461019357806313151981146101c7578063344cbc68146101fb578063453638ce146102295780634fce7a2a1461028157806359ac371b146102d9575b600080fd5b61019b61080b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101cf610831565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102276004803603602081101561021157600080fd5b8101908080359060200190929190505050610857565b005b61026b6004803603602081101561023f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610962565b6040518082815260200191505060405180910390f35b6102c36004803603602081101561029757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061097a565b6040518082815260200191505060405180910390f35b61031b600480360360208110156102ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610992565b005b61035f6004803603602081101561033357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ab4565b005b6103a36004803603602081101561037757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c6f565b005b6103ad610d90565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103e1610db4565b005b61040f600480360360208110156103f957600080fd5b8101908080359060200190929190505050610f7f565b005b61043d6004803603602081101561042757600080fd5b810190808035906020019092919050505061108a565b6040518082815260200191505060405180910390f35b6104956004803603602081101561046957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061118d565b005b6104d9600480360360208110156104ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ae565b005b61051d600480360360208110156104f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611501565b005b6105616004803603602081101561053557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611622565b005b6105a56004803603602081101561057957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611744565b6040518082815260200191505060405180910390f35b6105fd600480360360208110156105d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061175c565b6040518082815260200191505060405180910390f35b61065f6004803603604081101561062957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611774565b005b610669611e30565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106c1600480360360208110156106ab57600080fd5b8101908080359060200190929190505050611e56565b6040518082815260200191505060405180910390f35b610743600480360360608110156106ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f56565b005b6107876004803603602081101561075b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612104565b005b6107cb6004803603602081101561079f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612226565b005b6107d5612348565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61080961236c565b005b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806108e457506001600360008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f527761537761704f7574707574436f6e647569742f6e6f742d6d61746500000081525060200191505060405180910390fd5b61095f81612537565b50565b60036020528060005260406000206000915090505481565b60026020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612be26023913960400191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f04942e12b9e2310f85c952df158815306377bb9f797dc3677d03be357427c53b60405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612be26023913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610be4576000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f12fdafd291eb287a54e3416070923d22aa5072f5ee04c4fb8361615e7508a37c60405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612be26023913960400191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a6060405160405180910390a250565b7f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881565b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541480610e4157506001600360008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b610eb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f527761537761704f7574707574436f6e647569742f6e6f742d6d61746500000081525060200191505060405180910390fd5b610f7d7f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610f3d57600080fd5b505afa158015610f51573d6000803e3d6000fd5b505050506040513d6020811015610f6757600080fd5b8101908080519060200190929190505050612741565b565b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148061100c57506001600360008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b61107e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f527761537761704f7574707574436f6e647569742f6e6f742d6d61746500000081525060200191505060405180910390fd5b61108781612741565b50565b6000806110b7837f000000000000000000000000000000000000000000000000000000e8d4a510006129b6565b90506000670de0b6b3a764000061117083600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fae036d56040518163ffffffff1660e01b815260040160206040518083038186803b15801561113057600080fd5b505afa158015611144573d6000803e3d6000fd5b505050506040513d602081101561115a57600080fd5b81019080805190602001909291905050506129b6565b8161117757fe5b0490506111848282612a4b565b92505050919050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611224576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612be26023913960400191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b60405160405180910390a250565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541480611339575060018060008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b61138e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612af56021913960400191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806114085750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61147a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f527761537761704f7574707574436f6e647569742f6e6f742d6275640000000081525060200191505060405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fd867ca092b2baf182819d4b4f6bcb8081f4d47861bc99983f2e701f36a1ba46860405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611598576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612be26023913960400191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f3a21b662999d3fc0ceca48751a22bf61a806dcf3631e136271f02f7cb981fd4360405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146116b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612be26023913960400191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167fe25de3b40ce055247fe4ef6c00f96c8c3b6530536701ba1c48296b30b4bb0d9560405160405180910390a250565b60016020528060005260406000206000915090505481565b60006020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461180b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612be26023913960400191505060405180910390fd5b7f71756974546f00000000000000000000000000000000000000000000000000008214156118795780600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611dde565b7f70736d0000000000000000000000000000000000000000000000000000000000821415611d8c577f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663f4b9fa756040518163ffffffff1660e01b815260040160206040518083038186803b15801561191e57600080fd5b505afa158015611932573d6000803e3d6000fd5b505050506040513d602081101561194857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146119c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612acf6026913960400191505060405180910390fd5b7f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff166301664f666040518163ffffffff1660e01b815260040160206040518083038186803b158015611a4257600080fd5b505afa158015611a56573d6000803e3d6000fd5b505050506040513d6020811015611a6c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b815260040160206040518083038186803b158015611ac257600080fd5b505afa158015611ad6573d6000803e3d6000fd5b505050506040513d6020811015611aec57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614611b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612bbc6026913960400191505060405180910390fd5b7f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611c1d57600080fd5b505af1158015611c31573d6000803e3d6000fd5b505050506040513d6020811015611c4757600080fd5b8101908080519060200190929190505050507f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1663095ea7b3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611d0a57600080fd5b505af1158015611d1e573d6000803e3d6000fd5b505050506040513d6020811015611d3457600080fd5b81019080805190602001909291905050505080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ddd565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180612b956027913960400191505060405180910390fd5b5b817f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba82604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a25050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611f35611f0f670de0b6b3a7640000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fae036d56040518163ffffffff1660e01b815260040160206040518083038186803b158015611ecf57600080fd5b505afa158015611ee3573d6000803e3d6000fd5b505050506040513d6020811015611ef957600080fd5b8101908080519060200190929190505050612a4b565b7f000000000000000000000000000000000000000000000000000000e8d4a510006129b6565b611f4783670de0b6b3a76400006129b6565b81611f4e57fe5b049050919050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612be26023913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561205e57600080fd5b505af1158015612072573d6000803e3d6000fd5b505050506040513d602081101561208857600080fd5b8101908080519060200190929190505050508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f3336d8973868f7727fbbf287f4fd9fb0237fe2696b301f8a46c563cb46d7b419836040518082815260200191505060405180910390a3505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461219b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612be26023913960400191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f9cd85b2ca76a06c46be663a514e012af1aea8954b0e53f42146cd9b1ebb21ebc60405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146122bd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612be26023913960400191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f6ffc0fabf0709270e42087e84a3bfc36041d3b281266d04ae1962185092fb24460405160405180910390a250565b7f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f81565b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806123f957506001600360008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b61246b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f527761537761704f7574707574436f6e647569742f6e6f742d6d61746500000081525060200191505060405180910390fd5b6125357f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156124f557600080fd5b505afa158015612509573d6000803e3d6000fd5b505050506040513d602081101561251f57600080fd5b8101908080519060200190929190505050612537565b565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156125df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612b69602c913960400191505060405180910390fd5b7f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561269257600080fd5b505af11580156126a6573d6000803e3d6000fd5b505050506040513d60208110156126bc57600080fd5b810190808051906020019092919050505050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fc81bfec1ac9d038698c3b15fc900dafbff3af4b9f26062f895dd08a676ec78ae826040518082815260200191505060405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156127e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612b166022913960400191505060405180910390fd5b60006127f482611e56565b90506000811161284f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180612b386031913960400191505060405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d7ef9bb82846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561294b57600080fd5b505af115801561295f573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff167fdf8180823cf670d41db21fa54ef9909b0bd724c931fbd55fe1fcbdc655ea2fb0836040518082815260200191505060405180910390a2505050565b6000808214806129d357508282838502925082816129d057fe5b04145b612a45576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4d6174682f6d756c2d6f766572666c6f7700000000000000000000000000000081525060200191505060405180910390fd5b92915050565b6000828284019150811015612ac8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4d6174682f6164642d6f766572666c6f7700000000000000000000000000000081525060200191505060405180910390fd5b9291505056fe527761537761704f7574707574436f6e647569742f77726f6e672d6461692d666f722d70736d527761537761704f7574707574436f6e647569742f6e6f742d6f70657261746f72527761537761704f7574707574436f6e647569742f746f2d6e6f742d7069636b6564527761537761704f7574707574436f6e647569742f696e73756666696369656e742d737761702d67656d2d616d6f756e74527761537761704f7574707574436f6e647569742f696e76616c69642d717569742d746f2d61646472657373527761537761704f7574707574436f6e647569742f756e7265636f676e697365642d706172616d527761537761704f7574707574436f6e647569742f77726f6e672d67656d2d666f722d70736d527761537761704f7574707574436f6e647569742f6e6f742d617574686f72697a6564a2646970667358221220317e0c9db31afa0179435c264fdd05ea9024a32eda150344dc9cee42d5a11e9864736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000089b78cfa322f6c5de0abceecab66aee45393cc5a
-----Decoded View---------------
Arg [0] : _dai (address): 0x6B175474E89094C44Da98b954EedeAC495271d0F
Arg [1] : _gem (address): 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
Arg [2] : _psm (address): 0x89B78CfA322F6C5dE0aBcEecab66Aee45393cC5A
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f
Arg [1] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [2] : 00000000000000000000000089b78cfa322f6c5de0abceecab66aee45393cc5a
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.