ETH Price: $1,949.56 (-0.68%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Cast108213992020-09-08 14:00:322000 days ago1599573632IN
0x2D72e956...AA82B62E9
0 ETH0.2931919699
Schedule108023952020-09-05 16:05:512003 days ago1599321951IN
0x2D72e956...AA82B62E9
0 ETH0.02438356283

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method Block
From
To
-107962812020-09-04 17:39:482004 days ago1599241188
0x2D72e956...AA82B62E9
 Contract Creation0 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DssSpell

Compiler Version
v0.5.12+commit.7709ece9

Optimization Enabled:
Yes with 1 runs

Other Settings:
default evmVersion, GNU GPLv3 license
/**
 *Submitted for verification at Etherscan.io on 2020-09-04
*/

// Copyright (C) 2020 Maker Ecosystem Growth Holdings, INC.
//
// 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.5.12;

// https://github.com/dapphub/ds-pause
interface DSPauseAbstract {
    function setOwner(address) external;
    function setAuthority(address) external;
    function setDelay(uint256) external;
    function plans(bytes32) external view returns (bool);
    function proxy() external view returns (address);
    function delay() external view returns (uint256);
    function plot(address, bytes32, bytes calldata, uint256) external;
    function drop(address, bytes32, bytes calldata, uint256) external;
    function exec(address, bytes32, bytes calldata, uint256) external returns (bytes memory);
}

// https://github.com/makerdao/dss/blob/master/src/vat.sol
interface VatAbstract {
    function wards(address) external view returns (uint256);
    function rely(address) external;
    function deny(address) external;
    function can(address, address) external view returns (uint256);
    function hope(address) external;
    function nope(address) external;
    function ilks(bytes32) external view returns (uint256, uint256, uint256, uint256, uint256);
    function urns(bytes32, address) external view returns (uint256, uint256);
    function gem(bytes32, address) external view returns (uint256);
    function dai(address) external view returns (uint256);
    function sin(address) external view returns (uint256);
    function debt() external view returns (uint256);
    function vice() external view returns (uint256);
    function Line() external view returns (uint256);
    function live() external view returns (uint256);
    function init(bytes32) external;
    function file(bytes32, uint256) external;
    function file(bytes32, bytes32, uint256) external;
    function cage() external;
    function slip(bytes32, address, int256) external;
    function flux(bytes32, address, address, uint256) external;
    function move(address, address, uint256) external;
    function frob(bytes32, address, address, address, int256, int256) external;
    function fork(bytes32, address, address, int256, int256) external;
    function grab(bytes32, address, address, address, int256, int256) external;
    function heal(uint256) external;
    function suck(address, address, uint256) external;
    function fold(bytes32, address, int256) external;
}

// https://github.com/makerdao/dss/blob/master/src/cat.sol
interface CatAbstract {
    function wards(address) external view returns (uint256);
    function rely(address) external;
    function deny(address) external;
    function box() external view returns (uint256);
    function litter() external view returns (uint256);
    function ilks(bytes32) external view returns (address, uint256, uint256);
    function live() external view returns (uint256);
    function vat() external view returns (address);
    function vow() external view returns (address);
    function file(bytes32, address) external;
    function file(bytes32, uint256) external;
    function file(bytes32, bytes32, uint256) external;
    function file(bytes32, bytes32, address) external;
    function bite(bytes32, address) external returns (uint256);
    function claw(uint256) external;
    function cage() external;
}

// https://github.com/makerdao/dss/blob/master/src/jug.sol
interface JugAbstract {
    function wards(address) external view returns (uint256);
    function rely(address) external;
    function deny(address) external;
    function ilks(bytes32) external view returns (uint256, uint256);
    function vat() external view returns (address);
    function vow() external view returns (address);
    function base() external view returns (address);
    function init(bytes32) external;
    function file(bytes32, bytes32, uint256) external;
    function file(bytes32, uint256) external;
    function file(bytes32, address) external;
    function drip(bytes32) external returns (uint256);
}

// https://github.com/makerdao/dss/blob/master/src/flip.sol
interface FlipAbstract {
    function wards(address) external view returns (uint256);
    function rely(address usr) external;
    function deny(address usr) external;
    function bids(uint256) external view returns (uint256, uint256, address, uint48, uint48, address, address, uint256);
    function vat() external view returns (address);
    function cat() external view returns (address);
    function ilk() external view returns (bytes32);
    function beg() external view returns (uint256);
    function ttl() external view returns (uint48);
    function tau() external view returns (uint48);
    function kicks() external view returns (uint256);
    function file(bytes32, uint256) external;
    function kick(address, address, uint256, uint256, uint256) external returns (uint256);
    function tick(uint256) external;
    function tend(uint256, uint256, uint256) external;
    function dent(uint256, uint256, uint256) external;
    function deal(uint256) external;
    function yank(uint256) external;
}

// https://github.com/makerdao/dss/blob/master/src/spot.sol
interface SpotAbstract {
    function wards(address) external view returns (uint256);
    function rely(address) external;
    function deny(address) external;
    function ilks(bytes32) external view returns (address, uint256);
    function vat() external view returns (address);
    function par() external view returns (uint256);
    function live() external view returns (uint256);
    function file(bytes32, bytes32, address) external;
    function file(bytes32, uint256) external;
    function file(bytes32, bytes32, uint256) external;
    function poke(bytes32) external;
    function cage() external;
}

// https://github.com/makerdao/osm
interface OsmAbstract {
    function wards(address) external view returns (uint256);
    function rely(address) external;
    function deny(address) external;
    function stopped() external view returns (uint256);
    function src() external view returns (address);
    function hop() external view returns (uint16);
    function zzz() external view returns (uint64);
    function cur() external view returns (uint128, uint128);
    function nxt() external view returns (uint128, uint128);
    function bud(address) external view returns (uint256);
    function stop() external;
    function start() external;
    function change(address) external;
    function step(uint16) external;
    function void() external;
    function pass() external view returns (bool);
    function poke() external;
    function peek() external view returns (bytes32, bool);
    function peep() external view returns (bytes32, bool);
    function read() external view returns (bytes32);
    function kiss(address) external;
    function diss(address) external;
    function kiss(address[] calldata) external;
    function diss(address[] calldata) external;
}

// https://github.com/makerdao/osm-mom
interface OsmMomAbstract {
    function owner() external view returns (address);
    function authority() external view returns (address);
    function osms(bytes32) external view returns (address);
    function setOsm(bytes32, address) external;
    function setOwner(address) external;
    function setAuthority(address) external;
    function stop(bytes32) external;
}

// https://github.com/makerdao/median
interface MedianAbstract {
    function wards(address) external view returns (uint256);
    function rely(address) external;
    function deny(address) external;
    function age() external view returns (uint32);
    function wat() external view returns (bytes32);
    function bar() external view returns (uint256);
    function orcl(address) external view returns (uint256);
    function bud(address) external view returns (uint256);
    function slot(uint8) external view returns (address);
    function read() external view returns (uint256);
    function peek() external view returns (uint256, bool);
    function lift(address[] calldata) external;
    function drop(address[] calldata) external;
    function setBar(uint256) external;
    function kiss(address) external;
    function diss(address) external;
    function kiss(address[] calldata) external;
    function diss(address[] calldata) external;
    function poke(uint256[] calldata, uint256[] calldata, uint8[] calldata, bytes32[] calldata, bytes32[] calldata) external;
}

// 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;
}

// https://github.com/makerdao/flipper-mom/blob/master/src/FlipperMom.sol
interface FlipperMomAbstract {
    function owner() external returns (address);
    function setOwner(address) external;
    function authority() external returns (address);
    function setAuthority(address) external;
    function cat() external returns (address);
    function rely(address) external;
    function deny(address) external;
}

// https://github.com/makerdao/ilk-registry/blob/master/src/IlkRegistry.sol
interface IlkRegistryAbstract {
    function wards(address) external view returns (uint256);
    function rely(address) external;
    function deny(address) external;
    function vat() external view returns (address);
    function cat() external view returns (address);
    function spot() external view returns (address);
    function ilkData(bytes32) external view returns (
        uint256,
        address,
        address,
        address,
        address,
        uint256,
        string memory,
        string memory
    );
    function ilks() external view returns (bytes32[] memory);
    function ilks(uint) external view returns (bytes32);
    function add(address) external;
    function remove(bytes32) external;
    function removeAuth(bytes32) external;
    function file(bytes32, bytes32, address) external;
    function file(bytes32, bytes32, uint256) external;
    function file(bytes32, bytes32, string calldata) external;
    function count() external view returns (uint256);
    function list() external view returns (bytes32[] memory);
    function list(uint256, uint256) external view returns (bytes32[] memory);
    function get(uint256) external view returns (bytes32);
    function info(bytes32) external view returns (
        string memory,
        string memory,
        uint256,
        address,
        address,
        address,
        address
    );
    function pos(bytes32) external view returns (uint256);
    function gem(bytes32) external view returns (address);
    function pip(bytes32) external view returns (address);
    function join(bytes32) external view returns (address);
    function flip(bytes32) external view returns (address);
    function dec(bytes32) external view returns (uint256);
    function symbol(bytes32) external view returns (string memory);
    function name(bytes32) external view returns (string memory);
}

contract ERC20 {
    function decimals() external view returns (uint);
}

contract SpellAction {

    // MAINNET ADDRESSES
    //
    // The contracts in this list should correspond to MCD core contracts, verify
    // against the current release list at:
    //     https://changelog.makerdao.com/releases/mainnet/1.1.0/contracts.json
    address constant MCD_VAT                = 0x35D1b3F3D7966A1DFe207aa4514C12a259A0492B;
    address constant MCD_CAT                = 0xa5679C04fc3d9d8b0AaB1F0ab83555b301cA70Ea;
    address constant MCD_JUG                = 0x19c0976f590D67707E62397C87829d896Dc0f1F1;
    address constant MCD_SPOT               = 0x65C79fcB50Ca1594B025960e539eD7A9a6D434A3;
    address constant MCD_END                = 0xaB14d3CE3F733CACB76eC2AbE7d2fcb00c99F3d5;
    address constant FLIPPER_MOM            = 0xc4bE7F74Ee3743bDEd8E0fA218ee5cf06397f472;
    address constant OSM_MOM                = 0x76416A4d5190d071bfed309861527431304aA14f;
    address constant ILK_REGISTRY           = 0x8b4ce5DCbb01e0e1f0521cd8dCfb31B308E52c24;

    address constant USDT                   = 0xdAC17F958D2ee523a2206206994597C13D831ec7;
    address constant MCD_JOIN_USDT_A        = 0x0Ac6A1D74E84C2dF9063bDDc31699FF2a2BB22A2;
    address constant MCD_FLIP_USDT_A        = 0x667F41d0fDcE1945eE0f56A79dd6c142E37fCC26;
    address constant PIP_USDT               = 0x7a5918670B0C390aD25f7beE908c1ACc2d314A3C;

    address constant PAXUSD                 = 0x8E870D67F660D95d5be530380D0eC0bd388289E1;
    address constant MCD_JOIN_PAXUSD_A      = 0x7e62B7E279DFC78DEB656E34D6a435cC08a44666;
    address constant MCD_FLIP_PAXUSD_A      = 0x52D5D1C05CC79Fc24A629Cb24cB06C5BE5d766E7;
    address constant PIP_PAXUSD             = 0x043B963E1B2214eC90046167Ea29C2c8bDD7c0eC;

    // light feeds
    //
    // https://forum.makerdao.com/t/mip10c14-sp5-proposal-appoint-argent-as-a-light-feed/3015
    address constant ARGENT                 = 0x130431b4560Cd1d74A990AE86C337a33171FF3c6;
    // https://forum.makerdao.com/t/mip10c14-sp6-proposal-appoint-mycrypto-as-a-light-feed/3383
    address constant MYCRYPTO               = 0x3CB645a8f10Fb7B0721eaBaE958F77a878441Cb9;

    // Medianizers
    address constant USDTUSD                = 0x56D4bBF358D7790579b55eA6Af3f605BcA2c0C3A;
    address constant MANAUSD                = 0x681c4F8f69cF68852BAd092086ffEaB31F5B812c;
    address constant BATUSD                 = 0x18B4633D6E39870f398597f3c1bA8c4A41294966;
    address constant BTCUSD                 = 0xe0F30cb149fAADC7247E953746Be9BbBB6B5751f;
    address constant ETHBTC                 = 0x81A679f98b63B3dDf2F17CB5619f4d6775b3c5ED;
    address constant ETHUSD                 = 0x64DE91F5A373Cd4c28de3600cB34C7C6cE410C85;
    address constant KNCUSD                 = 0x83076a2F42dc1925537165045c9FDe9A4B71AD97;
    address constant ZRXUSD                 = 0x956ecD6a9A9A0d84e8eB4e6BaaC09329E202E55e;

    // Decimals & precision
    uint256 constant THOUSAND = 10 ** 3;
    uint256 constant MILLION  = 10 ** 6;
    uint256 constant WAD      = 10 ** 18;
    uint256 constant RAY      = 10 ** 27;
    uint256 constant RAD      = 10 ** 45;

    // Many of the settings that change weekly rely on the rate accumulator
    // described at https://docs.makerdao.com/smart-contract-modules/rates-module
    // To check this yourself, use the following rate calculation (example 8%):
    //
    // $ bc -l <<< 'scale=27; e( l(1.08)/(60 * 60 * 24 * 365) )'
    //
    uint256 constant TWO_PCT_RATE           = 1000000000627937192491029810;
    uint256 constant FOUR_PCT_RATE          = 1000000001243680656318820312;
    uint256 constant SIX_PCT_RATE           = 1000000001847694957439350562;
    uint256 constant TEN_PCT_RATE           = 1000000003022265980097387650;
    uint256 constant FOURTY_EIGHT_PCT_RATE  = 1000000012431573129530493155;

    function execute() external {
        /*** Risk Parameter Adjustments ***/

        // set the global debt ceiling to 763,000,000
        // 708 (current DC) + 40 (WBTC-A increase) + 10 (tether DC) + 5 (paxusd DC)
        VatAbstract(MCD_VAT).file("Line", 763 * MILLION * RAD);

        // Set the WBTC-A debt ceiling
        //
        // Existing debt ceiling: 80 million
        // New debt ceiling: 120 million
        VatAbstract(MCD_VAT).file("WBTC-A", "line", 120 * MILLION * RAD);

        // Set the BAT-A stability fee
        // Previous: 0%
        // New: 2%
        JugAbstract(MCD_JUG).drip("BAT-A"); // drip right before
        JugAbstract(MCD_JUG).file("BAT-A", "duty", TWO_PCT_RATE);

        // Set the USDC-A stability fee
        // Previous: 0%
        // New: 2%
        JugAbstract(MCD_JUG).drip("USDC-A"); // drip right before
        JugAbstract(MCD_JUG).file("USDC-A", "duty", TWO_PCT_RATE);

        // Set the USDC-B stability fee
        // Previous: 44%
        // New: 48%
        JugAbstract(MCD_JUG).drip("USDC-B"); // drip right before
        JugAbstract(MCD_JUG).file("USDC-B", "duty", FOURTY_EIGHT_PCT_RATE);

        // Set the WBTC-A stability fee
        // Previous: 0%
        // New: 2%
        JugAbstract(MCD_JUG).drip("WBTC-A"); // drip right before
        JugAbstract(MCD_JUG).file("WBTC-A", "duty", TWO_PCT_RATE);

        // Set the KNC-A stability fee
        // Previous: 0%
        // New: 2%
        JugAbstract(MCD_JUG).drip("KNC-A"); // drip right before
        JugAbstract(MCD_JUG).file("KNC-A", "duty", TWO_PCT_RATE);

        // Set the ZRX-A stability fee
        // Previous: 0%
        // New: 2%
        JugAbstract(MCD_JUG).drip("ZRX-A"); // drip right before
        JugAbstract(MCD_JUG).file("ZRX-A", "duty", TWO_PCT_RATE);

        // Set the MANA-A stability fee
        // Previous: 6%
        // New: 10%
        JugAbstract(MCD_JUG).drip("MANA-A"); // drip right before
        JugAbstract(MCD_JUG).file("MANA-A", "duty", TEN_PCT_RATE);

        // argent address array
        address[] memory argent = new address[](1);
        argent[0] = ARGENT;

        // mycrypto address array
        address[] memory mycrypto = new address[](1);
        mycrypto[0] = MYCRYPTO;

        // Lift New Argent light feed
        MedianAbstract(BATUSD).lift(argent);
        MedianAbstract(BTCUSD).lift(argent);
        MedianAbstract(ETHBTC).lift(argent);
        MedianAbstract(ETHUSD).lift(argent);
        MedianAbstract(KNCUSD).lift(argent);
        MedianAbstract(ZRXUSD).lift(argent);
        MedianAbstract(USDTUSD).lift(argent);
        MedianAbstract(MANAUSD).lift(argent);

        // Lift New MyCrypto light feed
        MedianAbstract(BATUSD).lift(mycrypto);
        MedianAbstract(BTCUSD).lift(mycrypto);
        MedianAbstract(ETHBTC).lift(mycrypto);
        MedianAbstract(ETHUSD).lift(mycrypto);
        MedianAbstract(KNCUSD).lift(mycrypto);
        MedianAbstract(ZRXUSD).lift(mycrypto);
        MedianAbstract(USDTUSD).lift(mycrypto);
        MedianAbstract(MANAUSD).lift(mycrypto);

        ////////////////////////////////////////////////////////////////////////////////
        // USDT-A collateral deploy

        // Set ilk bytes32 variable
        bytes32 ilkUSDTA = "USDT-A";

        // Sanity checks
        require(GemJoinAbstract(MCD_JOIN_USDT_A).vat() == MCD_VAT,                  "join-vat-not-match");
        require(GemJoinAbstract(MCD_JOIN_USDT_A).ilk() == ilkUSDTA,                 "join-ilk-not-match");
        require(GemJoinAbstract(MCD_JOIN_USDT_A).gem() == USDT,   	                "join-gem-not-match");
        require(GemJoinAbstract(MCD_JOIN_USDT_A).dec() == ERC20(USDT).decimals(),   "join-dec-not-match");
        require(FlipAbstract(MCD_FLIP_USDT_A).vat()    == MCD_VAT,                  "flip-vat-not-match");
        require(FlipAbstract(MCD_FLIP_USDT_A).ilk()    == ilkUSDTA,                 "flip-ilk-not-match");

        // Set price feed for USDT-A
        SpotAbstract(MCD_SPOT).file(ilkUSDTA, "pip", PIP_USDT);

        // Set the USDT-A flipper in the cat
        CatAbstract(MCD_CAT).file(ilkUSDTA, "flip", MCD_FLIP_USDT_A);

        // Init USDT-A in Vat
        VatAbstract(MCD_VAT).init(ilkUSDTA);
        // Init USDT-A in Jug
        JugAbstract(MCD_JUG).init(ilkUSDTA);

        // Allow USDT-A Join to modify Vat registry
        VatAbstract(MCD_VAT).rely(MCD_JOIN_USDT_A);

        // Allow USDT-A Flipper on the Cat
        CatAbstract(MCD_CAT).rely(MCD_FLIP_USDT_A);

        // Allow cat to kick auctions in USDT-A Flipper
        FlipAbstract(MCD_FLIP_USDT_A).rely(MCD_CAT);

        // Allow End to yank auctions in USDT-A Flipper
        FlipAbstract(MCD_FLIP_USDT_A).rely(MCD_END);

        // Allow FlipperMom to access the USDT-A Flipper
        FlipAbstract(MCD_FLIP_USDT_A).rely(FLIPPER_MOM);

        // Update OSM
        OsmAbstract(PIP_USDT).rely(OSM_MOM);
        MedianAbstract(OsmAbstract(PIP_USDT).src()).kiss(PIP_USDT);
        OsmAbstract(PIP_USDT).kiss(MCD_SPOT);
        OsmAbstract(PIP_USDT).kiss(MCD_END);
        OsmMomAbstract(OSM_MOM).setOsm(ilkUSDTA, PIP_USDT);

        // since we're adding 2 collateral types in this spell, global line is at beginning
        VatAbstract(MCD_VAT).file( ilkUSDTA, "line", 10 * MILLION * RAD   ); // 10m debt ceiling
        VatAbstract(MCD_VAT).file( ilkUSDTA, "dust", 100 * RAD            ); // 100 Dai dust
        CatAbstract(MCD_CAT).file( ilkUSDTA, "dunk", 50 * THOUSAND * RAD  ); // 50,000 dunk
        CatAbstract(MCD_CAT).file( ilkUSDTA, "chop", 113 * WAD / 100      ); // 13% liq. penalty
        JugAbstract(MCD_JUG).file( ilkUSDTA, "duty", SIX_PCT_RATE         ); // 6% stability fee

        FlipAbstract(MCD_FLIP_USDT_A).file(  "beg" , 103 * WAD / 100      ); // 3% bid increase
        FlipAbstract(MCD_FLIP_USDT_A).file(  "ttl" , 6 hours              ); // 6 hours ttl
        FlipAbstract(MCD_FLIP_USDT_A).file(  "tau" , 6 hours              ); // 6 hours tau

        SpotAbstract(MCD_SPOT).file(ilkUSDTA, "mat",  150 * RAY / 100     ); // 150% coll. ratio
        SpotAbstract(MCD_SPOT).poke(ilkUSDTA);

        IlkRegistryAbstract(ILK_REGISTRY).add(MCD_JOIN_USDT_A);

        ////////////////////////////////////////////////////////////////////////////////
        // PAXUSD-A collateral deploy
        // Set ilk bytes32 variable
        bytes32 ilkPAXUSDA = "PAXUSD-A";

        // Sanity checks
        require(GemJoinAbstract(MCD_JOIN_PAXUSD_A).vat() == MCD_VAT,                    "join-vat-not-match");
        require(GemJoinAbstract(MCD_JOIN_PAXUSD_A).ilk() == ilkPAXUSDA,                 "join-ilk-not-match");
        require(GemJoinAbstract(MCD_JOIN_PAXUSD_A).gem() == PAXUSD,                     "join-gem-not-match");
        require(GemJoinAbstract(MCD_JOIN_PAXUSD_A).dec() == ERC20(PAXUSD).decimals(),   "join-dec-not-match");
        require(FlipAbstract(MCD_FLIP_PAXUSD_A).vat()    == MCD_VAT,                    "flip-vat-not-match");
        require(FlipAbstract(MCD_FLIP_PAXUSD_A).ilk()    == ilkPAXUSDA,                 "flip-ilk-not-match");

        // Set price feed for PAXUSD-A
        SpotAbstract(MCD_SPOT).file(ilkPAXUSDA, "pip", PIP_PAXUSD);

        // Set the PAXUSD-A flipper in the cat
        CatAbstract(MCD_CAT).file(ilkPAXUSDA, "flip", MCD_FLIP_PAXUSD_A);

        // Init PAXUSD-A in Vat
        VatAbstract(MCD_VAT).init(ilkPAXUSDA);
        // Init PAXUSD-A in Jug
        JugAbstract(MCD_JUG).init(ilkPAXUSDA);

        // Allow PAXUSD-A Join to modify Vat registry
        VatAbstract(MCD_VAT).rely(MCD_JOIN_PAXUSD_A);

        // Allow PAXUSD-A Flipper on the Cat
        CatAbstract(MCD_CAT).rely(MCD_FLIP_PAXUSD_A);

        // Allow cat to kick auctions in PAXUSD-A Flipper
        // NOTE: this will be reverse later in spell, and is done only for explicitness.
        FlipAbstract(MCD_FLIP_PAXUSD_A).rely(MCD_CAT);

        // Allow End to yank auctions in PAXUSD-A Flipper
        FlipAbstract(MCD_FLIP_PAXUSD_A).rely(MCD_END);

        // Allow FlipperMom to access the PAXUSD-A Flipper
        FlipAbstract(MCD_FLIP_PAXUSD_A).rely(FLIPPER_MOM);

        // Consequently, deny PAXUSD-A Flipper
        FlipperMomAbstract(FLIPPER_MOM).deny(MCD_FLIP_PAXUSD_A);

        VatAbstract(MCD_VAT).file(ilkPAXUSDA,   "line"  , 5 * MILLION * RAD    ); // 5 MM debt ceiling
        VatAbstract(MCD_VAT).file(ilkPAXUSDA,   "dust"  , 100 * RAD            ); // 100 Dai dust
        CatAbstract(MCD_CAT).file(ilkPAXUSDA,   "dunk"  , 50 * THOUSAND * RAD  ); // 50,000 dunk
        CatAbstract(MCD_CAT).file(ilkPAXUSDA,   "chop"  , 113 * WAD / 100      ); // 13% liq. penalty
        JugAbstract(MCD_JUG).file(ilkPAXUSDA,   "duty"  , TWO_PCT_RATE         ); // 2% stability fee
        FlipAbstract(MCD_FLIP_PAXUSD_A).file(   "beg"   , 103 * WAD / 100      ); // 3% bid increase
        FlipAbstract(MCD_FLIP_PAXUSD_A).file(   "ttl"   , 6 hours              ); // 6 hours ttl
        FlipAbstract(MCD_FLIP_PAXUSD_A).file(   "tau"   , 6 hours              ); // 6 hours tau
        SpotAbstract(MCD_SPOT).file(ilkPAXUSDA, "mat"   , 120 * RAY / 100      ); // 120% coll. ratio
        SpotAbstract(MCD_SPOT).poke(ilkPAXUSDA);

        IlkRegistryAbstract(ILK_REGISTRY).add(MCD_JOIN_PAXUSD_A);
    }
}

contract DssSpell {
    DSPauseAbstract public pause =
        DSPauseAbstract(0xbE286431454714F511008713973d3B053A2d38f3);
    address         public action;
    bytes32         public tag;
    uint256         public eta;
    bytes           public sig;
    uint256         public expiration;
    bool            public done;

    // Provides a descriptive tag for bot consumption
    // This should be modified weekly to provide a summary of the actions
    // Hash: seth keccak -- "$(wget https://raw.githubusercontent.com/makerdao/community/d8496d07a5eae08f2d1886f6bf4de1a813b4584d/governance/votes/Executive%20vote%20-%20September%204%2C%202020.md -q -O - 2>/dev/null)"
    string constant public description =
        "2020-09-04 MakerDAO Executive Spell | Hash: 0x3c35701633399b48090f4c805686ebeeebcc86f6d05b354531f3bd0059ee48dd";

    constructor() public {
        sig = abi.encodeWithSignature("execute()");
        action = address(new SpellAction());
        bytes32 _tag;
        address _action = action;
        assembly { _tag := extcodehash(_action) }
        tag = _tag;
        expiration = now + 30 days;
    }

    modifier officeHours {

        // Available after 14:00 UTC (10:00 am EDT) 2020/09/08
        require(now >= 1599573600);

        uint day = (now / 1 days + 3) % 7;
        require(day < 5, "Can only be cast on a weekday");
        uint hour = now / 1 hours % 24;
        require(hour >= 14 && hour < 21, "Outside office hours");
        _;
    }

    function schedule() public {
        require(now <= expiration, "This contract has expired");
        require(eta == 0, "This spell has already been scheduled");
        eta = now + DSPauseAbstract(pause).delay();
        pause.plot(action, tag, sig, eta);
    }

    function cast() officeHours public {
        require(!done, "spell-already-cast");
        done = true;
        pause.exec(action, tag, sig, eta);
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":true,"inputs":[],"name":"action","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"cast","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"done","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"eta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"expiration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pause","outputs":[{"internalType":"contract DSPauseAbstract","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"schedule","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sig","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tag","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"}]

6080604052600080546001600160a01b03191673be286431454714f511008713973d3b053a2d38f317905534801561003657600080fd5b50604080516004808252602482019092526020810180516001600160e01b03167f614619540000000000000000000000000000000000000000000000000000000017815290516100879291906100e2565b5060405161009490610160565b604051809103906000f0801580156100b0573d6000803e3d6000fd5b50600180546001600160a01b0319166001600160a01b039283161790819055163f6002554262278d000160055561018a565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061012357805160ff1916838001178555610150565b82800160010185558215610150579182015b82811115610150578251825591602001919060010190610135565b5061015c92915061016d565b5090565b61362f80610a0a83390190565b61018791905b8082111561015c5760008155600101610173565b90565b610871806101996000396000f3fe608060405234801561001057600080fd5b506004361061008d5760003560e01c8062a7029b146100925780630a7a1c4d1461010f5780634665096d1461013357806351f910661461014d5780637284e416146101555780638456cb591461015d57806396d373e514610165578063ae8421e11461016f578063b0604a261461018b578063f7992d8514610193575b600080fd5b61009a61019b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100d45781810151838201526020016100bc565b50505050905090810190601f1680156101015780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610117610229565b604080516001600160a01b039092168252519081900360200190f35b61013b610238565b60408051918252519081900360200190f35b61013b61023e565b61009a610244565b610117610260565b61016d61026f565b005b61017761057e565b604080519115158252519081900360200190f35b61016d610587565b61013b6107a3565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156102215780601f106101f657610100808354040283529160200191610221565b820191906000526020600020905b81548152906001019060200180831161020457829003601f168201915b505050505081565b6001546001600160a01b031681565b60055481565b60025481565b6040518060a00160405280606e81526020016107cf606e913981565b6000546001600160a01b031681565b635f578e6042101561028057600080fd5b600762015180420460030106600581106102e1576040805162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c792062652063617374206f6e2061207765656b646179000000604482015290519081900360640190fd5b6018610e10420406600e81108015906102fa5750601581105b610342576040805162461bcd60e51b81526020600482015260146024820152734f757473696465206f666669636520686f75727360601b604482015290519081900360640190fd5b60065460ff161561038f576040805162461bcd60e51b81526020600482015260126024820152711cdc195b1b0b585b1c9958591e4b58d85cdd60721b604482015290519081900360640190fd5b6006805460ff1916600190811790915560005481546002805460035460405163168ccd6760e01b81526001600160a01b039485166004828101828152602484018690526064840185905260806044850190815282546000199b811615610100029b909b01909a169690960460848401819052969097169763168ccd67979196949591949192909160a4909101908590801561046b5780601f106104405761010080835404028352916020019161046b565b820191906000526020600020905b81548152906001019060200180831161044e57829003601f168201915b505095505050505050600060405180830381600087803b15801561048e57600080fd5b505af11580156104a2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156104cb57600080fd5b8101908080516040519392919084600160201b8211156104ea57600080fd5b9083019060208201858111156104ff57600080fd5b8251600160201b81118282018810171561051857600080fd5b82525081516020918201929091019080838360005b8381101561054557818101518382015260200161052d565b50505050905090810190601f1680156105725780820380516001836020036101000a031916815260200191505b50604052505050505050565b60065460ff1681565b6005544211156105da576040805162461bcd60e51b8152602060048201526019602482015278151a1a5cc818dbdb9d1c9858dd081a185cc8195e1c1a5c9959603a1b604482015290519081900360640190fd5b600354156106195760405162461bcd60e51b81526004018080602001828103825260258152602001806107aa6025913960400191505060405180910390fd5b6000809054906101000a90046001600160a01b03166001600160a01b0316636a42b8f86040518163ffffffff1660e01b815260040160206040518083038186803b15801561066657600080fd5b505afa15801561067a573d6000803e3d6000fd5b505050506040513d602081101561069057600080fd5b50514201600381905560005460018054600280546040516346d2fbbb60e01b81526001600160a01b03938416600482810182815260248401859052606484018a90526080604485019081528254600019998116156101000299909901909816959095046084840181905295909716976346d2fbbb9791969395919490939092909160a490910190859080156107665780601f1061073b57610100808354040283529160200191610766565b820191906000526020600020905b81548152906001019060200180831161074957829003601f168201915b505095505050505050600060405180830381600087803b15801561078957600080fd5b505af115801561079d573d6000803e3d6000fd5b50505050565b6003548156fe54686973207370656c6c2068617320616c7265616479206265656e207363686564756c6564323032302d30392d3034204d616b657244414f20457865637574697665205370656c6c207c20486173683a20307833633335373031363333333939623438303930663463383035363836656265656562636338366636643035623335343533316633626430303539656534386464a265627a7a72315820e8e051e0f0eb700204c8d38f271cce7cf6c2df79f3233eb9cbec16ae6debc5d764736f6c634300050c0032608060405234801561001057600080fd5b5061360f806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80636146195414610030575b600080fd5b61003861003a565b005b60408051630a6ba04560e21b8152634c696e6560e01b60048201526ffeea39211e8d2d7c8579ca662c36894f60331b6024820152905160008051602061351b833981519152916329ae811491604480830192600092919082900301818387803b1580156100a657600080fd5b505af11580156100ba573d6000803e3d6000fd5b505060408051630d05943f60e11b815265574254432d4160d01b6004820152636c696e6560e01b60248201526f0502ed53dc07790272afdb61a195091360361b6044820152905160008051602061351b8339815191529350631a0b287e9250606480830192600092919082900301818387803b15801561013957600080fd5b505af115801561014d573d6000803e3d6000fd5b50506040805163089c54b560e31b8152644241542d4160d81b6004820152905160008051602061357b83398151915293506344e2a5a8925060248083019260209291908290030181600087803b1580156101a657600080fd5b505af11580156101ba573d6000803e3d6000fd5b505050506040513d60208110156101d057600080fd5b505060408051630d05943f60e11b8152644241542d4160d81b6004820152636475747960e01b60248201526b033b2e3ca88761c99baf15326044820152905160008051602061357b83398151915291631a0b287e91606480830192600092919082900301818387803b15801561024557600080fd5b505af1158015610259573d6000803e3d6000fd5b50506040805163089c54b560e31b815265555344432d4160d01b6004820152905160008051602061357b83398151915293506344e2a5a8925060248083019260209291908290030181600087803b1580156102b357600080fd5b505af11580156102c7573d6000803e3d6000fd5b505050506040513d60208110156102dd57600080fd5b505060408051630d05943f60e11b815265555344432d4160d01b6004820152636475747960e01b60248201526b033b2e3ca88761c99baf15326044820152905160008051602061357b83398151915291631a0b287e91606480830192600092919082900301818387803b15801561035357600080fd5b505af1158015610367573d6000803e3d6000fd5b50506040805163089c54b560e31b8152652aa9a22196a160d11b6004820152905160008051602061357b83398151915293506344e2a5a8925060248083019260209291908290030181600087803b1580156103c157600080fd5b505af11580156103d5573d6000803e3d6000fd5b505050506040513d60208110156103eb57600080fd5b505060408051630d05943f60e11b8152652aa9a22196a160d11b6004820152636475747960e01b60248201526b033b2e3d4c56522248f4c8e36044820152905160008051602061357b83398151915291631a0b287e91606480830192600092919082900301818387803b15801561046157600080fd5b505af1158015610475573d6000803e3d6000fd5b50506040805163089c54b560e31b815265574254432d4160d01b6004820152905160008051602061357b83398151915293506344e2a5a8925060248083019260209291908290030181600087803b1580156104cf57600080fd5b505af11580156104e3573d6000803e3d6000fd5b505050506040513d60208110156104f957600080fd5b505060408051630d05943f60e11b815265574254432d4160d01b6004820152636475747960e01b60248201526b033b2e3ca88761c99baf15326044820152905160008051602061357b83398151915291631a0b287e91606480830192600092919082900301818387803b15801561056f57600080fd5b505af1158015610583573d6000803e3d6000fd5b50506040805163089c54b560e31b8152644b4e432d4160d81b6004820152905160008051602061357b83398151915293506344e2a5a8925060248083019260209291908290030181600087803b1580156105dc57600080fd5b505af11580156105f0573d6000803e3d6000fd5b505050506040513d602081101561060657600080fd5b505060408051630d05943f60e11b8152644b4e432d4160d81b6004820152636475747960e01b60248201526b033b2e3ca88761c99baf15326044820152905160008051602061357b83398151915291631a0b287e91606480830192600092919082900301818387803b15801561067b57600080fd5b505af115801561068f573d6000803e3d6000fd5b50506040805163089c54b560e31b8152645a52582d4160d81b6004820152905160008051602061357b83398151915293506344e2a5a8925060248083019260209291908290030181600087803b1580156106e857600080fd5b505af11580156106fc573d6000803e3d6000fd5b505050506040513d602081101561071257600080fd5b505060408051630d05943f60e11b8152645a52582d4160d81b6004820152636475747960e01b60248201526b033b2e3ca88761c99baf15326044820152905160008051602061357b83398151915291631a0b287e91606480830192600092919082900301818387803b15801561078757600080fd5b505af115801561079b573d6000803e3d6000fd5b50506040805163089c54b560e31b8152654d414e412d4160d01b6004820152905160008051602061357b83398151915293506344e2a5a8925060248083019260209291908290030181600087803b1580156107f557600080fd5b505af1158015610809573d6000803e3d6000fd5b505050506040513d602081101561081f57600080fd5b505060408051630d05943f60e11b8152654d414e412d4160d01b6004820152636475747960e01b60248201526b033b2e3cc9c1bf225873dc826044820152905160008051602061357b83398151915291631a0b287e91606480830192600092919082900301818387803b15801561089557600080fd5b505af11580156108a9573d6000803e3d6000fd5b50506040805160018082528183019092526060935091506020808301908038833901905050905073130431b4560cd1d74a990ae86c337a33171ff3c6816000815181106108f257fe5b6001600160a01b0390921660209283029190910190910152604080516001808252818301909252606091816020016020820280388339019050509050733cb645a8f10fb7b0721eabae958f77a878441cb98160008151811061095057fe5b6001600160a01b03909216602092830291909101820152604051634a18c08360e11b8152600481018281528451602483015284517318b4633d6e39870f398597f3c1ba8c4a41294966936394318106938793928392604490920191858101910280838360005b838110156109ce5781810151838201526020016109b6565b5050505090500192505050600060405180830381600087803b1580156109f357600080fd5b505af1158015610a07573d6000803e3d6000fd5b5050604051634a18c08360e11b815260206004820181815286516024840152865173e0f30cb149faadc7247e953746be9bbbb6b5751f95506394318106945087939192839260440191818601910280838360005b83811015610a73578181015183820152602001610a5b565b5050505090500192505050600060405180830381600087803b158015610a9857600080fd5b505af1158015610aac573d6000803e3d6000fd5b5050604051634a18c08360e11b81526020600482018181528651602484015286517381a679f98b63b3ddf2f17cb5619f4d6775b3c5ed95506394318106945087939192839260440191818601910280838360005b83811015610b18578181015183820152602001610b00565b5050505090500192505050600060405180830381600087803b158015610b3d57600080fd5b505af1158015610b51573d6000803e3d6000fd5b5050604051634a18c08360e11b81526020600482018181528651602484015286517364de91f5a373cd4c28de3600cb34c7c6ce410c8595506394318106945087939192839260440191818601910280838360005b83811015610bbd578181015183820152602001610ba5565b5050505090500192505050600060405180830381600087803b158015610be257600080fd5b505af1158015610bf6573d6000803e3d6000fd5b5050604051634a18c08360e11b81526020600482018181528651602484015286517383076a2f42dc1925537165045c9fde9a4b71ad9795506394318106945087939192839260440191818601910280838360005b83811015610c62578181015183820152602001610c4a565b5050505090500192505050600060405180830381600087803b158015610c8757600080fd5b505af1158015610c9b573d6000803e3d6000fd5b5050604051634a18c08360e11b815260206004820181815286516024840152865173956ecd6a9a9a0d84e8eb4e6baac09329e202e55e95506394318106945087939192839260440191818601910280838360005b83811015610d07578181015183820152602001610cef565b5050505090500192505050600060405180830381600087803b158015610d2c57600080fd5b505af1158015610d40573d6000803e3d6000fd5b5050604051634a18c08360e11b81526020600482018181528651602484015286517356d4bbf358d7790579b55ea6af3f605bca2c0c3a95506394318106945087939192839260440191818601910280838360005b83811015610dac578181015183820152602001610d94565b5050505090500192505050600060405180830381600087803b158015610dd157600080fd5b505af1158015610de5573d6000803e3d6000fd5b5050604051634a18c08360e11b815260206004820181815286516024840152865173681c4f8f69cf68852bad092086ffeab31f5b812c95506394318106945087939192839260440191818601910280838360005b83811015610e51578181015183820152602001610e39565b5050505090500192505050600060405180830381600087803b158015610e7657600080fd5b505af1158015610e8a573d6000803e3d6000fd5b5050604051634a18c08360e11b81526020600482018181528551602484015285517318b4633d6e39870f398597f3c1ba8c4a4129496695506394318106945086939192839260440191818601910280838360005b83811015610ef6578181015183820152602001610ede565b5050505090500192505050600060405180830381600087803b158015610f1b57600080fd5b505af1158015610f2f573d6000803e3d6000fd5b5050604051634a18c08360e11b815260206004820181815285516024840152855173e0f30cb149faadc7247e953746be9bbbb6b5751f95506394318106945086939192839260440191818601910280838360005b83811015610f9b578181015183820152602001610f83565b5050505090500192505050600060405180830381600087803b158015610fc057600080fd5b505af1158015610fd4573d6000803e3d6000fd5b5050604051634a18c08360e11b81526020600482018181528551602484015285517381a679f98b63b3ddf2f17cb5619f4d6775b3c5ed95506394318106945086939192839260440191818601910280838360005b83811015611040578181015183820152602001611028565b5050505090500192505050600060405180830381600087803b15801561106557600080fd5b505af1158015611079573d6000803e3d6000fd5b5050604051634a18c08360e11b81526020600482018181528551602484015285517364de91f5a373cd4c28de3600cb34c7c6ce410c8595506394318106945086939192839260440191818601910280838360005b838110156110e55781810151838201526020016110cd565b5050505090500192505050600060405180830381600087803b15801561110a57600080fd5b505af115801561111e573d6000803e3d6000fd5b5050604051634a18c08360e11b81526020600482018181528551602484015285517383076a2f42dc1925537165045c9fde9a4b71ad9795506394318106945086939192839260440191818601910280838360005b8381101561118a578181015183820152602001611172565b5050505090500192505050600060405180830381600087803b1580156111af57600080fd5b505af11580156111c3573d6000803e3d6000fd5b5050604051634a18c08360e11b815260206004820181815285516024840152855173956ecd6a9a9a0d84e8eb4e6baac09329e202e55e95506394318106945086939192839260440191818601910280838360005b8381101561122f578181015183820152602001611217565b5050505090500192505050600060405180830381600087803b15801561125457600080fd5b505af1158015611268573d6000803e3d6000fd5b5050604051634a18c08360e11b81526020600482018181528551602484015285517356d4bbf358d7790579b55ea6af3f605bca2c0c3a95506394318106945086939192839260440191818601910280838360005b838110156112d45781810151838201526020016112bc565b5050505090500192505050600060405180830381600087803b1580156112f957600080fd5b505af115801561130d573d6000803e3d6000fd5b5050604051634a18c08360e11b815260206004820181815285516024840152855173681c4f8f69cf68852bad092086ffeab31f5b812c95506394318106945086939192839260440191818601910280838360005b83811015611379578181015183820152602001611361565b5050505090500192505050600060405180830381600087803b15801561139e57600080fd5b505af11580156113b2573d6000803e3d6000fd5b50505050600065555344542d4160d01b905060008051602061351b8339815191526001600160a01b0316730ac6a1d74e84c2df9063bddc31699ff2a2bb22a26001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561142957600080fd5b505afa15801561143d573d6000803e3d6000fd5b505050506040513d602081101561145357600080fd5b50516001600160a01b0316146114a5576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5aecc2e85adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b80730ac6a1d74e84c2df9063bddc31699ff2a2bb22a26001600160a01b031663c5ce281e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114f357600080fd5b505afa158015611507573d6000803e3d6000fd5b505050506040513d602081101561151d57600080fd5b505114611566576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5ad2d8d65adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b73dac17f958d2ee523a2206206994597c13d831ec76001600160a01b0316730ac6a1d74e84c2df9063bddc31699ff2a2bb22a26001600160a01b0316637bd2bea76040518163ffffffff1660e01b815260040160206040518083038186803b1580156115d157600080fd5b505afa1580156115e5573d6000803e3d6000fd5b505050506040513d60208110156115fb57600080fd5b50516001600160a01b03161461164d576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5acecada5adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b73dac17f958d2ee523a2206206994597c13d831ec76001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561169a57600080fd5b505afa1580156116ae573d6000803e3d6000fd5b505050506040513d60208110156116c457600080fd5b5051604080516359de7d4160e11b81529051730ac6a1d74e84c2df9063bddc31699ff2a2bb22a29163b3bcfa82916004808301926020929190829003018186803b15801561171157600080fd5b505afa158015611725573d6000803e3d6000fd5b505050506040513d602081101561173b57600080fd5b505114611784576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5ac8cac65adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b60008051602061351b8339815191526001600160a01b031660008051602061353b8339815191526001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156117e357600080fd5b505afa1580156117f7573d6000803e3d6000fd5b505050506040513d602081101561180d57600080fd5b50516001600160a01b03161461185f576040805162461bcd60e51b81526020600482015260126024820152710ccd8d2e05aecc2e85adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b8060008051602061353b8339815191526001600160a01b031663c5ce281e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156118a757600080fd5b505afa1580156118bb573d6000803e3d6000fd5b505050506040513d60208110156118d157600080fd5b50511461191a576040805162461bcd60e51b81526020600482015260126024820152710ccd8d2e05ad2d8d65adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b6040805163ebecb39d60e01b8152600481018390526207069760ec1b60248201526000805160206134fb8339815191526044820152905160008051602061359b8339815191529163ebecb39d91606480830192600092919082900301818387803b15801561198757600080fd5b505af115801561199b573d6000803e3d6000fd5b50506040805163ebecb39d60e01b815260048101859052630666c69760e41b602482015260008051602061353b8339815191526044820152905160008051602061355b833981519152935063ebecb39d9250606480830192600092919082900301818387803b158015611a0d57600080fd5b505af1158015611a21573d6000803e3d6000fd5b5050505060008051602061351b8339815191526001600160a01b0316633b663195826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611a7957600080fd5b505af1158015611a8d573d6000803e3d6000fd5b5050505060008051602061357b8339815191526001600160a01b0316633b663195826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611ae557600080fd5b505af1158015611af9573d6000803e3d6000fd5b5050604080516332fd71af60e11b8152730ac6a1d74e84c2df9063bddc31699ff2a2bb22a26004820152905160008051602061351b83398151915293506365fae35e9250602480830192600092919082900301818387803b158015611b5d57600080fd5b505af1158015611b71573d6000803e3d6000fd5b5050604080516332fd71af60e11b815260008051602061353b8339815191526004820152905160008051602061355b83398151915293506365fae35e9250602480830192600092919082900301818387803b158015611bcf57600080fd5b505af1158015611be3573d6000803e3d6000fd5b5050604080516332fd71af60e11b815260008051602061355b8339815191526004820152905160008051602061353b83398151915293506365fae35e9250602480830192600092919082900301818387803b158015611c4157600080fd5b505af1158015611c55573d6000803e3d6000fd5b5050604080516332fd71af60e11b815273ab14d3ce3f733cacb76ec2abe7d2fcb00c99f3d56004820152905160008051602061353b83398151915293506365fae35e9250602480830192600092919082900301818387803b158015611cb957600080fd5b505af1158015611ccd573d6000803e3d6000fd5b5050604080516332fd71af60e11b815273c4be7f74ee3743bded8e0fa218ee5cf06397f4726004820152905160008051602061353b83398151915293506365fae35e9250602480830192600092919082900301818387803b158015611d3157600080fd5b505af1158015611d45573d6000803e3d6000fd5b5050604080516332fd71af60e11b81527376416a4d5190d071bfed309861527431304aa14f600482015290516000805160206134fb83398151915293506365fae35e9250602480830192600092919082900301818387803b158015611da957600080fd5b505af1158015611dbd573d6000803e3d6000fd5b505050506000805160206134fb8339815191526001600160a01b0316632e7dc6af6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e0857600080fd5b505afa158015611e1c573d6000803e3d6000fd5b505050506040513d6020811015611e3257600080fd5b505160408051633ca70a7160e21b81526000805160206134fb833981519152600482015290516001600160a01b039092169163f29c29c49160248082019260009290919082900301818387803b158015611e8b57600080fd5b505af1158015611e9f573d6000803e3d6000fd5b505060408051633ca70a7160e21b815260008051602061359b833981519152600482015290516000805160206134fb833981519152935063f29c29c49250602480830192600092919082900301818387803b158015611efd57600080fd5b505af1158015611f11573d6000803e3d6000fd5b505060408051633ca70a7160e21b815273ab14d3ce3f733cacb76ec2abe7d2fcb00c99f3d5600482015290516000805160206134fb833981519152935063f29c29c49250602480830192600092919082900301818387803b158015611f7557600080fd5b505af1158015611f89573d6000803e3d6000fd5b5050604080516364c66fc360e11b8152600481018590526000805160206134fb833981519152602482015290517376416a4d5190d071bfed309861527431304aa14f935063c98cdf869250604480830192600092919082900301818387803b158015611ff457600080fd5b505af1158015612008573d6000803e3d6000fd5b505060408051630d05943f60e11b815260048101859052636c696e6560e01b60248201526f01aba4714957d300d0e549208b31adb160341b6044820152905160008051602061351b8339815191529350631a0b287e9250606480830192600092919082900301818387803b15801561207f57600080fd5b505af1158015612093573d6000803e3d6000fd5b505060408051630d05943f60e11b81526004810185905263191d5cdd60e21b60248201526d23084f676940b7915149bd08b30d602f1b6044820152905160008051602061351b8339815191529350631a0b287e9250606482810192600092919082900301818387803b15801561210857600080fd5b505af115801561211c573d6000803e3d6000fd5b505060408051630d05943f60e11b8152600481018590526364756e6b60e01b60248201526e111b0ec57e6499a1f4b1014d3f6d5960311b6044820152905160008051602061355b8339815191529350631a0b287e9250606480830192600092919082900301818387803b15801561219257600080fd5b505af11580156121a6573d6000803e3d6000fd5b505060408051630d05943f60e11b81526004810185905263063686f760e41b6024820152670fae9103543100006044820152905160008051602061355b8339815191529350631a0b287e9250606482810192600092919082900301818387803b15801561221257600080fd5b505af1158015612226573d6000803e3d6000fd5b505060408051630d05943f60e11b815260048101859052636475747960e01b60248201526b033b2e3cb974d5031f73f7226044820152905160008051602061357b8339815191529350631a0b287e9250606480830192600092919082900301818387803b15801561229657600080fd5b505af11580156122aa573d6000803e3d6000fd5b505060408051630a6ba04560e21b81526262656760e81b6004820152670e4b4b8af6a700006024820152905160008051602061353b83398151915293506329ae81149250604480830192600092919082900301818387803b15801561230e57600080fd5b505af1158015612322573d6000803e3d6000fd5b505060408051630a6ba04560e21b8152621d1d1b60ea1b60048201526154606024820152905160008051602061353b83398151915293506329ae81149250604480830192600092919082900301818387803b15801561238057600080fd5b505af1158015612394573d6000803e3d6000fd5b505060408051630a6ba04560e21b81526274617560e81b60048201526154606024820152905160008051602061353b83398151915293506329ae81149250604480830192600092919082900301818387803b1580156123f257600080fd5b505af1158015612406573d6000803e3d6000fd5b505060408051630d05943f60e11b815260048101859052621b585d60ea1b60248201526b04d8c55aefb8c05b5c0000006044820152905160008051602061359b8339815191529350631a0b287e9250606482810192600092919082900301818387803b15801561247557600080fd5b505af1158015612489573d6000803e3d6000fd5b5050505060008051602061359b8339815191526001600160a01b0316631504460f826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156124e157600080fd5b505af11580156124f5573d6000803e3d6000fd5b505060408051630a3b0a4f60e01b8152730ac6a1d74e84c2df9063bddc31699ff2a2bb22a260048201529051738b4ce5dcbb01e0e1f0521cd8dcfb31b308e52c249350630a3b0a4f9250602480830192600092919082900301818387803b15801561255f57600080fd5b505af1158015612573573d6000803e3d6000fd5b505050506000675041585553442d4160c01b905060008051602061351b8339815191526001600160a01b0316737e62b7e279dfc78deb656e34d6a435cc08a446666001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156125ec57600080fd5b505afa158015612600573d6000803e3d6000fd5b505050506040513d602081101561261657600080fd5b50516001600160a01b031614612668576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5aecc2e85adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b80737e62b7e279dfc78deb656e34d6a435cc08a446666001600160a01b031663c5ce281e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156126b657600080fd5b505afa1580156126ca573d6000803e3d6000fd5b505050506040513d60208110156126e057600080fd5b505114612729576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5ad2d8d65adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b738e870d67f660d95d5be530380d0ec0bd388289e16001600160a01b0316737e62b7e279dfc78deb656e34d6a435cc08a446666001600160a01b0316637bd2bea76040518163ffffffff1660e01b815260040160206040518083038186803b15801561279457600080fd5b505afa1580156127a8573d6000803e3d6000fd5b505050506040513d60208110156127be57600080fd5b50516001600160a01b031614612810576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5acecada5adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b738e870d67f660d95d5be530380d0ec0bd388289e16001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561285d57600080fd5b505afa158015612871573d6000803e3d6000fd5b505050506040513d602081101561288757600080fd5b5051604080516359de7d4160e11b81529051737e62b7e279dfc78deb656e34d6a435cc08a446669163b3bcfa82916004808301926020929190829003018186803b1580156128d457600080fd5b505afa1580156128e8573d6000803e3d6000fd5b505050506040513d60208110156128fe57600080fd5b505114612947576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5ac8cac65adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b60008051602061351b8339815191526001600160a01b03166000805160206135bb8339815191526001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156129a657600080fd5b505afa1580156129ba573d6000803e3d6000fd5b505050506040513d60208110156129d057600080fd5b50516001600160a01b031614612a22576040805162461bcd60e51b81526020600482015260126024820152710ccd8d2e05aecc2e85adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b806000805160206135bb8339815191526001600160a01b031663c5ce281e6040518163ffffffff1660e01b815260040160206040518083038186803b158015612a6a57600080fd5b505afa158015612a7e573d6000803e3d6000fd5b505050506040513d6020811015612a9457600080fd5b505114612add576040805162461bcd60e51b81526020600482015260126024820152710ccd8d2e05ad2d8d65adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b6040805163ebecb39d60e01b8152600481018390526207069760ec1b602482015273043b963e1b2214ec90046167ea29c2c8bdd7c0ec6044820152905160008051602061359b8339815191529163ebecb39d91606480830192600092919082900301818387803b158015612b5057600080fd5b505af1158015612b64573d6000803e3d6000fd5b50506040805163ebecb39d60e01b815260048101859052630666c69760e41b60248201526000805160206135bb8339815191526044820152905160008051602061355b833981519152935063ebecb39d9250606480830192600092919082900301818387803b158015612bd657600080fd5b505af1158015612bea573d6000803e3d6000fd5b5050505060008051602061351b8339815191526001600160a01b0316633b663195826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612c4257600080fd5b505af1158015612c56573d6000803e3d6000fd5b5050505060008051602061357b8339815191526001600160a01b0316633b663195826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612cae57600080fd5b505af1158015612cc2573d6000803e3d6000fd5b5050604080516332fd71af60e11b8152737e62b7e279dfc78deb656e34d6a435cc08a446666004820152905160008051602061351b83398151915293506365fae35e9250602480830192600092919082900301818387803b158015612d2657600080fd5b505af1158015612d3a573d6000803e3d6000fd5b5050604080516332fd71af60e11b81526000805160206135bb8339815191526004820152905160008051602061355b83398151915293506365fae35e9250602480830192600092919082900301818387803b158015612d9857600080fd5b505af1158015612dac573d6000803e3d6000fd5b5050604080516332fd71af60e11b815260008051602061355b833981519152600482015290516000805160206135bb83398151915293506365fae35e9250602480830192600092919082900301818387803b158015612e0a57600080fd5b505af1158015612e1e573d6000803e3d6000fd5b5050604080516332fd71af60e11b815273ab14d3ce3f733cacb76ec2abe7d2fcb00c99f3d5600482015290516000805160206135bb83398151915293506365fae35e9250602480830192600092919082900301818387803b158015612e8257600080fd5b505af1158015612e96573d6000803e3d6000fd5b5050604080516332fd71af60e11b815273c4be7f74ee3743bded8e0fa218ee5cf06397f472600482015290516000805160206135bb83398151915293506365fae35e9250602480830192600092919082900301818387803b158015612efa57600080fd5b505af1158015612f0e573d6000803e3d6000fd5b505060408051639c52a7f160e01b81526000805160206135bb8339815191526004820152905173c4be7f74ee3743bded8e0fa218ee5cf06397f4729350639c52a7f19250602480830192600092919082900301818387803b158015612f7257600080fd5b505af1158015612f86573d6000803e3d6000fd5b505060408051630d05943f60e11b815260048101859052636c696e6560e01b60248201526f01aba4714957d300d0e549208b31adb160331b6044820152905160008051602061351b8339815191529350631a0b287e9250606480830192600092919082900301818387803b158015612ffd57600080fd5b505af1158015613011573d6000803e3d6000fd5b505060408051630d05943f60e11b81526004810185905263191d5cdd60e21b60248201526d23084f676940b7915149bd08b30d602f1b6044820152905160008051602061351b8339815191529350631a0b287e9250606482810192600092919082900301818387803b15801561308657600080fd5b505af115801561309a573d6000803e3d6000fd5b505060408051630d05943f60e11b8152600481018590526364756e6b60e01b60248201526e111b0ec57e6499a1f4b1014d3f6d5960311b6044820152905160008051602061355b8339815191529350631a0b287e9250606480830192600092919082900301818387803b15801561311057600080fd5b505af1158015613124573d6000803e3d6000fd5b505060408051630d05943f60e11b81526004810185905263063686f760e41b6024820152670fae9103543100006044820152905160008051602061355b8339815191529350631a0b287e9250606482810192600092919082900301818387803b15801561319057600080fd5b505af11580156131a4573d6000803e3d6000fd5b505060408051630d05943f60e11b815260048101859052636475747960e01b60248201526b033b2e3ca88761c99baf15326044820152905160008051602061357b8339815191529350631a0b287e9250606480830192600092919082900301818387803b15801561321457600080fd5b505af1158015613228573d6000803e3d6000fd5b505060408051630a6ba04560e21b81526262656760e81b6004820152670e4b4b8af6a70000602482015290516000805160206135bb83398151915293506329ae81149250604480830192600092919082900301818387803b15801561328c57600080fd5b505af11580156132a0573d6000803e3d6000fd5b505060408051630a6ba04560e21b8152621d1d1b60ea1b6004820152615460602482015290516000805160206135bb83398151915293506329ae81149250604480830192600092919082900301818387803b1580156132fe57600080fd5b505af1158015613312573d6000803e3d6000fd5b505060408051630a6ba04560e21b81526274617560e81b6004820152615460602482015290516000805160206135bb83398151915293506329ae81149250604480830192600092919082900301818387803b15801561337057600080fd5b505af1158015613384573d6000803e3d6000fd5b505060408051630d05943f60e11b815260048101859052621b585d60ea1b6024820152673e09de2596099e2b601c1b6044820152905160008051602061359b8339815191529350631a0b287e9250606482810192600092919082900301818387803b1580156133f257600080fd5b505af1158015613406573d6000803e3d6000fd5b5050505060008051602061359b8339815191526001600160a01b0316631504460f826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561345e57600080fd5b505af1158015613472573d6000803e3d6000fd5b505060408051630a3b0a4f60e01b8152737e62b7e279dfc78deb656e34d6a435cc08a4466660048201529051738b4ce5dcbb01e0e1f0521cd8dcfb31b308e52c249350630a3b0a4f9250602480830192600092919082900301818387803b1580156134dc57600080fd5b505af11580156134f0573d6000803e3d6000fd5b505050505050505056fe0000000000000000000000007a5918670b0c390ad25f7bee908c1acc2d314a3c00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b000000000000000000000000667f41d0fdce1945ee0f56a79dd6c142e37fcc26000000000000000000000000a5679c04fc3d9d8b0aab1f0ab83555b301ca70ea00000000000000000000000019c0976f590d67707e62397c87829d896dc0f1f100000000000000000000000065c79fcb50ca1594b025960e539ed7a9a6d434a300000000000000000000000052d5d1c05cc79fc24a629cb24cb06c5be5d766e7a265627a7a7231582079ec03078c12b4df4a8d1df1826d9531bb9facedd18654d67c299dcf51044c9264736f6c634300050c0032

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061008d5760003560e01c8062a7029b146100925780630a7a1c4d1461010f5780634665096d1461013357806351f910661461014d5780637284e416146101555780638456cb591461015d57806396d373e514610165578063ae8421e11461016f578063b0604a261461018b578063f7992d8514610193575b600080fd5b61009a61019b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100d45781810151838201526020016100bc565b50505050905090810190601f1680156101015780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610117610229565b604080516001600160a01b039092168252519081900360200190f35b61013b610238565b60408051918252519081900360200190f35b61013b61023e565b61009a610244565b610117610260565b61016d61026f565b005b61017761057e565b604080519115158252519081900360200190f35b61016d610587565b61013b6107a3565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156102215780601f106101f657610100808354040283529160200191610221565b820191906000526020600020905b81548152906001019060200180831161020457829003601f168201915b505050505081565b6001546001600160a01b031681565b60055481565b60025481565b6040518060a00160405280606e81526020016107cf606e913981565b6000546001600160a01b031681565b635f578e6042101561028057600080fd5b600762015180420460030106600581106102e1576040805162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c792062652063617374206f6e2061207765656b646179000000604482015290519081900360640190fd5b6018610e10420406600e81108015906102fa5750601581105b610342576040805162461bcd60e51b81526020600482015260146024820152734f757473696465206f666669636520686f75727360601b604482015290519081900360640190fd5b60065460ff161561038f576040805162461bcd60e51b81526020600482015260126024820152711cdc195b1b0b585b1c9958591e4b58d85cdd60721b604482015290519081900360640190fd5b6006805460ff1916600190811790915560005481546002805460035460405163168ccd6760e01b81526001600160a01b039485166004828101828152602484018690526064840185905260806044850190815282546000199b811615610100029b909b01909a169690960460848401819052969097169763168ccd67979196949591949192909160a4909101908590801561046b5780601f106104405761010080835404028352916020019161046b565b820191906000526020600020905b81548152906001019060200180831161044e57829003601f168201915b505095505050505050600060405180830381600087803b15801561048e57600080fd5b505af11580156104a2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156104cb57600080fd5b8101908080516040519392919084600160201b8211156104ea57600080fd5b9083019060208201858111156104ff57600080fd5b8251600160201b81118282018810171561051857600080fd5b82525081516020918201929091019080838360005b8381101561054557818101518382015260200161052d565b50505050905090810190601f1680156105725780820380516001836020036101000a031916815260200191505b50604052505050505050565b60065460ff1681565b6005544211156105da576040805162461bcd60e51b8152602060048201526019602482015278151a1a5cc818dbdb9d1c9858dd081a185cc8195e1c1a5c9959603a1b604482015290519081900360640190fd5b600354156106195760405162461bcd60e51b81526004018080602001828103825260258152602001806107aa6025913960400191505060405180910390fd5b6000809054906101000a90046001600160a01b03166001600160a01b0316636a42b8f86040518163ffffffff1660e01b815260040160206040518083038186803b15801561066657600080fd5b505afa15801561067a573d6000803e3d6000fd5b505050506040513d602081101561069057600080fd5b50514201600381905560005460018054600280546040516346d2fbbb60e01b81526001600160a01b03938416600482810182815260248401859052606484018a90526080604485019081528254600019998116156101000299909901909816959095046084840181905295909716976346d2fbbb9791969395919490939092909160a490910190859080156107665780601f1061073b57610100808354040283529160200191610766565b820191906000526020600020905b81548152906001019060200180831161074957829003601f168201915b505095505050505050600060405180830381600087803b15801561078957600080fd5b505af115801561079d573d6000803e3d6000fd5b50505050565b6003548156fe54686973207370656c6c2068617320616c7265616479206265656e207363686564756c6564323032302d30392d3034204d616b657244414f20457865637574697665205370656c6c207c20486173683a20307833633335373031363333333939623438303930663463383035363836656265656562636338366636643035623335343533316633626430303539656534386464a265627a7a72315820e8e051e0f0eb700204c8d38f271cce7cf6c2df79f3233eb9cbec16ae6debc5d764736f6c634300050c0032

Deployed Bytecode Sourcemap

25631:1962:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25631:1962:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25864:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;25864:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25762:29;;;:::i;:::-;;;;-1:-1:-1;;;;;25762:29:0;;;;;;;;;;;;;;25897:33;;;:::i;:::-;;;;;;;;;;;;;;;;25798:26;;;:::i;26323:158::-;;;:::i;25656:99::-;;;:::i;27434:156::-;;;:::i;:::-;;25937:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;27159:267;;;:::i;25831:26::-;;;:::i;25864:::-;;;;;;;;;;;;;;;-1:-1:-1;;25864:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25762:29::-;;;-1:-1:-1;;;;;25762:29:0;;:::o;25897:33::-;;;;:::o;25798:26::-;;;;:::o;26323:158::-;;;;;;;;;;;;;;;;;;;:::o;25656:99::-;;;-1:-1:-1;;;;;25656:99:0;;:::o;27434:156::-;26906:10;26899:3;:17;;26891:26;;;;;;26962:1;26948:6;26942:3;:12;26957:1;26942:16;26941:22;26988:1;26982:7;;26974:49;;;;;-1:-1:-1;;;26974:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;27062:2;27052:7;27046:3;:13;:18;27091:2;27083:10;;;;;:23;;;27104:2;27097:4;:9;27083:23;27075:56;;;;;-1:-1:-1;;;27075:56:0;;;;;;;;;;;;-1:-1:-1;;;27075:56:0;;;;;;;;;;;;;;;27489:4;;;;27488:5;27480:36;;;;;-1:-1:-1;;;27480:36:0;;;;;;;;;;;;-1:-1:-1;;;27480:36:0;;;;;;;;;;;;;;;27527:4;:11;;-1:-1:-1;;27527:11:0;27534:4;27527:11;;;;;;:4;27549:5;27560:6;;27568:3;;;27578;;27549:33;;-1:-1:-1;;;27549:33:0;;-1:-1:-1;;;;;27560:6:0;;;27573:3;27549:33;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;27549:33:0;;;;27527:11;27549:33;;;;;;;;;;;;;;;;;;:5;;;;;:10;;27560:6;;27568:3;;27573;;27549:33;;;;;;;;;27573:3;;27549:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27549:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27549:33:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;27549:33:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;27549:33:0;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;27549:33:0;;420:4:-1;411:14;;;;27549:33:0;;;;;411:14:-1;27549:33:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;27549:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27434:156;;:::o;25937:27::-;;;;;;:::o;27159:267::-;27212:10;;27205:3;:17;;27197:55;;;;;-1:-1:-1;;;27197:55:0;;;;;;;;;;;;-1:-1:-1;;;27197:55:0;;;;;;;;;;;;;;;27271:3;;:8;27263:58;;;;-1:-1:-1;;;27263:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27360:5;;;;;;;;;-1:-1:-1;;;;;27360:5:0;-1:-1:-1;;;;;27344:28:0;;:30;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27344:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27344:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27344:30:0;27338:3;:36;27332:3;:42;;;27385:5;;;27396:6;;27404:3;;;27385:33;;-1:-1:-1;;;27385:33:0;;-1:-1:-1;;;;;27396:6:0;;;27409:3;27385:33;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;27385:33:0;;;;:5;:33;;;;;;;;;;;;;;;;;;:5;;;;;:10;;27396:6;;27404:3;;27409;;27338:36;;27385:33;;;;;;;;;27409:3;;27385:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27385:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27385:33:0;;;;27159:267::o;25831:26::-;;;;:::o

Swarm Source

bzzr://79ec03078c12b4df4a8d1df1826d9531bb9facedd18654d67c299dcf51044c92

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ 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.