ETH Price: $3,404.67 (+6.00%)

Contract

0xaB14d3CE3F733CACB76eC2AbE7d2fcb00c99F3d5
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

1 Internal Transaction found.

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block
From
To
89281692019-11-13 19:20:111890 days ago1573672811  Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
End

Compiler Version
v0.5.12+commit.7709ece9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-11-14
*/

// hevm: flattened sources of /nix/store/8xb41r4qd0cjb63wcrxf1qmfg88p0961-dss-6fd7de0/src/end.sol
pragma solidity =0.5.12;

////// /nix/store/8xb41r4qd0cjb63wcrxf1qmfg88p0961-dss-6fd7de0/src/lib.sol
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU 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 General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

/* pragma solidity 0.5.12; */

contract LibNote {
    event LogNote(
        bytes4   indexed  sig,
        address  indexed  usr,
        bytes32  indexed  arg1,
        bytes32  indexed  arg2,
        bytes             data
    ) anonymous;

    modifier note {
        _;
        assembly {
            // log an 'anonymous' event with a constant 6 words of calldata
            // and four indexed topics: selector, caller, arg1 and arg2
            let mark := msize                         // end of memory ensures zero
            mstore(0x40, add(mark, 288))              // update free memory pointer
            mstore(mark, 0x20)                        // bytes type data offset
            mstore(add(mark, 0x20), 224)              // bytes size (padded)
            calldatacopy(add(mark, 0x40), 0, 224)     // bytes payload
            log4(mark, 288,                           // calldata
                 shl(224, shr(224, calldataload(0))), // msg.sig
                 caller,                              // msg.sender
                 calldataload(4),                     // arg1
                 calldataload(36)                     // arg2
                )
        }
    }
}

////// /nix/store/8xb41r4qd0cjb63wcrxf1qmfg88p0961-dss-6fd7de0/src/end.sol
/// end.sol -- global settlement engine

// Copyright (C) 2018 Rain <[email protected]>
// Copyright (C) 2018 Lev Livnev <[email protected]>
//
// 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; */

/* import "./lib.sol"; */

contract VatLike {
    function dai(address) external view returns (uint256);
    function ilks(bytes32 ilk) external returns (
        uint256 Art,
        uint256 rate,
        uint256 spot,
        uint256 line,
        uint256 dust
    );
    function urns(bytes32 ilk, address urn) external returns (
        uint256 ink,
        uint256 art
    );
    function debt() external returns (uint256);
    function move(address src, address dst, uint256 rad) external;
    function hope(address) external;
    function flux(bytes32 ilk, address src, address dst, uint256 rad) external;
    function grab(bytes32 i, address u, address v, address w, int256 dink, int256 dart) external;
    function suck(address u, address v, uint256 rad) external;
    function cage() external;
}
contract CatLike {
    function ilks(bytes32) external returns (
        address flip,  // Liquidator
        uint256 chop,  // Liquidation Penalty   [ray]
        uint256 lump   // Liquidation Quantity  [rad]
    );
    function cage() external;
}
contract PotLike {
    function cage() external;
}
contract VowLike {
    function cage() external;
}
contract Flippy {
    function bids(uint id) external view returns (
        uint256 bid,
        uint256 lot,
        address guy,
        uint48  tic,
        uint48  end,
        address usr,
        address gal,
        uint256 tab
    );
    function yank(uint id) external;
}

contract PipLike {
    function read() external view returns (bytes32);
}

contract Spotty {
    function par() external view returns (uint256);
    function ilks(bytes32) external view returns (
        PipLike pip,
        uint256 mat
    );
    function cage() external;
}

/*
    This is the `End` and it coordinates Global Settlement. This is an
    involved, stateful process that takes place over nine steps.

    First we freeze the system and lock the prices for each ilk.

    1. `cage()`:
        - freezes user entrypoints
        - cancels flop/flap auctions
        - starts cooldown period
        - stops pot drips

    2. `cage(ilk)`:
       - set the cage price for each `ilk`, reading off the price feed

    We must process some system state before it is possible to calculate
    the final dai / collateral price. In particular, we need to determine

      a. `gap`, the collateral shortfall per collateral type by
         considering under-collateralised CDPs.

      b. `debt`, the outstanding dai supply after including system
         surplus / deficit

    We determine (a) by processing all under-collateralised CDPs with
    `skim`:

    3. `skim(ilk, urn)`:
       - cancels CDP debt
       - any excess collateral remains
       - backing collateral taken

    We determine (b) by processing ongoing dai generating processes,
    i.e. auctions. We need to ensure that auctions will not generate any
    further dai income. In the two-way auction model this occurs when
    all auctions are in the reverse (`dent`) phase. There are two ways
    of ensuring this:

    4.  i) `wait`: set the cooldown period to be at least as long as the
           longest auction duration, which needs to be determined by the
           cage administrator.

           This takes a fairly predictable time to occur but with altered
           auction dynamics due to the now varying price of dai.

       ii) `skip`: cancel all ongoing auctions and seize the collateral.

           This allows for faster processing at the expense of more
           processing calls. This option allows dai holders to retrieve
           their collateral faster.

           `skip(ilk, id)`:
            - cancel individual flip auctions in the `tend` (forward) phase
            - retrieves collateral and returns dai to bidder
            - `dent` (reverse) phase auctions can continue normally

    Option (i), `wait`, is sufficient for processing the system
    settlement but option (ii), `skip`, will speed it up. Both options
    are available in this implementation, with `skip` being enabled on a
    per-auction basis.

    When a CDP has been processed and has no debt remaining, the
    remaining collateral can be removed.

    5. `free(ilk)`:
        - remove collateral from the caller's CDP
        - owner can call as needed

    After the processing period has elapsed, we enable calculation of
    the final price for each collateral type.

    6. `thaw()`:
       - only callable after processing time period elapsed
       - assumption that all under-collateralised CDPs are processed
       - fixes the total outstanding supply of dai
       - may also require extra CDP processing to cover vow surplus

    7. `flow(ilk)`:
        - calculate the `fix`, the cash price for a given ilk
        - adjusts the `fix` in the case of deficit / surplus

    At this point we have computed the final price for each collateral
    type and dai holders can now turn their dai into collateral. Each
    unit dai can claim a fixed basket of collateral.

    Dai holders must first `pack` some dai into a `bag`. Once packed,
    dai cannot be unpacked and is not transferrable. More dai can be
    added to a bag later.

    8. `pack(wad)`:
        - put some dai into a bag in preparation for `cash`

    Finally, collateral can be obtained with `cash`. The bigger the bag,
    the more collateral can be released.

    9. `cash(ilk, wad)`:
        - exchange some dai from your bag for gems from a specific ilk
        - the number of gems is limited by how big your bag is
*/

contract End is LibNote {
    // --- Auth ---
    mapping (address => uint) public wards;
    function rely(address guy) external note auth { wards[guy] = 1; }
    function deny(address guy) external note auth { wards[guy] = 0; }
    modifier auth {
        require(wards[msg.sender] == 1, "End/not-authorized");
        _;
    }

    // --- Data ---
    VatLike  public vat;
    CatLike  public cat;
    VowLike  public vow;
    PotLike  public pot;
    Spotty   public spot;

    uint256  public live;  // cage flag
    uint256  public when;  // time of cage
    uint256  public wait;  // processing cooldown length
    uint256  public debt;  // total outstanding dai following processing [rad]

    mapping (bytes32 => uint256) public tag;  // cage price           [ray]
    mapping (bytes32 => uint256) public gap;  // collateral shortfall [wad]
    mapping (bytes32 => uint256) public Art;  // total debt per ilk   [wad]
    mapping (bytes32 => uint256) public fix;  // final cash price     [ray]

    mapping (address => uint256)                      public bag;  // [wad]
    mapping (bytes32 => mapping (address => uint256)) public out;  // [wad]

    // --- Init ---
    constructor() public {
        wards[msg.sender] = 1;
        live = 1;
    }

    // --- Math ---
    function add(uint x, uint y) internal pure returns (uint z) {
        z = x + y;
        require(z >= x);
    }
    function sub(uint x, uint y) internal pure returns (uint z) {
        require((z = x - y) <= x);
    }
    function mul(uint x, uint y) internal pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x);
    }
    function min(uint x, uint y) internal pure returns (uint z) {
        return x <= y ? x : y;
    }
    uint constant WAD = 10 ** 18;
    uint constant RAY = 10 ** 27;
    function rmul(uint x, uint y) internal pure returns (uint z) {
        z = mul(x, y) / RAY;
    }
    function rdiv(uint x, uint y) internal pure returns (uint z) {
        z = mul(x, RAY) / y;
    }
    function wdiv(uint x, uint y) internal pure returns (uint z) {
        z = mul(x, WAD) / y;
    }

    // --- Administration ---
    function file(bytes32 what, address data) external note auth {
        require(live == 1, "End/not-live");
        if (what == "vat")  vat = VatLike(data);
        else if (what == "cat")  cat = CatLike(data);
        else if (what == "vow")  vow = VowLike(data);
        else if (what == "pot")  pot = PotLike(data);
        else if (what == "spot") spot = Spotty(data);
        else revert("End/file-unrecognized-param");
    }
    function file(bytes32 what, uint256 data) external note auth {
        require(live == 1, "End/not-live");
        if (what == "wait") wait = data;
        else revert("End/file-unrecognized-param");
    }

    // --- Settlement ---
    function cage() external note auth {
        require(live == 1, "End/not-live");
        live = 0;
        when = now;
        vat.cage();
        cat.cage();
        vow.cage();
        spot.cage();
        pot.cage();
    }

    function cage(bytes32 ilk) external note {
        require(live == 0, "End/still-live");
        require(tag[ilk] == 0, "End/tag-ilk-already-defined");
        (Art[ilk],,,,) = vat.ilks(ilk);
        (PipLike pip,) = spot.ilks(ilk);
        // par is a ray, pip returns a wad
        tag[ilk] = wdiv(spot.par(), uint(pip.read()));
    }

    function skip(bytes32 ilk, uint256 id) external note {
        require(tag[ilk] != 0, "End/tag-ilk-not-defined");

        (address flipV,,) = cat.ilks(ilk);
        Flippy flip = Flippy(flipV);
        (, uint rate,,,) = vat.ilks(ilk);
        (uint bid, uint lot,,,, address usr,, uint tab) = flip.bids(id);

        vat.suck(address(vow), address(vow),  tab);
        vat.suck(address(vow), address(this), bid);
        vat.hope(address(flip));
        flip.yank(id);

        uint art = tab / rate;
        Art[ilk] = add(Art[ilk], art);
        require(int(lot) >= 0 && int(art) >= 0, "End/overflow");
        vat.grab(ilk, usr, address(this), address(vow), int(lot), int(art));
    }

    function skim(bytes32 ilk, address urn) external note {
        require(tag[ilk] != 0, "End/tag-ilk-not-defined");
        (, uint rate,,,) = vat.ilks(ilk);
        (uint ink, uint art) = vat.urns(ilk, urn);

        uint owe = rmul(rmul(art, rate), tag[ilk]);
        uint wad = min(ink, owe);
        gap[ilk] = add(gap[ilk], sub(owe, wad));

        require(wad <= 2**255 && art <= 2**255, "End/overflow");
        vat.grab(ilk, urn, address(this), address(vow), -int(wad), -int(art));
    }

    function free(bytes32 ilk) external note {
        require(live == 0, "End/still-live");
        (uint ink, uint art) = vat.urns(ilk, msg.sender);
        require(art == 0, "End/art-not-zero");
        require(ink <= 2**255, "End/overflow");
        vat.grab(ilk, msg.sender, msg.sender, address(vow), -int(ink), 0);
    }

    function thaw() external note {
        require(live == 0, "End/still-live");
        require(debt == 0, "End/debt-not-zero");
        require(vat.dai(address(vow)) == 0, "End/surplus-not-zero");
        require(now >= add(when, wait), "End/wait-not-finished");
        debt = vat.debt();
    }
    function flow(bytes32 ilk) external note {
        require(debt != 0, "End/debt-zero");
        require(fix[ilk] == 0, "End/fix-ilk-already-defined");

        (, uint rate,,,) = vat.ilks(ilk);
        uint256 wad = rmul(rmul(Art[ilk], rate), tag[ilk]);
        fix[ilk] = rdiv(mul(sub(wad, gap[ilk]), RAY), debt);
    }

    function pack(uint256 wad) external note {
        require(debt != 0, "End/debt-zero");
        vat.move(msg.sender, address(vow), mul(wad, RAY));
        bag[msg.sender] = add(bag[msg.sender], wad);
    }
    function cash(bytes32 ilk, uint wad) external note {
        require(fix[ilk] != 0, "End/fix-ilk-not-defined");
        vat.flux(ilk, address(this), msg.sender, rmul(wad, fix[ilk]));
        out[ilk][msg.sender] = add(out[ilk][msg.sender], wad);
        require(out[ilk][msg.sender] <= bag[msg.sender], "End/insufficient-bag-balance");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":true,"inputs":[{"indexed":true,"internalType":"bytes4","name":"sig","type":"bytes4"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":true,"internalType":"bytes32","name":"arg1","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"arg2","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"LogNote","type":"event"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"Art","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bag","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"cage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"}],"name":"cage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"cash","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"cat","outputs":[{"internalType":"contract CatLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"debt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"guy","type":"address"}],"name":"deny","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"data","type":"address"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"fix","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"}],"name":"flow","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"}],"name":"free","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"gap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"live","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}],"name":"out","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"pack","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pot","outputs":[{"internalType":"contract PotLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"guy","type":"address"}],"name":"rely","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"address","name":"urn","type":"address"}],"name":"skim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"skip","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"spot","outputs":[{"internalType":"contract Spotty","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"tag","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"thaw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"vat","outputs":[{"internalType":"contract VatLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vow","outputs":[{"internalType":"contract VowLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wait","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"when","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b5060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600681905550613a458061006c6000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806389ea45d311610104578063d4e8be83116100a2578063e488181311610071578063e48818131461076a578063e6ee62aa146107b4578063ee6447b5146107f6578063fe8507c614610838576101cf565b8063d4e8be831461068e578063e1340a3d146106dc578063e2702fdc1461071e578063e2b0caef1461074c576101cf565b80639c52a7f1116100de5780639c52a7f114610562578063bf353dbb146105a6578063c83062c6146105fe578063c939ebfc1461062c576101cf565b806389ea45d31461049e5780639255f809146104ec578063957aa58c14610544576101cf565b8063626cb3c51161017157806365fae35e1161014b57806365fae35e146103d8578063692450091461041c5780636ea42555146104265780636f265b9314610454576101cf565b8063626cb3c51461032e57806363fad85e1461037857806364bd7013146103ba576101cf565b80634a10eaa6116101ad5780634a10eaa6146102745780634ba2363a146102a2578063503ecf06146102ec5780635920375c14610324576101cf565b80630dca59c1146101d457806329ae8114146101f257806336569e771461022a575b600080fd5b6101dc610870565b6040518082815260200191505060405180910390f35b6102286004803603604081101561020857600080fd5b810190808035906020019092919080359060200190929190505050610876565b005b610232610a7b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102a06004803603602081101561028a57600080fd5b8101908080359060200190929190505050610aa1565b005b6102aa610d4c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103226004803603604081101561030257600080fd5b810190808035906020019092919080359060200190929190505050610d72565b005b61032c611665565b005b610336611a29565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103a46004803603602081101561038e57600080fd5b8101908080359060200190929190505050611a4f565b6040518082815260200191505060405180910390f35b6103c2611a67565b6040518082815260200191505060405180910390f35b61041a600480360360208110156103ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a6d565b005b610424611b9b565b005b6104526004803603602081101561043c57600080fd5b8101908080359060200190929190505050611f95565b005b61045c6121fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104ea600480360360408110156104b457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612222565b005b61052e6004803603602081101561050257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612754565b6040518082815260200191505060405180910390f35b61054c61276c565b6040518082815260200191505060405180910390f35b6105a46004803603602081101561057857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612772565b005b6105e8600480360360208110156105bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128a0565b6040518082815260200191505060405180910390f35b61062a6004803603602081101561061457600080fd5b81019080803590602001909291905050506128b8565b005b6106786004803603604081101561064257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cc7565b6040518082815260200191505060405180910390f35b6106da600480360360408110156106a457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cec565b005b610708600480360360208110156106f257600080fd5b81019080803590602001909291905050506130e7565b6040518082815260200191505060405180910390f35b61074a6004803603602081101561073457600080fd5b81019080803590602001909291905050506130ff565b005b610754613536565b6040518082815260200191505060405180910390f35b61077261353c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107e0600480360360208110156107ca57600080fd5b8101908080359060200190929190505050613562565b6040518082815260200191505060405180910390f35b6108226004803603602081101561080c57600080fd5b810190808035906020019092919050505061357a565b6040518082815260200191505060405180910390f35b61086e6004803603604081101561084e57600080fd5b810190808035906020019092919080359060200190929190505050613592565b005b60095481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461092a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600654146109a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f77616974000000000000000000000000000000000000000000000000000000008214156109d65780600881905550610a44565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f456e642f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009541415610b1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f456e642f646562742d7a65726f0000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600d60008381526020019081526020016000205414610ba3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f456e642f6669782d696c6b2d616c72656164792d646566696e6564000000000081525060200191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36836040518263ffffffff1660e01b81526004018082815260200191505060a060405180830381600087803b158015610c1a57600080fd5b505af1158015610c2e573d6000803e3d6000fd5b505050506040513d60a0811015610c4457600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050505050509150506000610cbe610ca5600c6000868152602001908152602001600020548461391f565b600a60008681526020019081526020016000205461391f565b9050610cfd610cf5610ce383600b600088815260200190815260200160002054613948565b6b033b2e3c9fd0803ce8000000613962565b60095461398e565b600d60008581526020019081526020016000208190555050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a6000848152602001908152602001600020541415610dfc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f456e642f7461672d696c6b2d6e6f742d646566696e656400000000000000000081525060200191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b815260040180828152602001915050606060405180830381600087803b158015610e7357600080fd5b505af1158015610e87573d6000803e3d6000fd5b505050506040513d6060811015610e9d57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050905060008190506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36866040518263ffffffff1660e01b81526004018082815260200191505060a060405180830381600087803b158015610f4257600080fd5b505af1158015610f56573d6000803e3d6000fd5b505050506040513d60a0811015610f6c57600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050505050509150506000806000808573ffffffffffffffffffffffffffffffffffffffff16634423c5f1896040518263ffffffff1660e01b8152600401808281526020019150506101006040518083038186803b15801561100357600080fd5b505afa158015611017573d6000803e3d6000fd5b505050506040513d61010081101561102e57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050975050965050505093509350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f24e23eb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156111b257600080fd5b505af11580156111c6573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f24e23eb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156112c957600080fd5b505af11580156112dd573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3b22fc4876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561138257600080fd5b505af1158015611396573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff166326e027f1896040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156113ed57600080fd5b505af1158015611401573d6000803e3d6000fd5b50505050600085828161141057fe5b049050611430600c60008c815260200190815260200160002054826139b7565b600c60008c81526020019081526020016000208190555060008412158015611459575060008112155b6114cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637bab3f408b8530600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689876040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b15801561160e57600080fd5b505af1158015611622573d6000803e3d6000fd5b5050505050505050505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b6000600654146116dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f456e642f7374696c6c2d6c69766500000000000000000000000000000000000081525060200191505060405180910390fd5b600060095414611755576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f456e642f646562742d6e6f742d7a65726f00000000000000000000000000000081525060200191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c25b346600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561181857600080fd5b505afa15801561182c573d6000803e3d6000fd5b505050506040513d602081101561184257600080fd5b8101908080519060200190929190505050146118c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f456e642f737572706c75732d6e6f742d7a65726f00000000000000000000000081525060200191505060405180910390fd5b6118d46007546008546139b7565b421015611949576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f456e642f776169742d6e6f742d66696e6973686564000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dca59c16040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156119b357600080fd5b505af11580156119c7573d6000803e3d6000fd5b505050506040513d60208110156119dd57600080fd5b81019080805190602001909291905050506009819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d6020528060005260406000206000915090505481565b60085481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611b21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611c4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b600160065414611cc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b600060068190555042600781905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611d4057600080fd5b505af1158015611d54573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611dc257600080fd5b505af1158015611dd6573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e4457600080fd5b505af1158015611e58573d6000803e3d6000fd5b50505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611ec657600080fd5b505af1158015611eda573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611f4857600080fd5b505af1158015611f5c573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b6000600954141561200e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f456e642f646562742d7a65726f0000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612086856b033b2e3c9fd0803ce8000000613962565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561212257600080fd5b505af1158015612136573d6000803e3d6000fd5b50505050612183600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826139b7565b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a60008481526020019081526020016000205414156122ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f456e642f7461672d696c6b2d6e6f742d646566696e656400000000000000000081525060200191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a060405180830381600087803b15801561232357600080fd5b505af1158015612337573d6000803e3d6000fd5b505050506040513d60a081101561234d57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050505050915050600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632424be5c86866040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506040805180830381600087803b15801561243757600080fd5b505af115801561244b573d6000803e3d6000fd5b505050506040513d604081101561246157600080fd5b8101908080519060200190929190805190602001909291905050509150915060006124a861248f838661391f565b600a60008981526020019081526020016000205461391f565b905060006124b684836139d1565b90506124de600b6000898152602001908152602001600020546124d98484613948565b6139b7565b600b6000898152602001908152602001600020819055507f8000000000000000000000000000000000000000000000000000000000000000811115801561254557507f80000000000000000000000000000000000000000000000000000000000000008311155b6125b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637bab3f40888830600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686600003896000036040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b15801561270057600080fd5b505af1158015612714573d6000803e3d6000fd5b5050505050505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600e6020528060005260406000206000915090505481565b60065481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612826576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60006020528060005260406000206000915090505481565b600060065414612930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f456e642f7374696c6c2d6c69766500000000000000000000000000000000000081525060200191505060405180910390fd5b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632424be5c84336040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506040805180830381600087803b1580156129db57600080fd5b505af11580156129ef573d6000803e3d6000fd5b505050506040513d6040811015612a0557600080fd5b8101908080519060200190929190805190602001909291905050509150915060008114612a9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f456e642f6172742d6e6f742d7a65726f0000000000000000000000000000000081525060200191505060405180910390fd5b7f8000000000000000000000000000000000000000000000000000000000000000821115612b30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637bab3f40843333600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168760000360006040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b158015612c7757600080fd5b505af1158015612c8b573d6000803e3d6000fd5b5050505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600f602052816000526040600020602052806000526040600020600091509150505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612da0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b600160065414612e18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f7661740000000000000000000000000000000000000000000000000000000000821415612e865780600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506130b0565b7f6361740000000000000000000000000000000000000000000000000000000000821415612ef45780600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506130af565b7f766f770000000000000000000000000000000000000000000000000000000000821415612f625780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506130ae565b7f706f740000000000000000000000000000000000000000000000000000000000821415612fd05780600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506130ad565b7f73706f740000000000000000000000000000000000000000000000000000000082141561303e5780600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506130ac565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f456e642f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5b5b5b5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600c6020528060005260406000206000915090505481565b600060065414613177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f456e642f7374696c6c2d6c69766500000000000000000000000000000000000081525060200191505060405180910390fd5b6000600a60008381526020019081526020016000205414613200576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f456e642f7461672d696c6b2d616c72656164792d646566696e6564000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36826040518263ffffffff1660e01b81526004018082815260200191505060a060405180830381600087803b15801561327557600080fd5b505af1158015613289573d6000803e3d6000fd5b505050506040513d60a081101561329f57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505090919250909150905050600c600083815260200190815260200160002060008291905055506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36836040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b15801561337157600080fd5b505afa158015613385573d6000803e3d6000fd5b505050506040513d604081101561339b57600080fd5b8101908080519060200190929190805190602001909291905050505090506134e8600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663495d32cb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561342457600080fd5b505afa158015613438573d6000803e3d6000fd5b505050506040513d602081101561344e57600080fd5b81019080805190602001909291905050508273ffffffffffffffffffffffffffffffffffffffff166357de26a46040518163ffffffff1660e01b815260040160206040518083038186803b1580156134a557600080fd5b505afa1580156134b9573d6000803e3d6000fd5b505050506040513d60208110156134cf57600080fd5b810190808051906020019092919050505060001c6139eb565b600a600084815260200190815260200160002081905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60075481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b6020528060005260406000206000915090505481565b600a6020528060005260406000206000915090505481565b6000600d600084815260200190815260200160002054141561361c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f456e642f6669782d696c6b2d6e6f742d646566696e656400000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636111be2e83303361367a86600d60008a81526020019081526020016000205461391f565b6040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b15801561371d57600080fd5b505af1158015613731573d6000803e3d6000fd5b5050505061378f600f600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826139b7565b600f600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600f600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156138e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f456e642f696e73756666696369656e742d6261672d62616c616e63650000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60006b033b2e3c9fd0803ce80000006139388484613962565b8161393f57fe5b04905092915050565b600082828403915081111561395c57600080fd5b92915050565b60008082148061397f575082828385029250828161397c57fe5b04145b61398857600080fd5b92915050565b6000816139a7846b033b2e3c9fd0803ce8000000613962565b816139ae57fe5b04905092915050565b60008183019050828110156139cb57600080fd5b92915050565b6000818311156139e157816139e3565b825b905092915050565b600081613a0084670de0b6b3a7640000613962565b81613a0757fe5b0490509291505056fea265627a7a7231582083eb7e4603d27529380489cc2e9eae8c93e78f6883173654442c079532ab138964736f6c634300050c0032

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c806389ea45d311610104578063d4e8be83116100a2578063e488181311610071578063e48818131461076a578063e6ee62aa146107b4578063ee6447b5146107f6578063fe8507c614610838576101cf565b8063d4e8be831461068e578063e1340a3d146106dc578063e2702fdc1461071e578063e2b0caef1461074c576101cf565b80639c52a7f1116100de5780639c52a7f114610562578063bf353dbb146105a6578063c83062c6146105fe578063c939ebfc1461062c576101cf565b806389ea45d31461049e5780639255f809146104ec578063957aa58c14610544576101cf565b8063626cb3c51161017157806365fae35e1161014b57806365fae35e146103d8578063692450091461041c5780636ea42555146104265780636f265b9314610454576101cf565b8063626cb3c51461032e57806363fad85e1461037857806364bd7013146103ba576101cf565b80634a10eaa6116101ad5780634a10eaa6146102745780634ba2363a146102a2578063503ecf06146102ec5780635920375c14610324576101cf565b80630dca59c1146101d457806329ae8114146101f257806336569e771461022a575b600080fd5b6101dc610870565b6040518082815260200191505060405180910390f35b6102286004803603604081101561020857600080fd5b810190808035906020019092919080359060200190929190505050610876565b005b610232610a7b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102a06004803603602081101561028a57600080fd5b8101908080359060200190929190505050610aa1565b005b6102aa610d4c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103226004803603604081101561030257600080fd5b810190808035906020019092919080359060200190929190505050610d72565b005b61032c611665565b005b610336611a29565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103a46004803603602081101561038e57600080fd5b8101908080359060200190929190505050611a4f565b6040518082815260200191505060405180910390f35b6103c2611a67565b6040518082815260200191505060405180910390f35b61041a600480360360208110156103ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a6d565b005b610424611b9b565b005b6104526004803603602081101561043c57600080fd5b8101908080359060200190929190505050611f95565b005b61045c6121fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104ea600480360360408110156104b457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612222565b005b61052e6004803603602081101561050257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612754565b6040518082815260200191505060405180910390f35b61054c61276c565b6040518082815260200191505060405180910390f35b6105a46004803603602081101561057857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612772565b005b6105e8600480360360208110156105bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128a0565b6040518082815260200191505060405180910390f35b61062a6004803603602081101561061457600080fd5b81019080803590602001909291905050506128b8565b005b6106786004803603604081101561064257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cc7565b6040518082815260200191505060405180910390f35b6106da600480360360408110156106a457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cec565b005b610708600480360360208110156106f257600080fd5b81019080803590602001909291905050506130e7565b6040518082815260200191505060405180910390f35b61074a6004803603602081101561073457600080fd5b81019080803590602001909291905050506130ff565b005b610754613536565b6040518082815260200191505060405180910390f35b61077261353c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107e0600480360360208110156107ca57600080fd5b8101908080359060200190929190505050613562565b6040518082815260200191505060405180910390f35b6108226004803603602081101561080c57600080fd5b810190808035906020019092919050505061357a565b6040518082815260200191505060405180910390f35b61086e6004803603604081101561084e57600080fd5b810190808035906020019092919080359060200190929190505050613592565b005b60095481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461092a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600654146109a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f77616974000000000000000000000000000000000000000000000000000000008214156109d65780600881905550610a44565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f456e642f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009541415610b1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f456e642f646562742d7a65726f0000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600d60008381526020019081526020016000205414610ba3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f456e642f6669782d696c6b2d616c72656164792d646566696e6564000000000081525060200191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36836040518263ffffffff1660e01b81526004018082815260200191505060a060405180830381600087803b158015610c1a57600080fd5b505af1158015610c2e573d6000803e3d6000fd5b505050506040513d60a0811015610c4457600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050505050509150506000610cbe610ca5600c6000868152602001908152602001600020548461391f565b600a60008681526020019081526020016000205461391f565b9050610cfd610cf5610ce383600b600088815260200190815260200160002054613948565b6b033b2e3c9fd0803ce8000000613962565b60095461398e565b600d60008581526020019081526020016000208190555050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a6000848152602001908152602001600020541415610dfc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f456e642f7461672d696c6b2d6e6f742d646566696e656400000000000000000081525060200191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b815260040180828152602001915050606060405180830381600087803b158015610e7357600080fd5b505af1158015610e87573d6000803e3d6000fd5b505050506040513d6060811015610e9d57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050905060008190506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36866040518263ffffffff1660e01b81526004018082815260200191505060a060405180830381600087803b158015610f4257600080fd5b505af1158015610f56573d6000803e3d6000fd5b505050506040513d60a0811015610f6c57600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050505050509150506000806000808573ffffffffffffffffffffffffffffffffffffffff16634423c5f1896040518263ffffffff1660e01b8152600401808281526020019150506101006040518083038186803b15801561100357600080fd5b505afa158015611017573d6000803e3d6000fd5b505050506040513d61010081101561102e57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050975050965050505093509350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f24e23eb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156111b257600080fd5b505af11580156111c6573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f24e23eb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156112c957600080fd5b505af11580156112dd573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3b22fc4876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561138257600080fd5b505af1158015611396573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff166326e027f1896040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156113ed57600080fd5b505af1158015611401573d6000803e3d6000fd5b50505050600085828161141057fe5b049050611430600c60008c815260200190815260200160002054826139b7565b600c60008c81526020019081526020016000208190555060008412158015611459575060008112155b6114cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637bab3f408b8530600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689876040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b15801561160e57600080fd5b505af1158015611622573d6000803e3d6000fd5b5050505050505050505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b6000600654146116dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f456e642f7374696c6c2d6c69766500000000000000000000000000000000000081525060200191505060405180910390fd5b600060095414611755576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f456e642f646562742d6e6f742d7a65726f00000000000000000000000000000081525060200191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c25b346600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561181857600080fd5b505afa15801561182c573d6000803e3d6000fd5b505050506040513d602081101561184257600080fd5b8101908080519060200190929190505050146118c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f456e642f737572706c75732d6e6f742d7a65726f00000000000000000000000081525060200191505060405180910390fd5b6118d46007546008546139b7565b421015611949576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f456e642f776169742d6e6f742d66696e6973686564000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dca59c16040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156119b357600080fd5b505af11580156119c7573d6000803e3d6000fd5b505050506040513d60208110156119dd57600080fd5b81019080805190602001909291905050506009819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d6020528060005260406000206000915090505481565b60085481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611b21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611c4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b600160065414611cc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b600060068190555042600781905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611d4057600080fd5b505af1158015611d54573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611dc257600080fd5b505af1158015611dd6573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e4457600080fd5b505af1158015611e58573d6000803e3d6000fd5b50505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611ec657600080fd5b505af1158015611eda573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611f4857600080fd5b505af1158015611f5c573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b6000600954141561200e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f456e642f646562742d7a65726f0000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612086856b033b2e3c9fd0803ce8000000613962565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561212257600080fd5b505af1158015612136573d6000803e3d6000fd5b50505050612183600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826139b7565b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a60008481526020019081526020016000205414156122ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f456e642f7461672d696c6b2d6e6f742d646566696e656400000000000000000081525060200191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a060405180830381600087803b15801561232357600080fd5b505af1158015612337573d6000803e3d6000fd5b505050506040513d60a081101561234d57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050505050915050600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632424be5c86866040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506040805180830381600087803b15801561243757600080fd5b505af115801561244b573d6000803e3d6000fd5b505050506040513d604081101561246157600080fd5b8101908080519060200190929190805190602001909291905050509150915060006124a861248f838661391f565b600a60008981526020019081526020016000205461391f565b905060006124b684836139d1565b90506124de600b6000898152602001908152602001600020546124d98484613948565b6139b7565b600b6000898152602001908152602001600020819055507f8000000000000000000000000000000000000000000000000000000000000000811115801561254557507f80000000000000000000000000000000000000000000000000000000000000008311155b6125b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637bab3f40888830600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686600003896000036040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b15801561270057600080fd5b505af1158015612714573d6000803e3d6000fd5b5050505050505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600e6020528060005260406000206000915090505481565b60065481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612826576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60006020528060005260406000206000915090505481565b600060065414612930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f456e642f7374696c6c2d6c69766500000000000000000000000000000000000081525060200191505060405180910390fd5b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632424be5c84336040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506040805180830381600087803b1580156129db57600080fd5b505af11580156129ef573d6000803e3d6000fd5b505050506040513d6040811015612a0557600080fd5b8101908080519060200190929190805190602001909291905050509150915060008114612a9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f456e642f6172742d6e6f742d7a65726f0000000000000000000000000000000081525060200191505060405180910390fd5b7f8000000000000000000000000000000000000000000000000000000000000000821115612b30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637bab3f40843333600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168760000360006040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b158015612c7757600080fd5b505af1158015612c8b573d6000803e3d6000fd5b5050505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600f602052816000526040600020602052806000526040600020600091509150505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612da0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b600160065414612e18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f7661740000000000000000000000000000000000000000000000000000000000821415612e865780600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506130b0565b7f6361740000000000000000000000000000000000000000000000000000000000821415612ef45780600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506130af565b7f766f770000000000000000000000000000000000000000000000000000000000821415612f625780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506130ae565b7f706f740000000000000000000000000000000000000000000000000000000000821415612fd05780600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506130ad565b7f73706f740000000000000000000000000000000000000000000000000000000082141561303e5780600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506130ac565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f456e642f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5b5b5b5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600c6020528060005260406000206000915090505481565b600060065414613177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f456e642f7374696c6c2d6c69766500000000000000000000000000000000000081525060200191505060405180910390fd5b6000600a60008381526020019081526020016000205414613200576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f456e642f7461672d696c6b2d616c72656164792d646566696e6564000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36826040518263ffffffff1660e01b81526004018082815260200191505060a060405180830381600087803b15801561327557600080fd5b505af1158015613289573d6000803e3d6000fd5b505050506040513d60a081101561329f57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505090919250909150905050600c600083815260200190815260200160002060008291905055506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36836040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b15801561337157600080fd5b505afa158015613385573d6000803e3d6000fd5b505050506040513d604081101561339b57600080fd5b8101908080519060200190929190805190602001909291905050505090506134e8600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663495d32cb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561342457600080fd5b505afa158015613438573d6000803e3d6000fd5b505050506040513d602081101561344e57600080fd5b81019080805190602001909291905050508273ffffffffffffffffffffffffffffffffffffffff166357de26a46040518163ffffffff1660e01b815260040160206040518083038186803b1580156134a557600080fd5b505afa1580156134b9573d6000803e3d6000fd5b505050506040513d60208110156134cf57600080fd5b810190808051906020019092919050505060001c6139eb565b600a600084815260200190815260200160002081905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60075481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b6020528060005260406000206000915090505481565b600a6020528060005260406000206000915090505481565b6000600d600084815260200190815260200160002054141561361c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f456e642f6669782d696c6b2d6e6f742d646566696e656400000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636111be2e83303361367a86600d60008a81526020019081526020016000205461391f565b6040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b15801561371d57600080fd5b505af1158015613731573d6000803e3d6000fd5b5050505061378f600f600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826139b7565b600f600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600f600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156138e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f456e642f696e73756666696369656e742d6261672d62616c616e63650000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60006b033b2e3c9fd0803ce80000006139388484613962565b8161393f57fe5b04905092915050565b600082828403915081111561395c57600080fd5b92915050565b60008082148061397f575082828385029250828161397c57fe5b04145b61398857600080fd5b92915050565b6000816139a7846b033b2e3c9fd0803ce8000000613962565b816139ae57fe5b04905092915050565b60008183019050828110156139cb57600080fd5b92915050565b6000818311156139e157816139e3565b825b905092915050565b600081613a0084670de0b6b3a7640000613962565b81613a0757fe5b0490509291505056fea265627a7a7231582083eb7e4603d27529380489cc2e9eae8c93e78f6883173654442c079532ab138964736f6c634300050c0032

Deployed Bytecode Sourcemap

8725:6246:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8725:6246:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9367:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11366:209;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11366:209:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9091:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14072:327;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14072:327:0;;;;;;;;;;;;;;;;;:::i;:::-;;9169:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12203:706;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12203:706:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13766:300;;;:::i;:::-;;9143:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9680:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9680:39:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9309:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8822:65;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8822:65:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;11610:234;;;:::i;:::-;;14407:209;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14407:209:0;;;;;;;;;;;;;;;;;:::i;:::-;;9195:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12917:505;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12917:505:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9759:60;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9759:60:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9224:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8893:65;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8893:65:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;8777:38;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8777:38:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13430:328;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13430:328:0;;;;;;;;;;;;;;;;;:::i;:::-;;9836:60;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9836:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10923:437;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10923:437:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9603:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9603:39:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11852:343;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11852:343:0;;;;;;;;;;;;;;;;;:::i;:::-;;9265:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9117:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9526:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9526:39:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9449;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9449:39:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14622:346;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14622:346:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9367:20;;;;:::o;11366:209::-;9018:1;8997:5;:17;9003:10;8997:17;;;;;;;;;;;;;;;;:22;8989:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11454:1;11446:4;;:9;11438:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11487:14;:4;:14;11483:84;;;11510:4;11503;:11;;;;11483:84;;;11530:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11483:84;1341:5;1437:3;1431:4;1427:14;1421:4;1414:28;1512:4;1506;1499:18;1604:3;1597:4;1591;1587:15;1580:28;1691:3;1688:1;1681:4;1675;1671:15;1658:37;2013:2;2000:16;1950:1;1937:15;1868:6;1833:1;1820:15;1815:3;1811:25;1806:3;1802:35;1741:3;1735:4;1730:333;1164:910;;;:::o;9091:19::-;;;;;;;;;;;;;:::o;14072:327::-;14140:1;14132:4;;:9;;14124:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14190:1;14178:3;:8;14182:3;14178:8;;;;;;;;;;;;:13;14170:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14239:9;14255:3;;;;;;;;;;;:8;;;14264:3;14255:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14255:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14255:13:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;14255:13:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14236:32;;;;;;14279:11;14293:36;14298:20;14303:3;:8;14307:3;14303:8;;;;;;;;;;;;14313:4;14298;:20::i;:::-;14320:3;:8;14324:3;14320:8;;;;;;;;;;;;14293:4;:36::i;:::-;14279:50;;14351:40;14356:28;14360:18;14364:3;14369;:8;14373:3;14369:8;;;;;;;;;;;;14360:3;:18::i;:::-;10560:8;14356:3;:28::i;:::-;14386:4;;14351;:40::i;:::-;14340:3;:8;14344:3;14340:8;;;;;;;;;;;:51;;;;1143:1;;1341:5;1437:3;1431:4;1427:14;1421:4;1414:28;1512:4;1506;1499:18;1604:3;1597:4;1591;1587:15;1580:28;1691:3;1688:1;1681:4;1675;1671:15;1658:37;2013:2;2000:16;1950:1;1937:15;1868:6;1833:1;1820:15;1815:3;1811:25;1806:3;1802:35;1741:3;1735:4;1730:333;1164:910;;:::o;9169:19::-;;;;;;;;;;;;;:::o;12203:706::-;12287:1;12275:3;:8;12279:3;12275:8;;;;;;;;;;;;:13;;12267:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12330:13;12349:3;;;;;;;;;;;:8;;;12358:3;12349:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12349:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12349:13:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12349:13:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12329:33;;;;12373:11;12394:5;12373:27;;12414:9;12430:3;;;;;;;;;;;:8;;;12439:3;12430:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12430:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12430:13:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;12430:13:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12411:32;;;;;;12455:8;12465;12478:11;12492:8;12504:4;:9;;;12514:2;12504:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12504:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12504:13:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;12504:13:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12454:63;;;;;;;;;;;;12530:3;;;;;;;;;;;:8;;;12547:3;;;;;;;;;;;12561;;;;;;;;;;;12568;12530:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12530:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12530:42:0;;;;12583:3;;;;;;;;;;;:8;;;12600:3;;;;;;;;;;;12614:4;12621:3;12583:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12583:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12583:42:0;;;;12636:3;;;;;;;;;;;:8;;;12653:4;12636:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12636:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12636:23:0;;;;12670:4;:9;;;12680:2;12670:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12670:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12670:13:0;;;;12696:8;12713:4;12707:3;:10;;;;;;12696:21;;12739:18;12743:3;:8;12747:3;12743:8;;;;;;;;;;;;12753:3;12739;:18::i;:::-;12728:3;:8;12732:3;12728:8;;;;;;;;;;;:29;;;;12788:1;12780:3;12776:13;;:30;;;;;12805:1;12797:3;12793:13;;12776:30;12768:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12834:3;;;;;;;;;;;:8;;;12843:3;12848;12861:4;12876:3;;;;;;;;;;;12886;12896;12834:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12834:67:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12834:67:0;;;;1143:1;;;;;;;;1341:5;1437:3;1431:4;1427:14;1421:4;1414:28;1512:4;1506;1499:18;1604:3;1597:4;1591;1587:15;1580:28;1691:3;1688:1;1681:4;1675;1671:15;1658:37;2013:2;2000:16;1950:1;1937:15;1868:6;1833:1;1820:15;1815:3;1811:25;1806:3;1802:35;1741:3;1735:4;1730:333;1164:910;;;:::o;13766:300::-;13823:1;13815:4;;:9;13807:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13870:1;13862:4;;:9;13854:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13937:1;13912:3;;;;;;;;;;;:7;;;13928:3;;;;;;;;;;;13912:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13912:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13912:21:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13912:21:0;;;;;;;;;;;;;;;;:26;13904:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13989:15;13993:4;;13999;;13989:3;:15::i;:::-;13982:3;:22;;13974:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14048:3;;;;;;;;;;;:8;;;:10;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14048:10:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14048:10:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14048:10:0;;;;;;;;;;;;;;;;14041:4;:17;;;;1341:5;1437:3;1431:4;1427:14;1421:4;1414:28;1512:4;1506;1499:18;1604:3;1597:4;1591;1587:15;1580:28;1691:3;1688:1;1681:4;1675;1671:15;1658:37;2013:2;2000:16;1950:1;1937:15;1868:6;1833:1;1820:15;1815:3;1811:25;1806:3;1802:35;1741:3;1735:4;1730:333;1164:910;:::o;9143:19::-;;;;;;;;;;;;;:::o;9680:39::-;;;;;;;;;;;;;;;;;:::o;9309:20::-;;;;:::o;8822:65::-;9018:1;8997:5;:17;9003:10;8997:17;;;;;;;;;;;;;;;;:22;8989:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8883:1;8870:5;:10;8876:3;8870:10;;;;;;;;;;;;;;;:14;;;;1341:5;1437:3;1431:4;1427:14;1421:4;1414:28;1512:4;1506;1499:18;1604:3;1597:4;1591;1587:15;1580:28;1691:3;1688:1;1681:4;1675;1671:15;1658:37;2013:2;2000:16;1950:1;1937:15;1868:6;1833:1;1820:15;1815:3;1811:25;1806:3;1802:35;1741:3;1735:4;1730:333;1164:910;;:::o;11610:234::-;9018:1;8997:5;:17;9003:10;8997:17;;;;;;;;;;;;;;;;:22;8989:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11672:1;11664:4;;:9;11656:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11708:1;11701:4;:8;;;;11727:3;11720:4;:10;;;;11741:3;;;;;;;;;;;:8;;;:10;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11741:10:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11741:10:0;;;;11762:3;;;;;;;;;;;:8;;;:10;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11762:10:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11762:10:0;;;;11783:3;;;;;;;;;;;:8;;;:10;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11783:10:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11783:10:0;;;;11804:4;;;;;;;;;;;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11804:11:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11804:11:0;;;;11826:3;;;;;;;;;;;:8;;;:10;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11826:10:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11826:10:0;;;;1341:5;1437:3;1431:4;1427:14;1421:4;1414:28;1512:4;1506;1499:18;1604:3;1597:4;1591;1587:15;1580:28;1691:3;1688:1;1681:4;1675;1671:15;1658:37;2013:2;2000:16;1950:1;1937:15;1868:6;1833:1;1820:15;1815:3;1811:25;1806:3;1802:35;1741:3;1735:4;1730:333;1164:910;:::o;14407:209::-;14475:1;14467:4;;:9;;14459:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14505:3;;;;;;;;;;;:8;;;14514:10;14534:3;;;;;;;;;;;14540:13;14544:3;10560:8;14540:3;:13::i;:::-;14505:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14505:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14505:49:0;;;;14583:25;14587:3;:15;14591:10;14587:15;;;;;;;;;;;;;;;;14604:3;14583;:25::i;:::-;14565:3;:15;14569:10;14565:15;;;;;;;;;;;;;;;:43;;;;1341:5;1437:3;1431:4;1427:14;1421:4;1414:28;1512:4;1506;1499:18;1604:3;1597:4;1591;1587:15;1580:28;1691:3;1688:1;1681:4;1675;1671:15;1658:37;2013:2;2000:16;1950:1;1937:15;1868:6;1833:1;1820:15;1815:3;1811:25;1806:3;1802:35;1741:3;1735:4;1730:333;1164:910;;:::o;9195:20::-;;;;;;;;;;;;;:::o;12917:505::-;13002:1;12990:3;:8;12994:3;12990:8;;;;;;;;;;;;:13;;12982:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13045:9;13061:3;;;;;;;;;;;:8;;;13070:3;13061:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13061:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13061:13:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;13061:13:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13042:32;;;;;;13086:8;13096;13108:3;;;;;;;;;;;:8;;;13117:3;13122;13108:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13108:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13108:18:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13108:18:0;;;;;;;;;;;;;;;;;;;;;;;;;13085:41;;;;13139:8;13150:31;13155:15;13160:3;13165:4;13155;:15::i;:::-;13172:3;:8;13176:3;13172:8;;;;;;;;;;;;13150:4;:31::i;:::-;13139:42;;13192:8;13203:13;13207:3;13212;13203;:13::i;:::-;13192:24;;13238:28;13242:3;:8;13246:3;13242:8;;;;;;;;;;;;13252:13;13256:3;13261;13252;:13::i;:::-;13238:3;:28::i;:::-;13227:3;:8;13231:3;13227:8;;;;;;;;;;;:39;;;;13294:6;13287:3;:13;;:30;;;;;13311:6;13304:3;:13;;13287:30;13279:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13345:3;;;;;;;;;;;:8;;;13354:3;13359;13372:4;13387:3;;;;;;;;;;;13398;13393:9;;13409:3;13404:9;;13345:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13345:69:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13345:69:0;;;;1143:1;;;;;1341:5;1437:3;1431:4;1427:14;1421:4;1414:28;1512:4;1506;1499:18;1604:3;1597:4;1591;1587:15;1580:28;1691:3;1688:1;1681:4;1675;1671:15;1658:37;2013:2;2000:16;1950:1;1937:15;1868:6;1833:1;1820:15;1815:3;1811:25;1806:3;1802:35;1741:3;1735:4;1730:333;1164:910;;;:::o;9759:60::-;;;;;;;;;;;;;;;;;:::o;9224:20::-;;;;:::o;8893:65::-;9018:1;8997:5;:17;9003:10;8997:17;;;;;;;;;;;;;;;;:22;8989:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8954:1;8941:5;:10;8947:3;8941:10;;;;;;;;;;;;;;;:14;;;;1341:5;1437:3;1431:4;1427:14;1421:4;1414:28;1512:4;1506;1499:18;1604:3;1597:4;1591;1587:15;1580:28;1691:3;1688:1;1681:4;1675;1671:15;1658:37;2013:2;2000:16;1950:1;1937:15;1868:6;1833:1;1820:15;1815:3;1811:25;1806:3;1802:35;1741:3;1735:4;1730:333;1164:910;;:::o;8777:38::-;;;;;;;;;;;;;;;;;:::o;13430:328::-;13498:1;13490:4;;:9;13482:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13530:8;13540;13552:3;;;;;;;;;;;:8;;;13561:3;13566:10;13552:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13552:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13552:25:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13552:25:0;;;;;;;;;;;;;;;;;;;;;;;;;13529:48;;;;13603:1;13596:3;:8;13588:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13651:6;13644:3;:13;;13636:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13685:3;;;;;;;;;;;:8;;;13694:3;13699:10;13711;13731:3;;;;;;;;;;;13742;13737:9;;13748:1;13685:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13685:65:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13685:65:0;;;;1143:1;;1341:5;1437:3;1431:4;1427:14;1421:4;1414:28;1512:4;1506;1499:18;1604:3;1597:4;1591;1587:15;1580:28;1691:3;1688:1;1681:4;1675;1671:15;1658:37;2013:2;2000:16;1950:1;1937:15;1868:6;1833:1;1820:15;1815:3;1811:25;1806:3;1802:35;1741:3;1735:4;1730:333;1164:910;;:::o;9836:60::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10923:437::-;9018:1;8997:5;:17;9003:10;8997:17;;;;;;;;;;;;;;;;:22;8989:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11011:1;11003:4;;:9;10995:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11044:13;:4;:13;11040:312;;;11074:4;11060:3;;:19;;;;;;;;;;;;;;;;;;11040:312;;;11099:13;:4;:13;11095:257;;;11129:4;11115:3;;:19;;;;;;;;;;;;;;;;;;11095:257;;;11154:13;:4;:13;11150:202;;;11184:4;11170:3;;:19;;;;;;;;;;;;;;;;;;11150:202;;;11209:13;:4;:13;11205:147;;;11239:4;11225:3;;:19;;;;;;;;;;;;;;;;;;11205:147;;;11264:14;:4;:14;11260:92;;;11294:4;11280;;:19;;;;;;;;;;;;;;;;;;11260:92;;;11315:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11260:92;11205:147;11150:202;11095:257;11040:312;1341:5;1437:3;1431:4;1427:14;1421:4;1414:28;1512:4;1506;1499:18;1604:3;1597:4;1591;1587:15;1580:28;1691:3;1688:1;1681:4;1675;1671:15;1658:37;2013:2;2000:16;1950:1;1937:15;1868:6;1833:1;1820:15;1815:3;1811:25;1806:3;1802:35;1741:3;1735:4;1730:333;1164:910;;;:::o;9603:39::-;;;;;;;;;;;;;;;;;:::o;11852:343::-;11920:1;11912:4;;:9;11904:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11971:1;11959:3;:8;11963:3;11959:8;;;;;;;;;;;;:13;11951:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12032:3;;;;;;;;;;;:8;;;12041:3;12032:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12032:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12032:13:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;12032:13:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12015:30;;;;;;;;;;12016:3;:8;12020:3;12016:8;;;;;;;;;;;;12015:30;;;;;;12057:11;12073:4;;;;;;;;;;;:9;;;12083:3;12073:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12073:14:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12073:14:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12073:14:0;;;;;;;;;;;;;;;;;;;;;;;;;12056:31;;;12153:34;12158:4;;;;;;;;;;;:8;;;:10;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12158:10:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12158:10:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12158:10:0;;;;;;;;;;;;;;;;12175:3;:8;;;:10;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12175:10:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12175:10:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12175:10:0;;;;;;;;;;;;;;;;12170:16;;12153:4;:34::i;:::-;12142:3;:8;12146:3;12142:8;;;;;;;;;;;:45;;;;1143:1;1341:5;1437:3;1431:4;1427:14;1421:4;1414:28;1512:4;1506;1499:18;1604:3;1597:4;1591;1587:15;1580:28;1691:3;1688:1;1681:4;1675;1671:15;1658:37;2013:2;2000:16;1950:1;1937:15;1868:6;1833:1;1820:15;1815:3;1811:25;1806:3;1802:35;1741:3;1735:4;1730:333;1164:910;;:::o;9265:20::-;;;;:::o;9117:19::-;;;;;;;;;;;;;:::o;9526:39::-;;;;;;;;;;;;;;;;;:::o;9449:::-;;;;;;;;;;;;;;;;;:::o;14622:346::-;14704:1;14692:3;:8;14696:3;14692:8;;;;;;;;;;;;:13;;14684:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14744:3;;;;;;;;;;;:8;;;14753:3;14766:4;14773:10;14785:19;14790:3;14795;:8;14799:3;14795:8;;;;;;;;;;;;14785:4;:19::i;:::-;14744:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14744:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14744:61:0;;;;14839:30;14843:3;:8;14847:3;14843:8;;;;;;;;;;;:20;14852:10;14843:20;;;;;;;;;;;;;;;;14865:3;14839;:30::i;:::-;14816:3;:8;14820:3;14816:8;;;;;;;;;;;:20;14825:10;14816:20;;;;;;;;;;;;;;;:53;;;;14912:3;:15;14916:10;14912:15;;;;;;;;;;;;;;;;14888:3;:8;14892:3;14888:8;;;;;;;;;;;:20;14897:10;14888:20;;;;;;;;;;;;;;;;:39;;14880:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1341:5;1437:3;1431:4;1427:14;1421:4;1414:28;1512:4;1506;1499:18;1604:3;1597:4;1591;1587:15;1580:28;1691:3;1688:1;1681:4;1675;1671:15;1658:37;2013:2;2000:16;1950:1;1937:15;1868:6;1833:1;1820:15;1815:3;1811:25;1806:3;1802:35;1741:3;1735:4;1730:333;1164:910;;;:::o;10575:99::-;10628:6;10560:8;10651:9;10655:1;10658;10651:3;:9::i;:::-;:15;;;;;;10647:19;;10575:99;;;;:::o;10165:104::-;10217:6;10259:1;10253;10249;:5;10245:9;;;10244:16;;10236:25;;;;;;10165:104;;;;:::o;10275:118::-;10327:6;10359:1;10354;:6;:30;;;;10383:1;10378;10373;10369;:5;10365:9;;;10364:15;;;;;;:20;10354:30;10346:39;;;;;;10275:118;;;;:::o;10680:99::-;10733:6;10770:1;10756:11;10760:1;10560:8;10756:3;:11::i;:::-;:15;;;;;;10752:19;;10680:99;;;;:::o;10045:114::-;10097:6;10124:1;10120;:5;10116:9;;10149:1;10144;:6;;10136:15;;;;;;10045:114;;;;:::o;10399:100::-;10451:6;10482:1;10477;:6;;:14;;10490:1;10477:14;;;10486:1;10477:14;10470:21;;10399:100;;;;:::o;10785:99::-;10838:6;10875:1;10861:11;10865:1;10525:8;10861:3;:11::i;:::-;:15;;;;;;10857:19;;10785:99;;;;:::o

Swarm Source

bzzr://83eb7e4603d27529380489cc2e9eae8c93e78f6883173654442c079532ab1389

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

Sky (formerly Maker) enables users to get rewarded for non-custodial savings.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.