ETH Price: $2,893.85 (-4.19%)
Gas: 6 Gwei

Contract

0x35D1b3F3D7966A1DFe207aa4514C12a259A0492B
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Hope197745552024-05-01 10:02:239 days ago1714557743IN
Maker: MCD Vat
0 ETH0.0004982210.30336098
Hope197745542024-05-01 10:02:119 days ago1714557731IN
Maker: MCD Vat
0 ETH0.0004893910.12073073
Hope197743042024-05-01 9:11:479 days ago1714554707IN
Maker: MCD Vat
0 ETH0.0008803118.20482296
Hope197284922024-04-24 23:25:2315 days ago1714001123IN
Maker: MCD Vat
0 ETH0.0005530511.43710508
Hope197284902024-04-24 23:24:5915 days ago1714001099IN
Maker: MCD Vat
0 ETH0.0005263810.88565372
Hope197284822024-04-24 23:23:2315 days ago1714001003IN
Maker: MCD Vat
0 ETH0.0005139610.62872402
Hope197284802024-04-24 23:22:5915 days ago1714000979IN
Maker: MCD Vat
0 ETH0.0005108910.56788947
Move194823712024-03-21 10:13:1150 days ago1711015991IN
Maker: MCD Vat
0 ETH0.0011920829.93465947
Hope194723032024-03-20 0:17:5951 days ago1710893879IN
Maker: MCD Vat
0 ETH0.0014922730.86023245
Hope191127302024-01-29 14:18:35102 days ago1706537915IN
Maker: MCD Vat
0 ETH0.0007935816.4113311
Hope191127242024-01-29 14:17:23102 days ago1706537843IN
Maker: MCD Vat
0 ETH0.0007529415.5707834
Hope191126872024-01-29 14:09:47102 days ago1706537387IN
Maker: MCD Vat
0 ETH0.0004767816.75505478
Hope191126812024-01-29 14:08:35102 days ago1706537315IN
Maker: MCD Vat
0 ETH0.0008466417.50868026
Hope190363262024-01-18 21:07:35113 days ago1705612055IN
Maker: MCD Vat
0 ETH0.0016292833.69355064
Move189836502024-01-11 12:21:47120 days ago1704975707IN
Maker: MCD Vat
0 ETH0.0011186628.09085115
Hope186221462023-11-21 19:12:59171 days ago1700593979IN
Maker: MCD Vat
0 ETH0.0025034251.77072796
Hope179583372023-08-20 20:27:23264 days ago1692563243IN
Maker: MCD Vat
0 ETH0.0007813416.15818827
Hope179583352023-08-20 20:26:59264 days ago1692563219IN
Maker: MCD Vat
0 ETH0.0007571915.65870444
Hope179583002023-08-20 20:19:59264 days ago1692562799IN
Maker: MCD Vat
0 ETH0.0008118716.78957064
Hope179582962023-08-20 20:19:11264 days ago1692562751IN
Maker: MCD Vat
0 ETH0.0008068816.6864218
Hope179582002023-08-20 19:59:47264 days ago1692561587IN
Maker: MCD Vat
0 ETH0.0009589619.83143108
Hope179581942023-08-20 19:58:35264 days ago1692561515IN
Maker: MCD Vat
0 ETH0.0011471623.72327847
Hope179581802023-08-20 19:55:47264 days ago1692561347IN
Maker: MCD Vat
0 ETH0.0009351219.33841155
Hope179581762023-08-20 19:54:59264 days ago1692561299IN
Maker: MCD Vat
0 ETH0.0008505417.58914091
Hope179580402023-08-20 19:27:47264 days ago1692559667IN
Maker: MCD Vat
0 ETH0.0008537317.65512345
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To Value
89281522019-11-13 19:16:321640 days ago1573672592  Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vat

Compiler Version
v0.5.12+commit.7709ece9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license
/**
 *Submitted for verification at Etherscan.io on 2019-11-14
*/

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

////// /nix/store/8xb41r4qd0cjb63wcrxf1qmfg88p0961-dss-6fd7de0/src/vat.sol
/// vat.sol -- Dai CDP database

// Copyright (C) 2018 Rain <[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; */

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

    mapping(address => mapping (address => uint)) public can;
    function hope(address usr) external note { can[msg.sender][usr] = 1; }
    function nope(address usr) external note { can[msg.sender][usr] = 0; }
    function wish(address bit, address usr) internal view returns (bool) {
        return either(bit == usr, can[bit][usr] == 1);
    }

    // --- Data ---
    struct Ilk {
        uint256 Art;   // Total Normalised Debt     [wad]
        uint256 rate;  // Accumulated Rates         [ray]
        uint256 spot;  // Price with Safety Margin  [ray]
        uint256 line;  // Debt Ceiling              [rad]
        uint256 dust;  // Urn Debt Floor            [rad]
    }
    struct Urn {
        uint256 ink;   // Locked Collateral  [wad]
        uint256 art;   // Normalised Debt    [wad]
    }

    mapping (bytes32 => Ilk)                       public ilks;
    mapping (bytes32 => mapping (address => Urn )) public urns;
    mapping (bytes32 => mapping (address => uint)) public gem;  // [wad]
    mapping (address => uint256)                   public dai;  // [rad]
    mapping (address => uint256)                   public sin;  // [rad]

    uint256 public debt;  // Total Dai Issued    [rad]
    uint256 public vice;  // Total Unbacked Dai  [rad]
    uint256 public Line;  // Total Debt Ceiling  [rad]
    uint256 public live;  // Access Flag

    // --- Logs ---
    event LogNote(
        bytes4   indexed  sig,
        bytes32  indexed  arg1,
        bytes32  indexed  arg2,
        bytes32  indexed  arg3,
        bytes             data
    ) anonymous;

    modifier note {
        _;
        assembly {
            // log an 'anonymous' event with a constant 6 words of calldata
            // and four indexed topics: the selector and the first three args
            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
                 calldataload(4),                     // arg1
                 calldataload(36),                    // arg2
                 calldataload(68)                     // arg3
                )
        }
    }

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

    // --- Math ---
    function add(uint x, int y) internal pure returns (uint z) {
        z = x + uint(y);
        require(y >= 0 || z <= x);
        require(y <= 0 || z >= x);
    }
    function sub(uint x, int y) internal pure returns (uint z) {
        z = x - uint(y);
        require(y <= 0 || z <= x);
        require(y >= 0 || z >= x);
    }
    function mul(uint x, int y) internal pure returns (int z) {
        z = int(x) * y;
        require(int(x) >= 0);
        require(y == 0 || z / y == int(x));
    }
    function add(uint x, uint y) internal pure returns (uint z) {
        require((z = x + y) >= 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);
    }

    // --- Administration ---
    function init(bytes32 ilk) external note auth {
        require(ilks[ilk].rate == 0, "Vat/ilk-already-init");
        ilks[ilk].rate = 10 ** 27;
    }
    function file(bytes32 what, uint data) external note auth {
        require(live == 1, "Vat/not-live");
        if (what == "Line") Line = data;
        else revert("Vat/file-unrecognized-param");
    }
    function file(bytes32 ilk, bytes32 what, uint data) external note auth {
        require(live == 1, "Vat/not-live");
        if (what == "spot") ilks[ilk].spot = data;
        else if (what == "line") ilks[ilk].line = data;
        else if (what == "dust") ilks[ilk].dust = data;
        else revert("Vat/file-unrecognized-param");
    }
    function cage() external note auth {
        live = 0;
    }

    // --- Fungibility ---
    function slip(bytes32 ilk, address usr, int256 wad) external note auth {
        gem[ilk][usr] = add(gem[ilk][usr], wad);
    }
    function flux(bytes32 ilk, address src, address dst, uint256 wad) external note {
        require(wish(src, msg.sender), "Vat/not-allowed");
        gem[ilk][src] = sub(gem[ilk][src], wad);
        gem[ilk][dst] = add(gem[ilk][dst], wad);
    }
    function move(address src, address dst, uint256 rad) external note {
        require(wish(src, msg.sender), "Vat/not-allowed");
        dai[src] = sub(dai[src], rad);
        dai[dst] = add(dai[dst], rad);
    }

    function either(bool x, bool y) internal pure returns (bool z) {
        assembly{ z := or(x, y)}
    }
    function both(bool x, bool y) internal pure returns (bool z) {
        assembly{ z := and(x, y)}
    }

    // --- CDP Manipulation ---
    function frob(bytes32 i, address u, address v, address w, int dink, int dart) external note {
        // system is live
        require(live == 1, "Vat/not-live");

        Urn memory urn = urns[i][u];
        Ilk memory ilk = ilks[i];
        // ilk has been initialised
        require(ilk.rate != 0, "Vat/ilk-not-init");

        urn.ink = add(urn.ink, dink);
        urn.art = add(urn.art, dart);
        ilk.Art = add(ilk.Art, dart);

        int dtab = mul(ilk.rate, dart);
        uint tab = mul(ilk.rate, urn.art);
        debt     = add(debt, dtab);

        // either debt has decreased, or debt ceilings are not exceeded
        require(either(dart <= 0, both(mul(ilk.Art, ilk.rate) <= ilk.line, debt <= Line)), "Vat/ceiling-exceeded");
        // urn is either less risky than before, or it is safe
        require(either(both(dart <= 0, dink >= 0), tab <= mul(urn.ink, ilk.spot)), "Vat/not-safe");

        // urn is either more safe, or the owner consents
        require(either(both(dart <= 0, dink >= 0), wish(u, msg.sender)), "Vat/not-allowed-u");
        // collateral src consents
        require(either(dink <= 0, wish(v, msg.sender)), "Vat/not-allowed-v");
        // debt dst consents
        require(either(dart >= 0, wish(w, msg.sender)), "Vat/not-allowed-w");

        // urn has no debt, or a non-dusty amount
        require(either(urn.art == 0, tab >= ilk.dust), "Vat/dust");

        gem[i][v] = sub(gem[i][v], dink);
        dai[w]    = add(dai[w],    dtab);

        urns[i][u] = urn;
        ilks[i]    = ilk;
    }
    // --- CDP Fungibility ---
    function fork(bytes32 ilk, address src, address dst, int dink, int dart) external note {
        Urn storage u = urns[ilk][src];
        Urn storage v = urns[ilk][dst];
        Ilk storage i = ilks[ilk];

        u.ink = sub(u.ink, dink);
        u.art = sub(u.art, dart);
        v.ink = add(v.ink, dink);
        v.art = add(v.art, dart);

        uint utab = mul(u.art, i.rate);
        uint vtab = mul(v.art, i.rate);

        // both sides consent
        require(both(wish(src, msg.sender), wish(dst, msg.sender)), "Vat/not-allowed");

        // both sides safe
        require(utab <= mul(u.ink, i.spot), "Vat/not-safe-src");
        require(vtab <= mul(v.ink, i.spot), "Vat/not-safe-dst");

        // both sides non-dusty
        require(either(utab >= i.dust, u.art == 0), "Vat/dust-src");
        require(either(vtab >= i.dust, v.art == 0), "Vat/dust-dst");
    }
    // --- CDP Confiscation ---
    function grab(bytes32 i, address u, address v, address w, int dink, int dart) external note auth {
        Urn storage urn = urns[i][u];
        Ilk storage ilk = ilks[i];

        urn.ink = add(urn.ink, dink);
        urn.art = add(urn.art, dart);
        ilk.Art = add(ilk.Art, dart);

        int dtab = mul(ilk.rate, dart);

        gem[i][v] = sub(gem[i][v], dink);
        sin[w]    = sub(sin[w],    dtab);
        vice      = sub(vice,      dtab);
    }

    // --- Settlement ---
    function heal(uint rad) external note {
        address u = msg.sender;
        sin[u] = sub(sin[u], rad);
        dai[u] = sub(dai[u], rad);
        vice   = sub(vice,   rad);
        debt   = sub(debt,   rad);
    }
    function suck(address u, address v, uint rad) external note auth {
        sin[u] = add(sin[u], rad);
        dai[v] = add(dai[v], rad);
        vice   = add(vice,   rad);
        debt   = add(debt,   rad);
    }

    // --- Rates ---
    function fold(bytes32 i, address u, int rate) external note auth {
        require(live == 1, "Vat/not-live");
        Ilk storage ilk = ilks[i];
        ilk.rate = add(ilk.rate, rate);
        int rad  = mul(ilk.Art, rate);
        dai[u]   = add(dai[u], rad);
        debt     = add(debt,   rad);
    }
}

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":"bytes32","name":"arg1","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"arg2","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"arg3","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"LogNote","type":"event"},{"constant":true,"inputs":[],"name":"Line","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":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"can","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"dai","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"usr","type":"address"}],"name":"deny","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"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":"uint256","name":"data","type":"uint256"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"flux","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"i","type":"bytes32"},{"internalType":"address","name":"u","type":"address"},{"internalType":"int256","name":"rate","type":"int256"}],"name":"fold","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"int256","name":"dink","type":"int256"},{"internalType":"int256","name":"dart","type":"int256"}],"name":"fork","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"i","type":"bytes32"},{"internalType":"address","name":"u","type":"address"},{"internalType":"address","name":"v","type":"address"},{"internalType":"address","name":"w","type":"address"},{"internalType":"int256","name":"dink","type":"int256"},{"internalType":"int256","name":"dart","type":"int256"}],"name":"frob","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}],"name":"gem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"i","type":"bytes32"},{"internalType":"address","name":"u","type":"address"},{"internalType":"address","name":"v","type":"address"},{"internalType":"address","name":"w","type":"address"},{"internalType":"int256","name":"dink","type":"int256"},{"internalType":"int256","name":"dart","type":"int256"}],"name":"grab","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"rad","type":"uint256"}],"name":"heal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"hope","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"ilks","outputs":[{"internalType":"uint256","name":"Art","type":"uint256"},{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"spot","type":"uint256"},{"internalType":"uint256","name":"line","type":"uint256"},{"internalType":"uint256","name":"dust","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"}],"name":"init","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"live","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rad","type":"uint256"}],"name":"move","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"nope","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"sin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"address","name":"usr","type":"address"},{"internalType":"int256","name":"wad","type":"int256"}],"name":"slip","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"u","type":"address"},{"internalType":"address","name":"v","type":"address"},{"internalType":"uint256","name":"rad","type":"uint256"}],"name":"suck","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}],"name":"urns","outputs":[{"internalType":"uint256","name":"ink","type":"uint256"},{"internalType":"uint256","name":"art","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vice","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"}]

608060405234801561001057600080fd5b5060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a819055506134b58061006c6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80637cdd3fde116100f9578063bb35783b11610097578063dc4d20fa11610071578063dc4d20fa1461096c578063f059212a146109b0578063f24e23eb14610a08578063f37ac61c14610a76576101c4565b8063bb35783b14610848578063bf353dbb146108b6578063d9638d361461090e576101c4565b80639c52a7f1116100d35780639c52a7f11461074a578063a3b22fc41461078e578063b65337df146107d2578063babe8a3f1461082a576101c4565b80637cdd3fde14610652578063870c616d146106aa578063957aa58c1461072c576101c4565b80634538c4eb11610166578063692450091161014057806369245009146104ac5780636c25b346146104b6578063760887031461050e5780637bab3f40146105b0576101c4565b80634538c4eb146103785780636111be2e146103f057806365fae35e14610468576101c4565b80632424be5c116101a25780632424be5c1461028b57806329ae8114146102f45780632d61a3551461032c5780633b6631951461034a576101c4565b80630dca59c1146101c95780631a0b287e146101e7578063214414d514610229575b600080fd5b6101d1610aa4565b6040518082815260200191505060405180910390f35b610227600480360360608110156101fd57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610aaa565b005b6102756004803603604081101561023f57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d58565b6040518082815260200191505060405180910390f35b6102d7600480360360408110156102a157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d7d565b604051808381526020018281526020019250505060405180910390f35b61032a6004803603604081101561030a57600080fd5b810190808035906020019092919080359060200190929190505050610dae565b005b610334610fb5565b6040518082815260200191505060405180910390f35b6103766004803603602081101561036057600080fd5b8101908080359060200190929190505050610fbb565b005b6103da6004803603604081101561038e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061115a565b6040518082815260200191505060405180910390f35b6104666004803603608081101561040657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061117f565b005b6104aa6004803603602081101561047e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611392565b005b6104b461153a565b005b6104f8600480360360208110156104cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061162d565b6040518082815260200191505060405180910390f35b6105ae600480360360c081101561052457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611645565b005b610650600480360360c08110156105c657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611e31565b005b6106a86004803603606081101561066857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612130565b005b61072a600480360360a08110156106c057600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506122cc565b005b610734612700565b6040518082815260200191505060405180910390f35b61078c6004803603602081101561076057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612706565b005b6107d0600480360360208110156107a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128ae565b005b610828600480360360608110156107e857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612967565b005b610832612bac565b6040518082815260200191505060405180910390f35b6108b46004803603606081101561085e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612bb2565b005b6108f8600480360360208110156108cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d80565b6040518082815260200191505060405180910390f35b61093a6004803603602081101561092457600080fd5b8101908080359060200190929190505050612d98565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b6109ae6004803603602081101561098257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dce565b005b6109f2600480360360208110156109c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e88565b6040518082815260200191505060405180910390f35b610a7460048036036060811015610a1e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612ea0565b005b610aa260048036036020811015610a8c57600080fd5b81019080803590602001909291905050506130ca565b005b60075481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a5414610bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f73706f7400000000000000000000000000000000000000000000000000000000821415610c1e57806002600085815260200190815260200160002060020181905550610d1e565b7f6c696e6500000000000000000000000000000000000000000000000000000000821415610c6657806002600085815260200190815260200160002060030181905550610d1d565b7f6475737400000000000000000000000000000000000000000000000000000000821415610cae57806002600085815260200190815260200160002060040181905550610d1c565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5661742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5b5b5961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b6004602052816000526040600020602052806000526040600020600091509150505481565b6003602052816000526040600020602052806000526040600020600091509150508060000154908060010154905082565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e62576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a5414610eda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f4c696e6500000000000000000000000000000000000000000000000000000000821415610f0e5780600981905550610f7c565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5661742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a4505050565b60085481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461106f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60006002600083815260200190815260200160002060010154146110fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5661742f696c6b2d616c72656164792d696e697400000000000000000000000081525060200191505060405180910390fd5b6b033b2e3c9fd0803ce800000060026000838152602001908152602001600020600101819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b6001602052816000526040600020602052806000526040600020600091509150505481565b6111898333613244565b6111fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5661742f6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b6112556004600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613304565b6004600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113036004600086815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261331e565b6004600086815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611446576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a54146114be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146115ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6000600a819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450565b60056020528060005260406000206000915090505481565b6001600a54146116bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b6116c5613437565b6003600088815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180604001604052908160008201548152602001600182015481525050905061173e613451565b600260008981526020019081526020016000206040518060a001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481525050905060008160200151141561180b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5661742f696c6b2d6e6f742d696e69740000000000000000000000000000000081525060200191505060405180910390fd5b611819826000015185613338565b826000018181525050611830826020015184613338565b826020018181525050611847816000015184613338565b8160000181815250506000611860826020015185613377565b90506000611876836020015185602001516133b2565b905061188460075483613338565b6007819055506118c060008613156118bb85606001516118ac876000015188602001516133b2565b111560095460075411156133de565b6133eb565b611932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5661742f6365696c696e672d657863656564656400000000000000000000000081525060200191505060405180910390fd5b611961611947600087131560008912156133de565b611959866000015186604001516133b2565b8311156133eb565b6119d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d73616665000000000000000000000000000000000000000081525060200191505060405180910390fd5b6119f76119e8600087131560008912156133de565b6119f28b33613244565b6133eb565b611a69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5661742f6e6f742d616c6c6f7765642d7500000000000000000000000000000081525060200191505060405180910390fd5b611a806000871315611a7b8a33613244565b6133eb565b611af2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5661742f6e6f742d616c6c6f7765642d7600000000000000000000000000000081525060200191505060405180910390fd5b611b096000861215611b048933613244565b6133eb565b611b7b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5661742f6e6f742d616c6c6f7765642d7700000000000000000000000000000081525060200191505060405180910390fd5b611b93600085602001511484608001518310156133eb565b611c05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f5661742f6475737400000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611c5f600460008c815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054876133f8565b600460008c815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cfc600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613338565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600360008c815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015590505082600260008c81526020019081526020016000206000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040155905050505050505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611ee5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60006003600088815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008981526020019081526020016000209050611f5e826000015485613338565b8260000181905550611f74826001015484613338565b8260010181905550611f8a816000015484613338565b81600001819055506000611fa2826001015485613377565b9050611ffe600460008b815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054866133f8565b600460008b815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061209b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826133f8565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120ea600854826133f8565b6008819055505050505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146121e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b61223e6004600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613338565b6004600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b60006003600087815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006003600088815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006002600089815260200190815260200160002090506123998360000154866133f8565b83600001819055506123af8360010154856133f8565b83600101819055506123c5826000015486613338565b82600001819055506123db826001015485613338565b826001018190555060006123f7846001015483600101546133b2565b9050600061240d846001015484600101546133b2565b905061242b61241c8a33613244565b6124268a33613244565b6133de565b61249d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5661742f6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b6124af856000015484600201546133b2565b821115612524576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5661742f6e6f742d736166652d7372630000000000000000000000000000000081525060200191505060405180910390fd5b612536846000015484600201546133b2565b8111156125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5661742f6e6f742d736166652d6473740000000000000000000000000000000081525060200191505060405180910390fd5b6125c3836004015483101560008760010154146133eb565b612635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f647573742d737263000000000000000000000000000000000000000081525060200191505060405180910390fd5b61264d836004015482101560008660010154146133eb565b6126bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f647573742d647374000000000000000000000000000000000000000081525060200191505060405180910390fd5b50505050505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a4505050505050565b600a5481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146127ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a5414612832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612a1b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a5414612a93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600260008581526020019081526020016000209050612ab8816001015483613338565b81600101819055506000612ad0826000015484613377565b9050612b1b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613338565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b6a60075482613338565b60078190555050505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b60095481565b612bbc8333613244565b612c2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5661742f6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b612c77600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613304565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d03600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261331e565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b60006020528060005260406000206000915090505481565b60026020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154905085565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60066020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612f54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b612f9d600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261331e565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613029600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261331e565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130786008548261331e565b60088190555061308a6007548261331e565b6007819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b6000339050613118600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613304565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131a4600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613304565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131f360085483613304565b60088190555061320560075483613304565b600781905550505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60006132fc8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161460018060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146133eb565b905092915050565b600082828403915081111561331857600080fd5b92915050565b600082828401915081101561333257600080fd5b92915050565b6000818301905060008212158061334f5750828111155b61335857600080fd5b6000821315806133685750828110155b61337157600080fd5b92915050565b60008183029050600083121561338c57600080fd5b60008214806133a35750828282816133a057fe5b05145b6133ac57600080fd5b92915050565b6000808214806133cf57508282838502925082816133cc57fe5b04145b6133d857600080fd5b92915050565b6000818316905092915050565b6000818317905092915050565b6000818303905060008213158061340f5750828111155b61341857600080fd5b6000821215806134285750828110155b61343157600080fd5b92915050565b604051806040016040528060008152602001600081525090565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160008152509056fea265627a7a723158208a74d6db3d5b0eba259e13b86f201f0fda2be3ffedbc0b4f90a67d87593f4de764736f6c634300050c0032

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101c45760003560e01c80637cdd3fde116100f9578063bb35783b11610097578063dc4d20fa11610071578063dc4d20fa1461096c578063f059212a146109b0578063f24e23eb14610a08578063f37ac61c14610a76576101c4565b8063bb35783b14610848578063bf353dbb146108b6578063d9638d361461090e576101c4565b80639c52a7f1116100d35780639c52a7f11461074a578063a3b22fc41461078e578063b65337df146107d2578063babe8a3f1461082a576101c4565b80637cdd3fde14610652578063870c616d146106aa578063957aa58c1461072c576101c4565b80634538c4eb11610166578063692450091161014057806369245009146104ac5780636c25b346146104b6578063760887031461050e5780637bab3f40146105b0576101c4565b80634538c4eb146103785780636111be2e146103f057806365fae35e14610468576101c4565b80632424be5c116101a25780632424be5c1461028b57806329ae8114146102f45780632d61a3551461032c5780633b6631951461034a576101c4565b80630dca59c1146101c95780631a0b287e146101e7578063214414d514610229575b600080fd5b6101d1610aa4565b6040518082815260200191505060405180910390f35b610227600480360360608110156101fd57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610aaa565b005b6102756004803603604081101561023f57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d58565b6040518082815260200191505060405180910390f35b6102d7600480360360408110156102a157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d7d565b604051808381526020018281526020019250505060405180910390f35b61032a6004803603604081101561030a57600080fd5b810190808035906020019092919080359060200190929190505050610dae565b005b610334610fb5565b6040518082815260200191505060405180910390f35b6103766004803603602081101561036057600080fd5b8101908080359060200190929190505050610fbb565b005b6103da6004803603604081101561038e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061115a565b6040518082815260200191505060405180910390f35b6104666004803603608081101561040657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061117f565b005b6104aa6004803603602081101561047e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611392565b005b6104b461153a565b005b6104f8600480360360208110156104cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061162d565b6040518082815260200191505060405180910390f35b6105ae600480360360c081101561052457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611645565b005b610650600480360360c08110156105c657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611e31565b005b6106a86004803603606081101561066857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612130565b005b61072a600480360360a08110156106c057600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506122cc565b005b610734612700565b6040518082815260200191505060405180910390f35b61078c6004803603602081101561076057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612706565b005b6107d0600480360360208110156107a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128ae565b005b610828600480360360608110156107e857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612967565b005b610832612bac565b6040518082815260200191505060405180910390f35b6108b46004803603606081101561085e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612bb2565b005b6108f8600480360360208110156108cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d80565b6040518082815260200191505060405180910390f35b61093a6004803603602081101561092457600080fd5b8101908080359060200190929190505050612d98565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b6109ae6004803603602081101561098257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dce565b005b6109f2600480360360208110156109c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e88565b6040518082815260200191505060405180910390f35b610a7460048036036060811015610a1e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612ea0565b005b610aa260048036036020811015610a8c57600080fd5b81019080803590602001909291905050506130ca565b005b60075481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a5414610bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f73706f7400000000000000000000000000000000000000000000000000000000821415610c1e57806002600085815260200190815260200160002060020181905550610d1e565b7f6c696e6500000000000000000000000000000000000000000000000000000000821415610c6657806002600085815260200190815260200160002060030181905550610d1d565b7f6475737400000000000000000000000000000000000000000000000000000000821415610cae57806002600085815260200190815260200160002060040181905550610d1c565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5661742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5b5b5961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b6004602052816000526040600020602052806000526040600020600091509150505481565b6003602052816000526040600020602052806000526040600020600091509150508060000154908060010154905082565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e62576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a5414610eda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f4c696e6500000000000000000000000000000000000000000000000000000000821415610f0e5780600981905550610f7c565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5661742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a4505050565b60085481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461106f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60006002600083815260200190815260200160002060010154146110fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5661742f696c6b2d616c72656164792d696e697400000000000000000000000081525060200191505060405180910390fd5b6b033b2e3c9fd0803ce800000060026000838152602001908152602001600020600101819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b6001602052816000526040600020602052806000526040600020600091509150505481565b6111898333613244565b6111fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5661742f6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b6112556004600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613304565b6004600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113036004600086815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261331e565b6004600086815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611446576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a54146114be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146115ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6000600a819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450565b60056020528060005260406000206000915090505481565b6001600a54146116bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b6116c5613437565b6003600088815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180604001604052908160008201548152602001600182015481525050905061173e613451565b600260008981526020019081526020016000206040518060a001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481525050905060008160200151141561180b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5661742f696c6b2d6e6f742d696e69740000000000000000000000000000000081525060200191505060405180910390fd5b611819826000015185613338565b826000018181525050611830826020015184613338565b826020018181525050611847816000015184613338565b8160000181815250506000611860826020015185613377565b90506000611876836020015185602001516133b2565b905061188460075483613338565b6007819055506118c060008613156118bb85606001516118ac876000015188602001516133b2565b111560095460075411156133de565b6133eb565b611932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5661742f6365696c696e672d657863656564656400000000000000000000000081525060200191505060405180910390fd5b611961611947600087131560008912156133de565b611959866000015186604001516133b2565b8311156133eb565b6119d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d73616665000000000000000000000000000000000000000081525060200191505060405180910390fd5b6119f76119e8600087131560008912156133de565b6119f28b33613244565b6133eb565b611a69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5661742f6e6f742d616c6c6f7765642d7500000000000000000000000000000081525060200191505060405180910390fd5b611a806000871315611a7b8a33613244565b6133eb565b611af2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5661742f6e6f742d616c6c6f7765642d7600000000000000000000000000000081525060200191505060405180910390fd5b611b096000861215611b048933613244565b6133eb565b611b7b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5661742f6e6f742d616c6c6f7765642d7700000000000000000000000000000081525060200191505060405180910390fd5b611b93600085602001511484608001518310156133eb565b611c05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f5661742f6475737400000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611c5f600460008c815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054876133f8565b600460008c815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cfc600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613338565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600360008c815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015590505082600260008c81526020019081526020016000206000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040155905050505050505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611ee5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60006003600088815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008981526020019081526020016000209050611f5e826000015485613338565b8260000181905550611f74826001015484613338565b8260010181905550611f8a816000015484613338565b81600001819055506000611fa2826001015485613377565b9050611ffe600460008b815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054866133f8565b600460008b815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061209b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826133f8565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120ea600854826133f8565b6008819055505050505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146121e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b61223e6004600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613338565b6004600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b60006003600087815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006003600088815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006002600089815260200190815260200160002090506123998360000154866133f8565b83600001819055506123af8360010154856133f8565b83600101819055506123c5826000015486613338565b82600001819055506123db826001015485613338565b826001018190555060006123f7846001015483600101546133b2565b9050600061240d846001015484600101546133b2565b905061242b61241c8a33613244565b6124268a33613244565b6133de565b61249d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5661742f6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b6124af856000015484600201546133b2565b821115612524576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5661742f6e6f742d736166652d7372630000000000000000000000000000000081525060200191505060405180910390fd5b612536846000015484600201546133b2565b8111156125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5661742f6e6f742d736166652d6473740000000000000000000000000000000081525060200191505060405180910390fd5b6125c3836004015483101560008760010154146133eb565b612635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f647573742d737263000000000000000000000000000000000000000081525060200191505060405180910390fd5b61264d836004015482101560008660010154146133eb565b6126bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f647573742d647374000000000000000000000000000000000000000081525060200191505060405180910390fd5b50505050505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a4505050505050565b600a5481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146127ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a5414612832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612a1b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a5414612a93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600260008581526020019081526020016000209050612ab8816001015483613338565b81600101819055506000612ad0826000015484613377565b9050612b1b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613338565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b6a60075482613338565b60078190555050505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b60095481565b612bbc8333613244565b612c2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5661742f6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b612c77600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613304565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d03600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261331e565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b60006020528060005260406000206000915090505481565b60026020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154905085565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60066020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612f54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b612f9d600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261331e565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613029600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261331e565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130786008548261331e565b60088190555061308a6007548261331e565b6007819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b6000339050613118600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613304565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131a4600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613304565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131f360085483613304565b60088190555061320560075483613304565b600781905550505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60006132fc8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161460018060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146133eb565b905092915050565b600082828403915081111561331857600080fd5b92915050565b600082828401915081101561333257600080fd5b92915050565b6000818301905060008212158061334f5750828111155b61335857600080fd5b6000821315806133685750828110155b61337157600080fd5b92915050565b60008183029050600083121561338c57600080fd5b60008214806133a35750828282816133a057fe5b05145b6133ac57600080fd5b92915050565b6000808214806133cf57508282838502925082816133cc57fe5b04145b6133d857600080fd5b92915050565b6000818316905092915050565b6000818317905092915050565b6000818303905060008213158061340f5750828111155b61341857600080fd5b6000821215806134285750828110155b61343157600080fd5b92915050565b604051806040016040528060008152602001600081525090565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160008152509056fea265627a7a723158208a74d6db3d5b0eba259e13b86f201f0fda2be3ffedbc0b4f90a67d87593f4de764736f6c634300050c0032

Deployed Bytecode Sourcemap

1008:9560:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1008:9560:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2596:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5396:343;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5396:343:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2372:57;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2372:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2307:58;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2307:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;5184:206;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5184:206:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2652:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5025:153;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5025:153:0;;;;;;;;;;;;;;;;;:::i;:::-;;1414:56;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1414:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5978:248;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;5978:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1094:101;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1094:101:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;5745:62;;;:::i;:::-;;2446:57;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2446:57:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6711:1584;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6711:1584:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9270:473;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9270:473:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5843:129;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5843:129:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8333:898;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;8333:898:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2764:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1201:101;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1201:101:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;1477:70;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1477:70:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;10254:311;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10254:311:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2708:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6232:215;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6232:215:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1049:38;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1049:38:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2242:58;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2242:58:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1553:70;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1553:70:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;2520:57;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2520:57:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10007:217;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10007:217:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9778:223;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9778:223:0;;;;;;;;;;;;;;;;;:::i;:::-;;2596:19;;;;:::o;5396:343::-;1362:1;1341:5;:17;1347:10;1341:17;;;;;;;;;;;;;;;;:22;1333:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5494:1;5486:4;;:9;5478:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5527:14;:4;:14;5523:208;;;5560:4;5543;:9;5548:3;5543:9;;;;;;;;;;;:14;;:21;;;;5523:208;;;5584:14;:4;:14;5580:151;;;5617:4;5600;:9;5605:3;5600:9;;;;;;;;;;;:14;;:21;;;;5580:151;;;5641:14;:4;:14;5637:94;;;5674:4;5657;:9;5662:3;5657:9;;;;;;;;;;;:14;;:21;;;;5637:94;;;5694:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5637:94;5580:151;5523:208;3261:5;3357:3;3351:4;3347:14;3341:4;3334:28;3432:4;3426;3419:18;3524:3;3517:4;3511;3507:15;3500:28;3611:3;3608:1;3601:4;3595;3591:15;3578:37;3927:2;3914:16;3864:2;3851:16;3801:1;3788:15;3753:1;3740:15;3735:3;3731:25;3726:3;3722:35;3661:3;3655:4;3650:327;3078:910;;;;:::o;2372:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2307:58::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5184:206::-;1362:1;1341:5;:17;1347:10;1341:17;;;;;;;;;;;;;;;;:22;1333:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5269:1;5261:4;;:9;5253:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5302:14;:4;:14;5298:84;;;5325:4;5318;:11;;;;5298:84;;;5345:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5298:84;3261:5;3357:3;3351:4;3347:14;3341:4;3334:28;3432:4;3426;3419:18;3524:3;3517:4;3511;3507:15;3500:28;3611:3;3608:1;3601:4;3595;3591:15;3578:37;3927:2;3914:16;3864:2;3851:16;3801:1;3788:15;3753:1;3740:15;3735:3;3731:25;3726:3;3722:35;3661:3;3655:4;3650:327;3078:910;;;:::o;2652:19::-;;;;:::o;5025:153::-;1362:1;1341:5;:17;1347:10;1341:17;;;;;;;;;;;;;;;;:22;1333:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5108:1;5090:4;:9;5095:3;5090:9;;;;;;;;;;;:14;;;:19;5082:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5162:8;5145:4;:9;5150:3;5145:9;;;;;;;;;;;:14;;:25;;;;3261:5;3357:3;3351:4;3347:14;3341:4;3334:28;3432:4;3426;3419:18;3524:3;3517:4;3511;3507:15;3500:28;3611:3;3608:1;3601:4;3595;3591:15;3578:37;3927:2;3914:16;3864:2;3851:16;3801:1;3788:15;3753:1;3740:15;3735:3;3731:25;3726:3;3722:35;3661:3;3655:4;3650:327;3078:910;;:::o;1414:56::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5978:248::-;6077:21;6082:3;6087:10;6077:4;:21::i;:::-;6069:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6145:23;6149:3;:8;6153:3;6149:8;;;;;;;;;;;:13;6158:3;6149:13;;;;;;;;;;;;;;;;6164:3;6145;:23::i;:::-;6129:3;:8;6133:3;6129:8;;;;;;;;;;;:13;6138:3;6129:13;;;;;;;;;;;;;;;:39;;;;6195:23;6199:3;:8;6203:3;6199:8;;;;;;;;;;;:13;6208:3;6199:13;;;;;;;;;;;;;;;;6214:3;6195;:23::i;:::-;6179:3;:8;6183:3;6179:8;;;;;;;;;;;:13;6188:3;6179:13;;;;;;;;;;;;;;;:39;;;;3261:5;3357:3;3351:4;3347:14;3341:4;3334:28;3432:4;3426;3419:18;3524:3;3517:4;3511;3507:15;3500:28;3611:3;3608:1;3601:4;3595;3591:15;3578:37;3927:2;3914:16;3864:2;3851:16;3801:1;3788:15;3753:1;3740:15;3735:3;3731:25;3726:3;3722:35;3661:3;3655:4;3650:327;3078:910;;;;;:::o;1094:101::-;1362:1;1341:5;:17;1347:10;1341:17;;;;;;;;;;;;;;;;:22;1333:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1158:1;1150:4;;:9;1142:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1191:1;1178:5;:10;1184:3;1178:10;;;;;;;;;;;;;;;:14;;;;3261:5;3357:3;3351:4;3347:14;3341:4;3334:28;3432:4;3426;3419:18;3524:3;3517:4;3511;3507:15;3500:28;3611:3;3608:1;3601:4;3595;3591:15;3578:37;3927:2;3914:16;3864:2;3851:16;3801:1;3788:15;3753:1;3740:15;3735:3;3731:25;3726:3;3722:35;3661:3;3655:4;3650:327;3078:910;;:::o;5745:62::-;1362:1;1341:5;:17;1347:10;1341:17;;;;;;;;;;;;;;;;:22;1333:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5798:1;5791:4;:8;;;;3261:5;3357:3;3351:4;3347:14;3341:4;3334:28;3432:4;3426;3419:18;3524:3;3517:4;3511;3507:15;3500:28;3611:3;3608:1;3601:4;3595;3591:15;3578:37;3927:2;3914:16;3864:2;3851:16;3801:1;3788:15;3753:1;3740:15;3735:3;3731:25;3726:3;3722:35;3661:3;3655:4;3650:327;3078:910;:::o;2446:57::-;;;;;;;;;;;;;;;;;:::o;6711:1584::-;6857:1;6849:4;;:9;6841:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6888:14;;:::i;:::-;6905:4;:7;6910:1;6905:7;;;;;;;;;;;:10;6913:1;6905:10;;;;;;;;;;;;;;;6888:27;;;;;;;;;;;;;;;;;;;;;;;;;;;6926:14;;:::i;:::-;6943:4;:7;6948:1;6943:7;;;;;;;;;;;6926:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7018:1;7006:3;:8;;;:13;;6998:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7063:18;7067:3;:7;;;7076:4;7063:3;:18::i;:::-;7053:3;:7;;:28;;;;;7102:18;7106:3;:7;;;7115:4;7102:3;:18::i;:::-;7092:3;:7;;:28;;;;;7141:18;7145:3;:7;;;7154:4;7141:3;:18::i;:::-;7131:3;:7;;:28;;;;;7172:8;7183:19;7187:3;:8;;;7197:4;7183:3;:19::i;:::-;7172:30;;7213:8;7224:22;7228:3;:8;;;7238:3;:7;;;7224:3;:22::i;:::-;7213:33;;7268:15;7272:4;;7278;7268:3;:15::i;:::-;7257:4;:26;;;;7377:73;7392:1;7384:4;:9;;7395:54;7426:3;:8;;;7400:22;7404:3;:7;;;7413:3;:8;;;7400:3;:22::i;:::-;:34;;7444:4;;7436;;:12;;7395:4;:54::i;:::-;7377:6;:73::i;:::-;7369:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7558:65;7565:26;7578:1;7570:4;:9;;7589:1;7581:4;:9;;7565:4;:26::i;:::-;7600:22;7604:3;:7;;;7613:3;:8;;;7600:3;:22::i;:::-;7593:3;:29;;7558:6;:65::i;:::-;7550:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7720:55;7727:26;7740:1;7732:4;:9;;7751:1;7743:4;:9;;7727:4;:26::i;:::-;7755:19;7760:1;7763:10;7755:4;:19::i;:::-;7720:6;:55::i;:::-;7712:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7852:38;7867:1;7859:4;:9;;7870:19;7875:1;7878:10;7870:4;:19::i;:::-;7852:6;:38::i;:::-;7844:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7961:38;7976:1;7968:4;:9;;7979:19;7984:1;7987:10;7979:4;:19::i;:::-;7961:6;:38::i;:::-;7953:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8093:37;8111:1;8100:3;:7;;;:12;8121:3;:8;;;8114:3;:15;;8093:6;:37::i;:::-;8085:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8168:20;8172:3;:6;8176:1;8172:6;;;;;;;;;;;:9;8179:1;8172:9;;;;;;;;;;;;;;;;8183:4;8168:3;:20::i;:::-;8156:3;:6;8160:1;8156:6;;;;;;;;;;;:9;8163:1;8156:9;;;;;;;;;;;;;;;:32;;;;8211:20;8215:3;:6;8219:1;8215:6;;;;;;;;;;;;;;;;8226:4;8211:3;:20::i;:::-;8199:3;:6;8203:1;8199:6;;;;;;;;;;;;;;;:32;;;;8257:3;8244:4;:7;8249:1;8244:7;;;;;;;;;;;:10;8252:1;8244:10;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;;8284:3;8271:4;:7;8276:1;8271:7;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3057:1;;;;3261:5;3357:3;3351:4;3347:14;3341:4;3334:28;3432:4;3426;3419:18;3524:3;3517:4;3511;3507:15;3500:28;3611:3;3608:1;3601:4;3595;3591:15;3578:37;3927:2;3914:16;3864:2;3851:16;3801:1;3788:15;3753:1;3740:15;3735:3;3731:25;3726:3;3722:35;3661:3;3655:4;3650:327;3078:910;;;;;;;:::o;9270:473::-;1362:1;1341:5;:17;1347:10;1341:17;;;;;;;;;;;;;;;;:22;1333:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9378:15;9396:4;:7;9401:1;9396:7;;;;;;;;;;;:10;9404:1;9396:10;;;;;;;;;;;;;;;9378:28;;9417:15;9435:4;:7;9440:1;9435:7;;;;;;;;;;;9417:25;;9465:18;9469:3;:7;;;9478:4;9465:3;:18::i;:::-;9455:3;:7;;:28;;;;9504:18;9508:3;:7;;;9517:4;9504:3;:18::i;:::-;9494:3;:7;;:28;;;;9543:18;9547:3;:7;;;9556:4;9543:3;:18::i;:::-;9533:3;:7;;:28;;;;9574:8;9585:19;9589:3;:8;;;9599:4;9585:3;:19::i;:::-;9574:30;;9629:20;9633:3;:6;9637:1;9633:6;;;;;;;;;;;:9;9640:1;9633:9;;;;;;;;;;;;;;;;9644:4;9629:3;:20::i;:::-;9617:3;:6;9621:1;9617:6;;;;;;;;;;;:9;9624:1;9617:9;;;;;;;;;;;;;;;:32;;;;9672:20;9676:3;:6;9680:1;9676:6;;;;;;;;;;;;;;;;9687:4;9672:3;:20::i;:::-;9660:3;:6;9664:1;9660:6;;;;;;;;;;;;;;;:32;;;;9715:20;9719:4;;9730;9715:3;:20::i;:::-;9703:4;:32;;;;1397:1;;;3261:5;3357:3;3351:4;3347:14;3341:4;3334:28;3432:4;3426;3419:18;3524:3;3517:4;3511;3507:15;3500:28;3611:3;3608:1;3601:4;3595;3591:15;3578:37;3927:2;3914:16;3864:2;3851:16;3801:1;3788:15;3753:1;3740:15;3735:3;3731:25;3726:3;3722:35;3661:3;3655:4;3650:327;3078:910;;;;;;;:::o;5843:129::-;1362:1;1341:5;:17;1347:10;1341:17;;;;;;;;;;;;;;;;:22;1333:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5941:23;5945:3;:8;5949:3;5945:8;;;;;;;;;;;:13;5954:3;5945:13;;;;;;;;;;;;;;;;5960:3;5941;:23::i;:::-;5925:3;:8;5929:3;5925:8;;;;;;;;;;;:13;5934:3;5925:13;;;;;;;;;;;;;;;:39;;;;3261:5;3357:3;3351:4;3347:14;3341:4;3334:28;3432:4;3426;3419:18;3524:3;3517:4;3511;3507:15;3500:28;3611:3;3608:1;3601:4;3595;3591:15;3578:37;3927:2;3914:16;3864:2;3851:16;3801:1;3788:15;3753:1;3740:15;3735:3;3731:25;3726:3;3722:35;3661:3;3655:4;3650:327;3078:910;;;;:::o;8333:898::-;8431:13;8447:4;:9;8452:3;8447:9;;;;;;;;;;;:14;8457:3;8447:14;;;;;;;;;;;;;;;8431:30;;8472:13;8488:4;:9;8493:3;8488:9;;;;;;;;;;;:14;8498:3;8488:14;;;;;;;;;;;;;;;8472:30;;8513:13;8529:4;:9;8534:3;8529:9;;;;;;;;;;;8513:25;;8559:16;8563:1;:5;;;8570:4;8559:3;:16::i;:::-;8551:1;:5;;:24;;;;8594:16;8598:1;:5;;;8605:4;8594:3;:16::i;:::-;8586:1;:5;;:24;;;;8629:16;8633:1;:5;;;8640:4;8629:3;:16::i;:::-;8621:1;:5;;:24;;;;8664:16;8668:1;:5;;;8675:4;8664:3;:16::i;:::-;8656:1;:5;;:24;;;;8693:9;8705:18;8709:1;:5;;;8716:1;:6;;;8705:3;:18::i;:::-;8693:30;;8734:9;8746:18;8750:1;:5;;;8757:1;:6;;;8746:3;:18::i;:::-;8734:30;;8816:50;8821:21;8826:3;8831:10;8821:4;:21::i;:::-;8844;8849:3;8854:10;8844:4;:21::i;:::-;8816:4;:50::i;:::-;8808:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8943:18;8947:1;:5;;;8954:1;:6;;;8943:3;:18::i;:::-;8935:4;:26;;8927:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9009:18;9013:1;:5;;;9020:1;:6;;;9009:3;:18::i;:::-;9001:4;:26;;8993:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9102:34;9117:1;:6;;;9109:4;:14;;9134:1;9125;:5;;;:10;9102:6;:34::i;:::-;9094:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9172:34;9187:1;:6;;;9179:4;:14;;9204:1;9195;:5;;;:10;9172:6;:34::i;:::-;9164:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3057:1;;;;;3261:5;3357:3;3351:4;3347:14;3341:4;3334:28;3432:4;3426;3419:18;3524:3;3517:4;3511;3507:15;3500:28;3611:3;3608:1;3601:4;3595;3591:15;3578:37;3927:2;3914:16;3864:2;3851:16;3801:1;3788:15;3753:1;3740:15;3735:3;3731:25;3726:3;3722:35;3661:3;3655:4;3650:327;3078:910;;;;;;:::o;2764:19::-;;;;:::o;1201:101::-;1362:1;1341:5;:17;1347:10;1341:17;;;;;;;;;;;;;;;;:22;1333:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:1;1257:4;;:9;1249:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1298:1;1285:5;:10;1291:3;1285:10;;;;;;;;;;;;;;;:14;;;;3261:5;3357:3;3351:4;3347:14;3341:4;3334:28;3432:4;3426;3419:18;3524:3;3517:4;3511;3507:15;3500:28;3611:3;3608:1;3601:4;3595;3591:15;3578:37;3927:2;3914:16;3864:2;3851:16;3801:1;3788:15;3753:1;3740:15;3735:3;3731:25;3726:3;3722:35;3661:3;3655:4;3650:327;3078:910;;:::o;1477:70::-;1543:1;1520:3;:15;1524:10;1520:15;;;;;;;;;;;;;;;:20;1536:3;1520:20;;;;;;;;;;;;;;;:24;;;;3261:5;3357:3;3351:4;3347:14;3341:4;3334:28;3432:4;3426;3419:18;3524:3;3517:4;3511;3507:15;3500:28;3611:3;3608:1;3601:4;3595;3591:15;3578:37;3927:2;3914:16;3864:2;3851:16;3801:1;3788:15;3753:1;3740:15;3735:3;3731:25;3726:3;3722:35;3661:3;3655:4;3650:327;3078:910;;:::o;10254:311::-;1362:1;1341:5;:17;1347:10;1341:17;;;;;;;;;;;;;;;;:22;1333:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10346:1;10338:4;;:9;10330:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10375:15;10393:4;:7;10398:1;10393:7;;;;;;;;;;;10375:25;;10422:19;10426:3;:8;;;10436:4;10422:3;:19::i;:::-;10411:3;:8;;:30;;;;10452:7;10463:18;10467:3;:7;;;10476:4;10463:3;:18::i;:::-;10452:29;;10503:16;10507:3;:6;10511:1;10507:6;;;;;;;;;;;;;;;;10515:3;10503;:16::i;:::-;10492:3;:6;10496:1;10492:6;;;;;;;;;;;;;;;:27;;;;10541:16;10545:4;;10553:3;10541;:16::i;:::-;10530:4;:27;;;;1397:1;;3261:5;3357:3;3351:4;3347:14;3341:4;3334:28;3432:4;3426;3419:18;3524:3;3517:4;3511;3507:15;3500:28;3611:3;3608:1;3601:4;3595;3591:15;3578:37;3927:2;3914:16;3864:2;3851:16;3801:1;3788:15;3753:1;3740:15;3735:3;3731:25;3726:3;3722:35;3661:3;3655:4;3650:327;3078:910;;;;:::o;2708:19::-;;;;:::o;6232:215::-;6318:21;6323:3;6328:10;6318:4;:21::i;:::-;6310:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6381:18;6385:3;:8;6389:3;6385:8;;;;;;;;;;;;;;;;6395:3;6381;:18::i;:::-;6370:3;:8;6374:3;6370:8;;;;;;;;;;;;;;;:29;;;;6421:18;6425:3;:8;6429:3;6425:8;;;;;;;;;;;;;;;;6435:3;6421;:18::i;:::-;6410:3;:8;6414:3;6410:8;;;;;;;;;;;;;;;:29;;;;3261:5;3357:3;3351:4;3347:14;3341:4;3334:28;3432:4;3426;3419:18;3524:3;3517:4;3511;3507:15;3500:28;3611:3;3608:1;3601:4;3595;3591:15;3578:37;3927:2;3914:16;3864:2;3851:16;3801:1;3788:15;3753:1;3740:15;3735:3;3731:25;3726:3;3722:35;3661:3;3655:4;3650:327;3078:910;;;;:::o;1049:38::-;;;;;;;;;;;;;;;;;:::o;2242:58::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1553:70::-;1619:1;1596:3;:15;1600:10;1596:15;;;;;;;;;;;;;;;:20;1612:3;1596:20;;;;;;;;;;;;;;;:24;;;;3261:5;3357:3;3351:4;3347:14;3341:4;3334:28;3432:4;3426;3419:18;3524:3;3517:4;3511;3507:15;3500:28;3611:3;3608:1;3601:4;3595;3591:15;3578:37;3927:2;3914:16;3864:2;3851:16;3801:1;3788:15;3753:1;3740:15;3735:3;3731:25;3726:3;3722:35;3661:3;3655:4;3650:327;3078:910;;:::o;2520:57::-;;;;;;;;;;;;;;;;;:::o;10007:217::-;1362:1;1341:5;:17;1347:10;1341:17;;;;;;;;;;;;;;;;:22;1333:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10092:16;10096:3;:6;10100:1;10096:6;;;;;;;;;;;;;;;;10104:3;10092;:16::i;:::-;10083:3;:6;10087:1;10083:6;;;;;;;;;;;;;;;:25;;;;10128:16;10132:3;:6;10136:1;10132:6;;;;;;;;;;;;;;;;10140:3;10128;:16::i;:::-;10119:3;:6;10123:1;10119:6;;;;;;;;;;;;;;;:25;;;;10164:16;10168:4;;10176:3;10164;:16::i;:::-;10155:4;:25;;;;10200:16;10204:4;;10212:3;10200;:16::i;:::-;10191:4;:25;;;;3261:5;3357:3;3351:4;3347:14;3341:4;3334:28;3432:4;3426;3419:18;3524:3;3517:4;3511;3507:15;3500:28;3611:3;3608:1;3601:4;3595;3591:15;3578:37;3927:2;3914:16;3864:2;3851:16;3801:1;3788:15;3753:1;3740:15;3735:3;3731:25;3726:3;3722:35;3661:3;3655:4;3650:327;3078:910;;;;:::o;9778:223::-;9827:9;9839:10;9827:22;;9869:16;9873:3;:6;9877:1;9873:6;;;;;;;;;;;;;;;;9881:3;9869;:16::i;:::-;9860:3;:6;9864:1;9860:6;;;;;;;;;;;;;;;:25;;;;9905:16;9909:3;:6;9913:1;9909:6;;;;;;;;;;;;;;;;9917:3;9905;:16::i;:::-;9896:3;:6;9900:1;9896:6;;;;;;;;;;;;;;;:25;;;;9941:16;9945:4;;9953:3;9941;:16::i;:::-;9932:4;:25;;;;9977:16;9981:4;;9989:3;9977;:16::i;:::-;9968:4;:25;;;;3057:1;3261:5;3357:3;3351:4;3347:14;3341:4;3334:28;3432:4;3426;3419:18;3524:3;3517:4;3511;3507:15;3500:28;3611:3;3608:1;3601:4;3595;3591:15;3578:37;3927:2;3914:16;3864:2;3851:16;3801:1;3788:15;3753:1;3740:15;3735:3;3731:25;3726:3;3722:35;3661:3;3655:4;3650:327;3078:910;;:::o;1629:133::-;1692:4;1716:38;1730:3;1723:10;;:3;:10;;;1752:1;1735:3;:8;1739:3;1735:8;;;;;;;;;;;;;;;:13;1744:3;1735:13;;;;;;;;;;;;;;;;:18;1716:6;:38::i;:::-;1709:45;;1629:133;;;;:::o;4758:104::-;4810:6;4852:1;4846;4842;:5;4838:9;;;4837:16;;4829:25;;;;;;4758:104;;;;:::o;4648:::-;4700:6;4742:1;4736;4732;:5;4728:9;;;4727:16;;4719:25;;;;;;4648:104;;;;:::o;4133:165::-;4184:6;4216:1;4207;:11;4203:15;;4242:1;4237;:6;;:16;;;;4252:1;4247;:6;;4237:16;4229:25;;;;;;4278:1;4273;:6;;:16;;;;4288:1;4283;:6;;4273:16;4265:25;;;;;;4133:165;;;;:::o;4475:167::-;4526:5;4557:1;4552;4548:10;4544:14;;4587:1;4581;4577:11;;4569:20;;;;;;4613:1;4608;:6;:25;;;;4631:1;4622;4618;:5;;;;;;:15;4608:25;4600:34;;;;;;4475:167;;;;:::o;4868:118::-;4920:6;4952:1;4947;:6;:30;;;;4976:1;4971;4966;4962;:5;4958:9;;;4957:15;;;;;;:20;4947:30;4939:39;;;;;;4868:118;;;;:::o;6566:104::-;6619:6;6660:1;6657;6653:9;6648:14;;6646:17;;;;:::o;6455:105::-;6510:6;6550:1;6547;6544:8;6539:13;;6537:16;;;;:::o;4304:165::-;4355:6;4387:1;4378;:11;4374:15;;4413:1;4408;:6;;:16;;;;4423:1;4418;:6;;4408:16;4400:25;;;;;;4449:1;4444;:6;;:16;;;;4459:1;4454;:6;;4444:16;4436:25;;;;;;4304:165;;;;:::o;1008:9560::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://8a74d6db3d5b0eba259e13b86f201f0fda2be3ffedbc0b4f90a67d87593f4de7

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.