ETH Price: $2,018.28 (+1.19%)

Contract

0x8bcc3380eA18912605Cd4E0C024596e6d0aD5178
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Vest247664702026-03-29 23:15:3520 hrs ago1774826135IN
0x8bcc3380...6d0aD5178
0 ETH0.000200422.1535286
Vest247465002026-03-27 4:26:233 days ago1774585583IN
0x8bcc3380...6d0aD5178
0 ETH0.000157492.05360045
Vest247190892026-03-23 8:41:117 days ago1774255271IN
0x8bcc3380...6d0aD5178
0 ETH0.000196332.10960616
Vest246965332026-03-20 5:11:2310 days ago1773983483IN
0x8bcc3380...6d0aD5178
0 ETH0.000157972.05984447
Vest246722382026-03-16 19:45:5913 days ago1773690359IN
0x8bcc3380...6d0aD5178
0 ETH0.000062620.67289641
Vest246720462026-03-16 19:07:3514 days ago1773688055IN
0x8bcc3380...6d0aD5178
0 ETH0.00002110.22681093
Vest246477062026-03-13 9:39:4717 days ago1773394787IN
0x8bcc3380...6d0aD5178
0 ETH0.000013340.14342334
Vest246466842026-03-13 6:14:1117 days ago1773382451IN
0x8bcc3380...6d0aD5178
0 ETH0.000156052.03472951
Vest246290502026-03-10 19:07:4720 days ago1773169667IN
0x8bcc3380...6d0aD5178
0 ETH0.000007920.08511556
Vest246290262026-03-10 19:02:5920 days ago1773169379IN
0x8bcc3380...6d0aD5178
0 ETH0.000009280.09975472
Vest246290182026-03-10 19:01:2320 days ago1773169283IN
0x8bcc3380...6d0aD5178
0 ETH0.000010570.11357694
Vest246290002026-03-10 18:57:3520 days ago1773169055IN
0x8bcc3380...6d0aD5178
0 ETH0.00001080.11608689
Vest246289872026-03-10 18:54:5920 days ago1773168899IN
0x8bcc3380...6d0aD5178
0 ETH0.000010080.10841629
Vest246288552026-03-10 18:28:3520 days ago1773167315IN
0x8bcc3380...6d0aD5178
0 ETH0.000016990.1826267
Vest246283972026-03-10 16:56:1120 days ago1773161771IN
0x8bcc3380...6d0aD5178
0 ETH0.000027760.29834459
Vest246283832026-03-10 16:53:2320 days ago1773161603IN
0x8bcc3380...6d0aD5178
0 ETH0.000023020.24744574
Vest246283652026-03-10 16:49:4720 days ago1773161387IN
0x8bcc3380...6d0aD5178
0 ETH0.000022540.24219855
Vest246283582026-03-10 16:48:2320 days ago1773161303IN
0x8bcc3380...6d0aD5178
0 ETH0.000024740.26593168
Vest246283472026-03-10 16:46:1120 days ago1773161171IN
0x8bcc3380...6d0aD5178
0 ETH0.00002770.29771128
Vest246240812026-03-10 2:26:5920 days ago1773109619IN
0x8bcc3380...6d0aD5178
0 ETH0.000010120.13201878
Vest246240582026-03-10 2:22:2320 days ago1773109343IN
0x8bcc3380...6d0aD5178
0 ETH0.000012250.13167868
Vest246207232026-03-09 15:10:1121 days ago1773069011IN
0x8bcc3380...6d0aD5178
0 ETH0.000068390.7349
Vest245969602026-03-06 7:34:5924 days ago1772782499IN
0x8bcc3380...6d0aD5178
0 ETH0.000189652.03788609
Vest245964672026-03-06 5:54:4724 days ago1772776487IN
0x8bcc3380...6d0aD5178
0 ETH0.000156072.03498657
Vest245466972026-02-27 7:13:3531 days ago1772176415IN
0x8bcc3380...6d0aD5178
0 ETH0.00015572.0301569
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

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

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xdc1583B6...45095a771
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Vester

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
london EvmVersion, None license

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 2 : Vester.sol
// SPDX-License-Identifier: GNU AGPLv3
pragma solidity 0.8.16;

import {DssVestTransferrable} from "dss-vest/DssVest.sol";

contract Vester is DssVestTransferrable {
    constructor(address _czar, address _gem) DssVestTransferrable(_czar, _gem) {}
}

File 2 of 2 : DssVest.sol
// SPDX-License-Identifier: AGPL-3.0-or-later
//
// DssVest - Token vesting contract
//
// Copyright (C) 2021 Dai Foundation
//
// 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 <http://www.gnu.org/licenses/>.

pragma solidity ^0.8.13;

interface MintLike {
    function mint(address, uint256) external;
}

interface ChainlogLike {
    function getAddress(bytes32) external view returns (address);
}

interface DaiJoinLike {
    function exit(address, uint256) external;
}

interface VatLike {
    function hope(address) external;
    function suck(address, address, uint256) external;
}

interface TokenLike {
    function transferFrom(address, address, uint256) external returns (bool);
}

abstract contract DssVest {

    uint256 public   constant  TWENTY_YEARS = 20 * 365 days;

    uint256 internal locked;

    event Rely(address indexed usr);
    event Deny(address indexed usr);
    event Init(uint256 indexed id, address indexed usr);
    event Vest(uint256 indexed id, uint256 amt);
    event Move(uint256 indexed id, address indexed dst);
    event File(bytes32 indexed what, uint256 data);
    event Yank(uint256 indexed id, uint256 end);
    event Restrict(uint256 indexed id);
    event Unrestrict(uint256 indexed id);
    event Bless(uint256 indexed id);
    event Unbless(uint256 indexed id);


    // --- Auth ---
    mapping (address => uint256) public wards;
    function rely(address _usr) external auth { wards[_usr] = 1; emit Rely(_usr); }
    function deny(address _usr) external auth { wards[_usr] = 0; emit Deny(_usr); }
    modifier auth {
        require(wards[msg.sender] == 1, "DssVest/not-authorized");
        _;
    }

    // --- Mutex  ---
    modifier lock {
        require(locked == 0, "DssVest/system-locked");
        locked = 1;
        _;
        locked = 0;
    }

    struct Award {
        address usr;   // Vesting recipient
        uint48  bgn;   // Start of vesting period  [timestamp]
        uint48  clf;   // The cliff date           [timestamp]
        uint48  fin;   // End of vesting period    [timestamp]
        address mgr;   // A manager address that can yank
        uint8   res;   // Restricted
        uint128 tot;   // Total reward amount
        uint128 rxd;   // Amount of vest claimed
        uint8   bls;   // Blessed (uninterruptible)
    }
    mapping (uint256 => Award) public awards;
    uint256 public ids;

    uint256 public cap; // Maximum per-second issuance token rate

    // Getters to access only to the value desired
    function usr(uint256 _id) external view returns (address) {
        return awards[_id].usr;
    }

    function bgn(uint256 _id) external view returns (uint256) {
        return awards[_id].bgn;
    }

    function clf(uint256 _id) external view returns (uint256) {
        return awards[_id].clf;
    }

    function fin(uint256 _id) external view returns (uint256) {
        return awards[_id].fin;
    }

    function mgr(uint256 _id) external view returns (address) {
        return awards[_id].mgr;
    }

    function res(uint256 _id) external view returns (uint256) {
        return awards[_id].res;
    }

    function tot(uint256 _id) external view returns (uint256) {
        return awards[_id].tot;
    }

    function rxd(uint256 _id) external view returns (uint256) {
        return awards[_id].rxd;
    }

    function bls(uint256 _id) external view returns (uint256) {
        return awards[_id].bls;
    }

    /**
        @dev Base vesting logic contract constructor
    */
    constructor() {
        wards[msg.sender] = 1;
        emit Rely(msg.sender);
    }

    /**
        @dev (Required) Set the per-second token issuance rate.
        @param what  The tag of the value to change (ex. bytes32("cap"))
        @param data  The value to update (ex. cap of 1000 tokens/yr == 1000*WAD/365 days)
    */
    function file(bytes32 what, uint256 data) external auth lock {
        if      (what == "cap")         cap = data;     // The maximum amount of tokens that can be streamed per-second per vest
        else revert("DssVest/file-unrecognized-param");
        emit File(what, data);
    }

    function min(uint256 x, uint256 y) internal pure returns (uint256 z) {
        z = x > y ? y : x;
    }
    function add(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require((z = x + y) >= x, "DssVest/add-overflow");
    }
    function sub(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require((z = x - y) <= x, "DssVest/sub-underflow");
    }
    function mul(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require(y == 0 || (z = x * y) / y == x, "DssVest/mul-overflow");
    }
    function toUint48(uint256 x) internal pure returns (uint48 z) {
        require((z = uint48(x)) == x, "DssVest/uint48-overflow");
    }
    function toUint128(uint256 x) internal pure returns (uint128 z) {
        require((z = uint128(x)) == x, "DssVest/uint128-overflow");
    }

    /**
        @dev Govanance adds a vesting contract
        @param _usr The recipient of the reward
        @param _tot The total amount of the vest
        @param _bgn The starting timestamp of the vest
        @param _tau The duration of the vest (in seconds)
        @param _eta The cliff duration in seconds (i.e. 1 years)
        @param _mgr An optional manager for the contract. Can yank if vesting ends prematurely.
        @return id  The id of the vesting contract
    */
    function _create(address _usr, uint256 _tot, uint256 _bgn, uint256 _tau, uint256 _eta, address _mgr) internal auth lock returns (uint256 id) {
        require(_usr != address(0),                        "DssVest/invalid-user");
        require(_tot > 0,                                  "DssVest/no-vest-total-amount");
        require(_bgn < add(block.timestamp, TWENTY_YEARS), "DssVest/bgn-too-far");
        require(_bgn > sub(block.timestamp, TWENTY_YEARS), "DssVest/bgn-too-long-ago");
        require(_tau > 0,                                  "DssVest/tau-zero");
        require(_tot / _tau <= cap,                        "DssVest/rate-too-high");
        require(_tau <= TWENTY_YEARS,                      "DssVest/tau-too-long");
        require(_eta <= _tau,                              "DssVest/eta-too-long");
        require(ids < type(uint256).max,                   "DssVest/ids-overflow");

        id = ++ids;
        awards[id] = Award({
            usr: _usr,
            bgn: toUint48(_bgn),
            clf: toUint48(add(_bgn, _eta)),
            fin: toUint48(add(_bgn, _tau)),
            tot: toUint128(_tot),
            rxd: 0,
            mgr: _mgr,
            res: 0,
            bls: 0
        });
        emit Init(id, _usr);
    }

    /**
        @dev Govanance adds a vesting contract
        @param _usr The recipient of the reward
        @param _tot The total amount of the vest
        @param _bgn The starting timestamp of the vest
        @param _tau The duration of the vest (in seconds)
        @param _eta The cliff duration in seconds (i.e. 1 years)
        @param _mgr An optional manager for the contract. Can yank if vesting ends prematurely.
        @return id  The id of the vesting contract
    */
    function create(address _usr, uint256 _tot, uint256 _bgn, uint256 _tau, uint256 _eta, address _mgr) external returns (uint256 id) {
        return _create(_usr,_tot,_bgn,_tau,_eta,_mgr);
    }

    /**
        @dev Govanance adds a vesting contract with all options customizable
        @param _usr The recipient of the reward
        @param _tot The total amount of the vest
        @param _bgn The starting timestamp of the vest
        @param _tau The duration of the vest (in seconds)
        @param _eta The cliff duration in seconds (i.e. 1 years)
        @param _mgr An optional manager for the contract. Can yank if vesting ends prematurely.
        @param _res Whether the vesting can be claimed by the usr only
        @param _bls Whether the vesting is uninterruptible
        @return id  The id of the vesting contract
    */
    function create_custom(address _usr, uint256 _tot, uint256 _bgn, uint256 _tau, uint256 _eta, address _mgr, bool _res, bool _bls) external returns (uint256 id) {
        id = _create(_usr,_tot,_bgn,_tau,_eta,_mgr);
        if (_res) { _restrict(id); }
        if (_bls) { _bless(id); }
        return id;
    }

    /**
        @dev Anyone (or only owner of a vesting contract if restricted) calls this to claim all available rewards
        @param _id     The id of the vesting contract
    */
    function vest(uint256 _id) external {
        _vest(_id, type(uint256).max);
    }

    /**
        @dev Anyone (or only owner of a vesting contract if restricted) calls this to claim rewards
        @param _id     The id of the vesting contract
        @param _maxAmt The maximum amount to vest
    */
    function vest(uint256 _id, uint256 _maxAmt) external {
        _vest(_id, _maxAmt);
    }

    /**
        @dev Anyone (or only owner of a vesting contract if restricted) calls this to claim rewards
        @param _id     The id of the vesting contract
        @param _maxAmt The maximum amount to vest
    */
    function _vest(uint256 _id, uint256 _maxAmt) internal lock {
        Award memory _award = awards[_id];
        require(_award.usr != address(0), "DssVest/invalid-award");
        require(_award.res == 0 || _award.usr == msg.sender, "DssVest/only-user-can-claim");
        uint256 amt = unpaid(block.timestamp, _award.bgn, _award.clf, _award.fin, _award.tot, _award.rxd);
        amt = min(amt, _maxAmt);
        awards[_id].rxd = toUint128(add(_award.rxd, amt));
        pay(_award.usr, amt);
        emit Vest(_id, amt);
    }

    /**
        @dev amount of tokens accrued, not accounting for tokens paid
        @param _id  The id of the vesting contract
        @return amt The accrued amount
    */
    function accrued(uint256 _id) external view returns (uint256 amt) {
        Award memory _award = awards[_id];
        require(_award.usr != address(0), "DssVest/invalid-award");
        amt = accrued(block.timestamp, _award.bgn, _award.fin, _award.tot);
    }

    /**
        @dev amount of tokens accrued, not accounting for tokens paid
        @param _time The timestamp to perform the calculation
        @param _bgn  The start time of the contract
        @param _fin  The end time of the contract
        @param _tot  The total amount of the contract
        @return amt  The accrued amount
    */
    function accrued(uint256 _time, uint48 _bgn, uint48 _fin, uint128 _tot) internal pure returns (uint256 amt) {
        if (_time < _bgn) {
            amt = 0;
        } else if (_time >= _fin) {
            amt = _tot;
        } else {
            amt = mul(_tot, sub(_time, _bgn)) / sub(_fin, _bgn); // 0 <= amt < _award.tot
        }
    }

    /**
        @dev return the amount of vested, claimable GEM for a given ID
        @param _id  The id of the vesting contract
        @return amt The claimable amount
    */
    function unpaid(uint256 _id) external view returns (uint256 amt) {
        Award memory _award = awards[_id];
        require(_award.usr != address(0), "DssVest/invalid-award");
        amt = unpaid(block.timestamp, _award.bgn, _award.clf, _award.fin, _award.tot, _award.rxd);
    }

    /**
        @dev amount of tokens accrued, not accounting for tokens paid
        @param _time The timestamp to perform the calculation
        @param _bgn  The start time of the contract
        @param _clf  The timestamp of the cliff
        @param _fin  The end time of the contract
        @param _tot  The total amount of the contract
        @param _rxd  The number of gems received
        @return amt  The claimable amount
    */
    function unpaid(uint256 _time, uint48 _bgn, uint48 _clf, uint48 _fin, uint128 _tot, uint128 _rxd) internal pure returns (uint256 amt) {
        amt = _time < _clf ? 0 : sub(accrued(_time, _bgn, _fin, _tot), _rxd);
    }

    /**
        @dev Allows governance or the owner to restrict vesting to the owner only
        @param _id The id of the vesting contract
    */
    function _restrict(uint256 _id) internal lock {
        address usr_ = awards[_id].usr;
        require(usr_ != address(0), "DssVest/invalid-award");
        require(wards[msg.sender] == 1 || usr_ == msg.sender, "DssVest/not-authorized");
        awards[_id].res = 1;
        emit Restrict(_id);
    }

    /**
        @dev Allows governance or the owner to restrict vesting to the owner only
        @param _id The id of the vesting contract
    */
    function restrict(uint256 _id) external {
        _restrict(_id);
    }

    /**
        @dev Make vesting uninterruptible
        @param _id The id of the vesting contract
    */
    function _bless(uint256 _id) internal lock {
        address usr_ = awards[_id].usr;
        require(usr_ != address(0), "DssVest/invalid-award");
        require(wards[msg.sender] == 1, "DssVest/not-authorized");
        awards[_id].bls = 1;
        emit Bless(_id);
    }

    /**
        @dev Make vesting uninterruptible
        @param _id The id of the vesting contract
    */
    function bless(uint256 _id) external {
        _bless(_id);
    }

    /**
        @dev Make vesting interruptible
        @param _id The id of the vesting contract
    */
    function unbless(uint256 _id) external lock {
        address usr_ = awards[_id].usr;
        require(usr_ != address(0), "DssVest/invalid-award");
        require(wards[msg.sender] == 1, "DssVest/not-authorized");
        awards[_id].bls = 0;
        emit Unbless(_id);
    }

    /**
        @dev Allows governance or the owner to enable permissionless vesting
        @param _id The id of the vesting contract
    */
    function unrestrict(uint256 _id) external lock {
        address usr_ = awards[_id].usr;
        require(usr_ != address(0), "DssVest/invalid-award");
        require(wards[msg.sender] == 1 || usr_ == msg.sender, "DssVest/not-authorized");
        awards[_id].res = 0;
        emit Unrestrict(_id);
    }

    /**
        @dev Allows governance or the manager to remove a vesting contract immediately
        @param _id The id of the vesting contract
    */
    function yank(uint256 _id) external {
        _yank(_id, block.timestamp);
    }

    /**
        @dev Allows governance or the manager to remove a vesting contract at a future time
        @param _id  The id of the vesting contract
        @param _end A scheduled time to end the vest
    */
    function yank(uint256 _id, uint256 _end) external {
        _yank(_id, _end);
    }

    /**
        @dev Allows governance or the manager to end pre-maturely a vesting contract
        @param _id  The id of the vesting contract
        @param _end A scheduled time to end the vest
    */
    function _yank(uint256 _id, uint256 _end) internal lock {
        require(wards[msg.sender] == 1 || awards[_id].mgr == msg.sender, "DssVest/not-authorized");
        Award memory _award = awards[_id];
        require(_award.usr != address(0), "DssVest/invalid-award");
        require(_award.bls == 0, "DssVest/no-yanking-blessed");
        if (_end < block.timestamp) {
            _end = block.timestamp;
        }
        if (_end < _award.fin) {
            uint48 end = toUint48(_end);
            awards[_id].fin = end;
            if (end < _award.bgn) {
                awards[_id].bgn = end;
                awards[_id].clf = end;
                awards[_id].tot = 0;
            } else if (end < _award.clf) {
                awards[_id].clf = end;
                awards[_id].tot = 0;
            } else {
                awards[_id].tot = toUint128(
                                    add(
                                        unpaid(_end, _award.bgn, _award.clf, _award.fin, _award.tot, _award.rxd),
                                        _award.rxd
                                    )
                                );
            }
        }

        emit Yank(_id, _end);
    }

    /**
        @dev Allows owner to move a contract to a different address
        @param _id  The id of the vesting contract
        @param _dst The address to send ownership of the contract to
    */
    function move(uint256 _id, address _dst) external lock {
        require(awards[_id].usr == msg.sender, "DssVest/only-user-can-move");
        require(_dst != address(0), "DssVest/zero-address-invalid");
        awards[_id].usr = _dst;
        emit Move(_id, _dst);
    }

    /**
        @dev Return true if a contract is valid
        @param _id The id of the vesting contract
        @return isValid True for valid contract
    */
    function valid(uint256 _id) external view returns (bool isValid) {
        isValid = awards[_id].rxd < awards[_id].tot;
    }

    /**
        @dev Override this to implement payment logic.
        @param _guy The payment target.
        @param _amt The payment amount. [units are implementation-specific]
    */
    function pay(address _guy, uint256 _amt) virtual internal;
}

contract DssVestMintable is DssVest {

    MintLike public immutable gem;

    /**
        @dev This contract must be authorized to 'mint' on the token
        @param _gem The contract address of the mintable token
    */
    constructor(address _gem) DssVest() {
        require(_gem != address(0), "DssVest/Invalid-token-address");
        gem = MintLike(_gem);
    }

    /**
        @dev Override pay to handle mint logic
        @param _guy The recipient of the minted token
        @param _amt The amount of token units to send to the _guy
    */
    function pay(address _guy, uint256 _amt) override internal {
        gem.mint(_guy, _amt);
    }
}

contract DssVestSuckable is DssVest {

    uint256 internal constant RAY = 10**27;

    ChainlogLike public immutable chainlog;
    VatLike      public immutable vat;
    DaiJoinLike  public immutable daiJoin;

    /**
        @dev This contract must be authorized to 'suck' on the vat
        @param _chainlog The contract address of the MCD chainlog
    */
    constructor(address _chainlog) DssVest() {
        require(_chainlog != address(0), "DssVest/Invalid-chainlog-address");
        ChainlogLike chainlog_ = chainlog = ChainlogLike(_chainlog);
        VatLike vat_ = vat = VatLike(chainlog_.getAddress("MCD_VAT"));
        DaiJoinLike daiJoin_ = daiJoin = DaiJoinLike(chainlog_.getAddress("MCD_JOIN_DAI"));

        vat_.hope(address(daiJoin_));
    }

    /**
        @dev Override pay to handle suck logic
        @param _guy The recipient of the ERC-20 Dai
        @param _amt The amount of Dai to send to the _guy [WAD]
    */
    function pay(address _guy, uint256 _amt) override internal {
        vat.suck(chainlog.getAddress("MCD_VOW"), address(this), mul(_amt, RAY));
        daiJoin.exit(_guy, _amt);
    }
}

/*
    Transferrable token DssVest. Can be used to enable streaming payments of
     any arbitrary token from an address (i.e. CU multisig) to individual
     contributors.
*/
contract DssVestTransferrable is DssVest {

    address   public immutable czar;
    TokenLike public immutable gem;

    /**
        @dev This contract must be approved for transfer of the gem on the czar
        @param _czar The owner of the tokens to be distributed
        @param _gem  The token to be distributed
    */
    constructor(address _czar, address _gem) DssVest() {
        require(_czar != address(0), "DssVest/Invalid-distributor-address");
        require(_gem  != address(0), "DssVest/Invalid-token-address");
        czar = _czar;
        gem  = TokenLike(_gem);
    }

    /**
        @dev Override pay to handle transfer logic
        @param _guy The recipient of the ERC-20 Dai
        @param _amt The amount of gem to send to the _guy (in native token units)
    */
    function pay(address _guy, uint256 _amt) override internal {
        require(gem.transferFrom(czar, _guy, _amt));
    }
}

Settings
{
  "remappings": [
    "ds-test/=lib/dss-vest/lib/ds-test/src/",
    "dss-vest/=lib/dss-vest/src/",
    "forge-std/=lib/forge-std/src/",
    "semitransferable-token/=lib/semitransferable-token/src/",
    "solmate/=lib/semitransferable-token/lib/solmate/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "bytecodeHash": "ipfs"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "evmVersion": "london",
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_czar","type":"address"},{"internalType":"address","name":"_gem","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Bless","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Deny","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"data","type":"uint256"}],"name":"File","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Init","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"dst","type":"address"}],"name":"Move","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Rely","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Restrict","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Unbless","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Unrestrict","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amt","type":"uint256"}],"name":"Vest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"end","type":"uint256"}],"name":"Yank","type":"event"},{"inputs":[],"name":"TWENTY_YEARS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"accrued","outputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"awards","outputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint48","name":"bgn","type":"uint48"},{"internalType":"uint48","name":"clf","type":"uint48"},{"internalType":"uint48","name":"fin","type":"uint48"},{"internalType":"address","name":"mgr","type":"address"},{"internalType":"uint8","name":"res","type":"uint8"},{"internalType":"uint128","name":"tot","type":"uint128"},{"internalType":"uint128","name":"rxd","type":"uint128"},{"internalType":"uint8","name":"bls","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"bgn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"bless","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"bls","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"clf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_usr","type":"address"},{"internalType":"uint256","name":"_tot","type":"uint256"},{"internalType":"uint256","name":"_bgn","type":"uint256"},{"internalType":"uint256","name":"_tau","type":"uint256"},{"internalType":"uint256","name":"_eta","type":"uint256"},{"internalType":"address","name":"_mgr","type":"address"}],"name":"create","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_usr","type":"address"},{"internalType":"uint256","name":"_tot","type":"uint256"},{"internalType":"uint256","name":"_bgn","type":"uint256"},{"internalType":"uint256","name":"_tau","type":"uint256"},{"internalType":"uint256","name":"_eta","type":"uint256"},{"internalType":"address","name":"_mgr","type":"address"},{"internalType":"bool","name":"_res","type":"bool"},{"internalType":"bool","name":"_bls","type":"bool"}],"name":"create_custom","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"czar","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_usr","type":"address"}],"name":"deny","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"file","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"fin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gem","outputs":[{"internalType":"contract TokenLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ids","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"mgr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"address","name":"_dst","type":"address"}],"name":"move","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_usr","type":"address"}],"name":"rely","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"res","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"restrict","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"rxd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"tot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"unbless","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"unpaid","outputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"unrestrict","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"usr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"valid","outputs":[{"internalType":"bool","name":"isValid","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"vest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_maxAmt","type":"uint256"}],"name":"vest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"yank","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_end","type":"uint256"}],"name":"yank","outputs":[],"stateMutability":"nonpayable","type":"function"}]

0x60c06040523480156200001157600080fd5b50604051620022783803806200227883398101604081905262000034916200016d565b33600081815260016020819052604080832091909155518492849290917fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a26001600160a01b038216620000dd5760405162461bcd60e51b815260206004820152602360248201527f447373566573742f496e76616c69642d6469737472696275746f722d6164647260448201526265737360e81b60648201526084015b60405180910390fd5b6001600160a01b038116620001355760405162461bcd60e51b815260206004820152601d60248201527f447373566573742f496e76616c69642d746f6b656e2d616464726573730000006044820152606401620000d4565b6001600160a01b039182166080521660a05250620001a59050565b80516001600160a01b03811681146200016857600080fd5b919050565b600080604083850312156200018157600080fd5b6200018c8362000150565b91506200019c6020840162000150565b90509250929050565b60805160a05161209f620001d9600039600081816103470152611ccb01526000818161021a0152611c94015261209f6000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c8063892de51d1161011a578063d8a8e03a116100ad578063e529780d1161007c578063e529780d14610570578063e7657e151461059b578063f3d34188146105a4578063f52981f4146105b7578063fc5a5b63146105ca57600080fd5b8063d8a8e03a146104e3578063db64ff8f146104f6578063dc2c788f14610509578063e054720f1461053c57600080fd5b8063bf8712c5116100e9578063bf8712c514610415578063c659cd451461045e578063cdf4349714610487578063d4e8fd2e146104b657600080fd5b8063892de51d146103a25780639c52a7f1146103cf578063bb7c46f3146103e2578063bf353dbb146103f557600080fd5b8063509aaa1d116101925780636a760b80116101615780636a760b801461032f5780637bd2bea7146103425780637d8d270214610369578063876908731461037c57600080fd5b8063509aaa1d146102eb57806353e8863d146102fe57806360fb494b1461031157806365fae35e1461031c57600080fd5b806326e027f1116101ce57806326e027f1146102a957806329ae8114146102bc578063355274ea146102cf5780633c433d5f146102d857600080fd5b806307079c24146102005780631a8d3a6c1461021557806321f6c0cf1461025957806324cada9114610296575b600080fd5b61021361020e366004611da8565b6106c0565b005b61023c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610288610267366004611da8565b600090815260026020526040902054600160a01b900465ffffffffffff1690565b604051908152602001610250565b6102886102a4366004611de6565b61079b565b6102136102b7366004611da8565b6107d7565b6102136102ca366004611e67565b6107e4565b61028860045481565b6102136102e6366004611da8565b6108db565b6102136102f9366004611e67565b6108e4565b61028861030c366004611da8565b6108f2565b610288632598060081565b61021361032a366004611e89565b6109de565b61021361033d366004611da8565b610a55565b61023c7f000000000000000000000000000000000000000000000000000000000000000081565b610213610377366004611da8565b610a61565b61028861038a366004611da8565b60009081526002602052604090206003015460ff1690565b6102886103b0366004611da8565b600090815260026020819052604090912001546001600160801b031690565b6102136103dd366004611e89565b610b49565b6102136103f0366004611e67565b610bbd565b610288610403366004611e89565b60016020526000908152604090205481565b61044e610423366004611da8565b600090815260026020819052604090912001546001600160801b03808216600160801b909204161090565b6040519015158152602001610250565b61023c61046c366004611da8565b6000908152600260205260409020546001600160a01b031690565b610288610495366004611da8565b600090815260026020526040902054600160d01b900465ffffffffffff1690565b6102886104c4366004611da8565b600090815260026020526040902060010154600160d01b900460ff1690565b6102136104f1366004611ea4565b610bc7565b610288610504366004611ed0565b610d05565b61023c610517366004611da8565b600090815260026020526040902060010154600160301b90046001600160a01b031690565b61028861054a366004611da8565b60009081526002602081905260409091200154600160801b90046001600160801b031690565b61028861057e366004611da8565b60009081526002602052604090206001015465ffffffffffff1690565b61028860035481565b6102136105b2366004611da8565b610d20565b6102886105c5366004611da8565b610d29565b6106556105d8366004611da8565b600260208190526000918252604090912080546001820154928201546003909201546001600160a01b038083169465ffffffffffff600160a01b8504811695600160d01b9586900482169591831694600160301b84049094169360ff929093048216926001600160801b0380831693600160801b90930416911689565b604080516001600160a01b039a8b16815265ffffffffffff998a1660208201529789169088015296909416606086015295909116608084015260ff90811660a08401526001600160801b0394851660c0840152931660e0820152911661010082015261012001610250565b600054156106e95760405162461bcd60e51b81526004016106e090611f28565b60405180910390fd5b60016000908155818152600260205260409020546001600160a01b0316806107235760405162461bcd60e51b81526004016106e090611f57565b33600090815260016020819052604090912054146107535760405162461bcd60e51b81526004016106e090611f86565b600082815260026020526040808220600301805460ff191690555183917f028f3fd71c0ab977798420b1a28086f1c93daa66fdb9d3ba5b52ba1e94564d1391a2505060008055565b60006107ab898989898989610e04565b905082156107bc576107bc816112e5565b81156107cb576107cb816113d3565b98975050505050505050565b6107e181426114a8565b50565b33600090815260016020819052604090912054146108145760405162461bcd60e51b81526004016106e090611f86565b600054156108345760405162461bcd60e51b81526004016106e090611f28565b60016000556206361760ec1b829003610851576004819055610899565b60405162461bcd60e51b815260206004820152601f60248201527f447373566573742f66696c652d756e7265636f676e697a65642d706172616d0060448201526064016106e0565b817fe986e40cc8c151830d4f61050f4fb2e4add8567caad2d5f5496f9158e91fe4c7826040516108cb91815260200190565b60405180910390a2505060008055565b6107e1816112e5565b6108ee82826114a8565b5050565b600081815260026020818152604080842081516101208101835281546001600160a01b0380821680845265ffffffffffff600160a01b8404811697850197909752600160d01b9283900487169584019590955260018401549586166060840152600160301b860416608083015260ff9404841660a0820152938101546001600160801b0380821660c0870152600160801b9091041660e0850152600301549091166101008301526109b55760405162461bcd60e51b81526004016106e090611f57565b6109d7428260200151836040015184606001518560c001518660e00151611816565b9392505050565b3360009081526001602081905260409091205414610a0e5760405162461bcd60e51b81526004016106e090611f86565b6001600160a01b038116600081815260016020819052604080832091909155517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b6107e181600019611857565b60005415610a815760405162461bcd60e51b81526004016106e090611f28565b60016000908155818152600260205260409020546001600160a01b031680610abb5760405162461bcd60e51b81526004016106e090611f57565b336000908152600160208190526040909120541480610ae257506001600160a01b03811633145b610afe5760405162461bcd60e51b81526004016106e090611f86565b600082815260026020526040808220600101805460ff60d01b191690555183917f3d1b575f06b2d660af77eec35d9b3ffcfa956b6c1fdbc840992d4b03b03e622b91a2505060008055565b3360009081526001602081905260409091205414610b795760405162461bcd60e51b81526004016106e090611f86565b6001600160a01b038116600081815260016020526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b6108ee8282611857565b60005415610be75760405162461bcd60e51b81526004016106e090611f28565b60016000908155828152600260205260409020546001600160a01b03163314610c525760405162461bcd60e51b815260206004820152601a60248201527f447373566573742f6f6e6c792d757365722d63616e2d6d6f766500000000000060448201526064016106e0565b6001600160a01b038116610ca85760405162461bcd60e51b815260206004820152601c60248201527f447373566573742f7a65726f2d616464726573732d696e76616c69640000000060448201526064016106e0565b60008281526002602052604080822080546001600160a01b0319166001600160a01b0385169081179091559051909184917f8ceddd02f4fb8ef0d5d6212cf4c91d59d366e04b977e8b2b944168d2a6d850819190a3505060008055565b6000610d15878787878787610e04565b979650505050505050565b6107e1816113d3565b600081815260026020818152604080842081516101208101835281546001600160a01b0380821680845265ffffffffffff600160a01b8404811697850197909752600160d01b9283900487169584019590955260018401549586166060840152600160301b860416608083015260ff9404841660a0820152938101546001600160801b0380821660c0870152600160801b9091041660e085015260030154909116610100830152610dec5760405162461bcd60e51b81526004016106e090611f57565b6109d742826020015183606001518460c00151611a75565b33600090815260016020819052604082205414610e335760405162461bcd60e51b81526004016106e090611f86565b60005415610e535760405162461bcd60e51b81526004016106e090611f28565b60016000556001600160a01b038716610ea55760405162461bcd60e51b81526020600482015260146024820152732239b9ab32b9ba17b4b73b30b634b216bab9b2b960611b60448201526064016106e0565b60008611610ef55760405162461bcd60e51b815260206004820152601c60248201527f447373566573742f6e6f2d766573742d746f74616c2d616d6f756e740000000060448201526064016106e0565b610f03426325980600611b01565b8510610f475760405162461bcd60e51b81526020600482015260136024820152722239b9ab32b9ba17b133b716ba37b796b330b960691b60448201526064016106e0565b610f55426325980600611b5c565b8511610fa35760405162461bcd60e51b815260206004820152601860248201527f447373566573742f62676e2d746f6f2d6c6f6e672d61676f000000000000000060448201526064016106e0565b60008411610fe65760405162461bcd60e51b815260206004820152601060248201526f447373566573742f7461752d7a65726f60801b60448201526064016106e0565b600454610ff38588611fcc565b11156110395760405162461bcd60e51b8152602060048201526015602482015274088e6e6accae6e85ee4c2e8ca5ae8dede5ad0d2ced605b1b60448201526064016106e0565b63259806008411156110845760405162461bcd60e51b8152602060048201526014602482015273447373566573742f7461752d746f6f2d6c6f6e6760601b60448201526064016106e0565b838311156110cb5760405162461bcd60e51b8152602060048201526014602482015273447373566573742f6574612d746f6f2d6c6f6e6760601b60448201526064016106e0565b600019600354106111155760405162461bcd60e51b8152602060048201526014602482015273447373566573742f6964732d6f766572666c6f7760601b60448201526064016106e0565b60036000815461112490611fee565b9190508190559050604051806101200160405280886001600160a01b0316815260200161115087611bb2565b65ffffffffffff16815260200161116f61116a8887611b01565b611bb2565b65ffffffffffff16815260200161118961116a8888611b01565b65ffffffffffff1681526001600160a01b0384166020820152600060408201526060016111b588611c0f565b6001600160801b03908116825260006020808401829052604093840182905285825260028082528483208651815493880151888801516001600160a01b039283166001600160d01b031996871617600160a01b65ffffffffffff93841602176001600160d01b0316600160d01b918316820217845560608a015160018501805460808d015160a08e015193909516981697909717600160301b938516939093029290921760ff60d01b191660ff9283169091021790945560c088015160e0890151908716600160801b91909716029590951791810191909155610100909501516003909501805460ff1916959091169490941790935590519089169183917f2e3cc5298d3204a0f0fc2be0f6fdefcef002025f4c75caf950b23e6cfbfb78d09190a3600080559695505050505050565b600054156113055760405162461bcd60e51b81526004016106e090611f28565b60016000908155818152600260205260409020546001600160a01b03168061133f5760405162461bcd60e51b81526004016106e090611f57565b33600090815260016020819052604090912054148061136657506001600160a01b03811633145b6113825760405162461bcd60e51b81526004016106e090611f86565b600082815260026020526040808220600101805460ff60d01b1916600160d01b1790555183917f9247a2bf1b75bc397d4043d99b9cebce531548a01dbb56a5d4c5f5ca26051e8d91a2505060008055565b600054156113f35760405162461bcd60e51b81526004016106e090611f28565b60016000908155818152600260205260409020546001600160a01b03168061142d5760405162461bcd60e51b81526004016106e090611f57565b336000908152600160208190526040909120541461145d5760405162461bcd60e51b81526004016106e090611f86565b600082815260026020526040808220600301805460ff191660011790555183917f7f523e15b3feb7bbd0ee183627685fbe452b55efd91b1923a88f94abb36d362d91a2505060008055565b600054156114c85760405162461bcd60e51b81526004016106e090611f28565b600160008181553381526020829052604090205414806115085750600082815260026020526040902060010154600160301b90046001600160a01b031633145b6115245760405162461bcd60e51b81526004016106e090611f86565b60008281526002602081815260409283902083516101208101855281546001600160a01b0380821680845265ffffffffffff600160a01b8404811696850196909652600160d01b9283900486169784019790975260018401549485166060840152600160301b850416608083015260ff9304831660a0820152928101546001600160801b0380821660c0860152600160801b9091041660e08401526003015416610100820152906115e75760405162461bcd60e51b81526004016106e090611f57565b61010081015160ff161561163d5760405162461bcd60e51b815260206004820152601a60248201527f447373566573742f6e6f2d79616e6b696e672d626c657373656400000000000060448201526064016106e0565b42821015611649574291505b806060015165ffffffffffff168210156117d357600061166883611bb2565b6000858152600260209081526040909120600101805465ffffffffffff191665ffffffffffff8481169182179092559185015192935091909116111561170257600084815260026020819052604090912080546001600160a01b0316600160a01b65ffffffffffff85169081026001600160d01b031691909117600160d01b919091021781550180546001600160801b03191690556117d1565b816040015165ffffffffffff168165ffffffffffff16101561176057600084815260026020819052604090912080546001600160d01b0316600160d01b65ffffffffffff8516021781550180546001600160801b03191690556117d1565b6117a061179b611788858560200151866040015187606001518860c001518960e00151611816565b8460e001516001600160801b0316611b01565b611c0f565b60008581526002602081905260409091200180546001600160801b0319166001600160801b03929092169190911790555b505b827f6f2a3ed78a3066d89360b6c89e52bf3313f52e859401a3ea5fa0f033fd540c3c8360405161180591815260200190565b60405180910390a250506000805550565b60008465ffffffffffff16871061184a5761184561183688888787611a75565b836001600160801b0316611b5c565b610d15565b6000979650505050505050565b600054156118775760405162461bcd60e51b81526004016106e090611f28565b600160008181558381526002602081815260409283902083516101208101855281546001600160a01b03808216808452600160a01b830465ffffffffffff90811696850196909652600160d01b92839004861697840197909752968301549384166060830152600160301b840490961660808201529490910460ff90811660a0860152918101546001600160801b0380821660c0870152600160801b9091041660e085015260030154166101008301526119435760405162461bcd60e51b81526004016106e090611f57565b60a081015160ff161580611960575080516001600160a01b031633145b6119ac5760405162461bcd60e51b815260206004820152601b60248201527f447373566573742f6f6e6c792d757365722d63616e2d636c61696d000000000060448201526064016106e0565b60006119d0428360200151846040015185606001518660c001518760e00151611816565b90506119dc8184611c68565b90506119f861179b8360e001516001600160801b031683611b01565b60008581526002602081905260409091200180546001600160801b03928316600160801b0292169190911790558151611a319082611c7d565b837fa2906882572b0e9dfe893158bb064bc308eb1bd87d1da481850f9d17fc29384782604051611a6391815260200190565b60405180910390a25050600080555050565b60008365ffffffffffff16851015611a8f57506000611af9565b8265ffffffffffff168510611aae57506001600160801b038116611af9565b611ac88365ffffffffffff168565ffffffffffff16611b5c565b611aec836001600160801b0316611ae7888865ffffffffffff16611b5c565b611d41565b611af69190611fcc565b90505b949350505050565b600082611b0e8382612007565b9150811015611b565760405162461bcd60e51b8152602060048201526014602482015273447373566573742f6164642d6f766572666c6f7760601b60448201526064016106e0565b92915050565b600082611b69838261201a565b9150811115611b565760405162461bcd60e51b8152602060048201526015602482015274447373566573742f7375622d756e646572666c6f7760581b60448201526064016106e0565b8065ffffffffffff81168114611c0a5760405162461bcd60e51b815260206004820152601760248201527f447373566573742f75696e7434382d6f766572666c6f7700000000000000000060448201526064016106e0565b919050565b806001600160801b0381168114611c0a5760405162461bcd60e51b815260206004820152601860248201527f447373566573742f75696e743132382d6f766572666c6f77000000000000000060448201526064016106e0565b6000818311611c7757826109d7565b50919050565b6040516323b872dd60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301528381166024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906064016020604051808303816000875af1158015611d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d38919061202d565b6108ee57600080fd5b6000811580611d6557508282611d57818361204a565b9250611d639083611fcc565b145b611b565760405162461bcd60e51b8152602060048201526014602482015273447373566573742f6d756c2d6f766572666c6f7760601b60448201526064016106e0565b600060208284031215611dba57600080fd5b5035919050565b80356001600160a01b0381168114611c0a57600080fd5b80151581146107e157600080fd5b600080600080600080600080610100898b031215611e0357600080fd5b611e0c89611dc1565b975060208901359650604089013595506060890135945060808901359350611e3660a08a01611dc1565b925060c0890135611e4681611dd8565b915060e0890135611e5681611dd8565b809150509295985092959890939650565b60008060408385031215611e7a57600080fd5b50508035926020909101359150565b600060208284031215611e9b57600080fd5b6109d782611dc1565b60008060408385031215611eb757600080fd5b82359150611ec760208401611dc1565b90509250929050565b60008060008060008060c08789031215611ee957600080fd5b611ef287611dc1565b955060208701359450604087013593506060870135925060808701359150611f1c60a08801611dc1565b90509295509295509295565b602080825260159082015274111cdcd5995cdd0bdcde5cdd195b4b5b1bd8dad959605a1b604082015260600190565b602080825260159082015274111cdcd5995cdd0bda5b9d985b1a590b585dd85c99605a1b604082015260600190565b602080825260169082015275111cdcd5995cdd0bdb9bdd0b585d5d1a1bdc9a5e995960521b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082611fe957634e487b7160e01b600052601260045260246000fd5b500490565b60006001820161200057612000611fb6565b5060010190565b80820180821115611b5657611b56611fb6565b81810381811115611b5657611b56611fb6565b60006020828403121561203f57600080fd5b81516109d781611dd8565b600081600019048311821515161561206457612064611fb6565b50029056fea26469706673582212204a292a8dd3c156ae40fe24db4c12ca5fa9af9e70e5a4221776439c986e46808a64736f6c634300081000330000000000000000000000006abfd6139c7c3cc270ee2ce132e309f59caaf6a200000000000000000000000058d97b57bb95320f9a05dc918aef65434969c2b2

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c8063892de51d1161011a578063d8a8e03a116100ad578063e529780d1161007c578063e529780d14610570578063e7657e151461059b578063f3d34188146105a4578063f52981f4146105b7578063fc5a5b63146105ca57600080fd5b8063d8a8e03a146104e3578063db64ff8f146104f6578063dc2c788f14610509578063e054720f1461053c57600080fd5b8063bf8712c5116100e9578063bf8712c514610415578063c659cd451461045e578063cdf4349714610487578063d4e8fd2e146104b657600080fd5b8063892de51d146103a25780639c52a7f1146103cf578063bb7c46f3146103e2578063bf353dbb146103f557600080fd5b8063509aaa1d116101925780636a760b80116101615780636a760b801461032f5780637bd2bea7146103425780637d8d270214610369578063876908731461037c57600080fd5b8063509aaa1d146102eb57806353e8863d146102fe57806360fb494b1461031157806365fae35e1461031c57600080fd5b806326e027f1116101ce57806326e027f1146102a957806329ae8114146102bc578063355274ea146102cf5780633c433d5f146102d857600080fd5b806307079c24146102005780631a8d3a6c1461021557806321f6c0cf1461025957806324cada9114610296575b600080fd5b61021361020e366004611da8565b6106c0565b005b61023c7f0000000000000000000000006abfd6139c7c3cc270ee2ce132e309f59caaf6a281565b6040516001600160a01b0390911681526020015b60405180910390f35b610288610267366004611da8565b600090815260026020526040902054600160a01b900465ffffffffffff1690565b604051908152602001610250565b6102886102a4366004611de6565b61079b565b6102136102b7366004611da8565b6107d7565b6102136102ca366004611e67565b6107e4565b61028860045481565b6102136102e6366004611da8565b6108db565b6102136102f9366004611e67565b6108e4565b61028861030c366004611da8565b6108f2565b610288632598060081565b61021361032a366004611e89565b6109de565b61021361033d366004611da8565b610a55565b61023c7f00000000000000000000000058d97b57bb95320f9a05dc918aef65434969c2b281565b610213610377366004611da8565b610a61565b61028861038a366004611da8565b60009081526002602052604090206003015460ff1690565b6102886103b0366004611da8565b600090815260026020819052604090912001546001600160801b031690565b6102136103dd366004611e89565b610b49565b6102136103f0366004611e67565b610bbd565b610288610403366004611e89565b60016020526000908152604090205481565b61044e610423366004611da8565b600090815260026020819052604090912001546001600160801b03808216600160801b909204161090565b6040519015158152602001610250565b61023c61046c366004611da8565b6000908152600260205260409020546001600160a01b031690565b610288610495366004611da8565b600090815260026020526040902054600160d01b900465ffffffffffff1690565b6102886104c4366004611da8565b600090815260026020526040902060010154600160d01b900460ff1690565b6102136104f1366004611ea4565b610bc7565b610288610504366004611ed0565b610d05565b61023c610517366004611da8565b600090815260026020526040902060010154600160301b90046001600160a01b031690565b61028861054a366004611da8565b60009081526002602081905260409091200154600160801b90046001600160801b031690565b61028861057e366004611da8565b60009081526002602052604090206001015465ffffffffffff1690565b61028860035481565b6102136105b2366004611da8565b610d20565b6102886105c5366004611da8565b610d29565b6106556105d8366004611da8565b600260208190526000918252604090912080546001820154928201546003909201546001600160a01b038083169465ffffffffffff600160a01b8504811695600160d01b9586900482169591831694600160301b84049094169360ff929093048216926001600160801b0380831693600160801b90930416911689565b604080516001600160a01b039a8b16815265ffffffffffff998a1660208201529789169088015296909416606086015295909116608084015260ff90811660a08401526001600160801b0394851660c0840152931660e0820152911661010082015261012001610250565b600054156106e95760405162461bcd60e51b81526004016106e090611f28565b60405180910390fd5b60016000908155818152600260205260409020546001600160a01b0316806107235760405162461bcd60e51b81526004016106e090611f57565b33600090815260016020819052604090912054146107535760405162461bcd60e51b81526004016106e090611f86565b600082815260026020526040808220600301805460ff191690555183917f028f3fd71c0ab977798420b1a28086f1c93daa66fdb9d3ba5b52ba1e94564d1391a2505060008055565b60006107ab898989898989610e04565b905082156107bc576107bc816112e5565b81156107cb576107cb816113d3565b98975050505050505050565b6107e181426114a8565b50565b33600090815260016020819052604090912054146108145760405162461bcd60e51b81526004016106e090611f86565b600054156108345760405162461bcd60e51b81526004016106e090611f28565b60016000556206361760ec1b829003610851576004819055610899565b60405162461bcd60e51b815260206004820152601f60248201527f447373566573742f66696c652d756e7265636f676e697a65642d706172616d0060448201526064016106e0565b817fe986e40cc8c151830d4f61050f4fb2e4add8567caad2d5f5496f9158e91fe4c7826040516108cb91815260200190565b60405180910390a2505060008055565b6107e1816112e5565b6108ee82826114a8565b5050565b600081815260026020818152604080842081516101208101835281546001600160a01b0380821680845265ffffffffffff600160a01b8404811697850197909752600160d01b9283900487169584019590955260018401549586166060840152600160301b860416608083015260ff9404841660a0820152938101546001600160801b0380821660c0870152600160801b9091041660e0850152600301549091166101008301526109b55760405162461bcd60e51b81526004016106e090611f57565b6109d7428260200151836040015184606001518560c001518660e00151611816565b9392505050565b3360009081526001602081905260409091205414610a0e5760405162461bcd60e51b81526004016106e090611f86565b6001600160a01b038116600081815260016020819052604080832091909155517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b6107e181600019611857565b60005415610a815760405162461bcd60e51b81526004016106e090611f28565b60016000908155818152600260205260409020546001600160a01b031680610abb5760405162461bcd60e51b81526004016106e090611f57565b336000908152600160208190526040909120541480610ae257506001600160a01b03811633145b610afe5760405162461bcd60e51b81526004016106e090611f86565b600082815260026020526040808220600101805460ff60d01b191690555183917f3d1b575f06b2d660af77eec35d9b3ffcfa956b6c1fdbc840992d4b03b03e622b91a2505060008055565b3360009081526001602081905260409091205414610b795760405162461bcd60e51b81526004016106e090611f86565b6001600160a01b038116600081815260016020526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b6108ee8282611857565b60005415610be75760405162461bcd60e51b81526004016106e090611f28565b60016000908155828152600260205260409020546001600160a01b03163314610c525760405162461bcd60e51b815260206004820152601a60248201527f447373566573742f6f6e6c792d757365722d63616e2d6d6f766500000000000060448201526064016106e0565b6001600160a01b038116610ca85760405162461bcd60e51b815260206004820152601c60248201527f447373566573742f7a65726f2d616464726573732d696e76616c69640000000060448201526064016106e0565b60008281526002602052604080822080546001600160a01b0319166001600160a01b0385169081179091559051909184917f8ceddd02f4fb8ef0d5d6212cf4c91d59d366e04b977e8b2b944168d2a6d850819190a3505060008055565b6000610d15878787878787610e04565b979650505050505050565b6107e1816113d3565b600081815260026020818152604080842081516101208101835281546001600160a01b0380821680845265ffffffffffff600160a01b8404811697850197909752600160d01b9283900487169584019590955260018401549586166060840152600160301b860416608083015260ff9404841660a0820152938101546001600160801b0380821660c0870152600160801b9091041660e085015260030154909116610100830152610dec5760405162461bcd60e51b81526004016106e090611f57565b6109d742826020015183606001518460c00151611a75565b33600090815260016020819052604082205414610e335760405162461bcd60e51b81526004016106e090611f86565b60005415610e535760405162461bcd60e51b81526004016106e090611f28565b60016000556001600160a01b038716610ea55760405162461bcd60e51b81526020600482015260146024820152732239b9ab32b9ba17b4b73b30b634b216bab9b2b960611b60448201526064016106e0565b60008611610ef55760405162461bcd60e51b815260206004820152601c60248201527f447373566573742f6e6f2d766573742d746f74616c2d616d6f756e740000000060448201526064016106e0565b610f03426325980600611b01565b8510610f475760405162461bcd60e51b81526020600482015260136024820152722239b9ab32b9ba17b133b716ba37b796b330b960691b60448201526064016106e0565b610f55426325980600611b5c565b8511610fa35760405162461bcd60e51b815260206004820152601860248201527f447373566573742f62676e2d746f6f2d6c6f6e672d61676f000000000000000060448201526064016106e0565b60008411610fe65760405162461bcd60e51b815260206004820152601060248201526f447373566573742f7461752d7a65726f60801b60448201526064016106e0565b600454610ff38588611fcc565b11156110395760405162461bcd60e51b8152602060048201526015602482015274088e6e6accae6e85ee4c2e8ca5ae8dede5ad0d2ced605b1b60448201526064016106e0565b63259806008411156110845760405162461bcd60e51b8152602060048201526014602482015273447373566573742f7461752d746f6f2d6c6f6e6760601b60448201526064016106e0565b838311156110cb5760405162461bcd60e51b8152602060048201526014602482015273447373566573742f6574612d746f6f2d6c6f6e6760601b60448201526064016106e0565b600019600354106111155760405162461bcd60e51b8152602060048201526014602482015273447373566573742f6964732d6f766572666c6f7760601b60448201526064016106e0565b60036000815461112490611fee565b9190508190559050604051806101200160405280886001600160a01b0316815260200161115087611bb2565b65ffffffffffff16815260200161116f61116a8887611b01565b611bb2565b65ffffffffffff16815260200161118961116a8888611b01565b65ffffffffffff1681526001600160a01b0384166020820152600060408201526060016111b588611c0f565b6001600160801b03908116825260006020808401829052604093840182905285825260028082528483208651815493880151888801516001600160a01b039283166001600160d01b031996871617600160a01b65ffffffffffff93841602176001600160d01b0316600160d01b918316820217845560608a015160018501805460808d015160a08e015193909516981697909717600160301b938516939093029290921760ff60d01b191660ff9283169091021790945560c088015160e0890151908716600160801b91909716029590951791810191909155610100909501516003909501805460ff1916959091169490941790935590519089169183917f2e3cc5298d3204a0f0fc2be0f6fdefcef002025f4c75caf950b23e6cfbfb78d09190a3600080559695505050505050565b600054156113055760405162461bcd60e51b81526004016106e090611f28565b60016000908155818152600260205260409020546001600160a01b03168061133f5760405162461bcd60e51b81526004016106e090611f57565b33600090815260016020819052604090912054148061136657506001600160a01b03811633145b6113825760405162461bcd60e51b81526004016106e090611f86565b600082815260026020526040808220600101805460ff60d01b1916600160d01b1790555183917f9247a2bf1b75bc397d4043d99b9cebce531548a01dbb56a5d4c5f5ca26051e8d91a2505060008055565b600054156113f35760405162461bcd60e51b81526004016106e090611f28565b60016000908155818152600260205260409020546001600160a01b03168061142d5760405162461bcd60e51b81526004016106e090611f57565b336000908152600160208190526040909120541461145d5760405162461bcd60e51b81526004016106e090611f86565b600082815260026020526040808220600301805460ff191660011790555183917f7f523e15b3feb7bbd0ee183627685fbe452b55efd91b1923a88f94abb36d362d91a2505060008055565b600054156114c85760405162461bcd60e51b81526004016106e090611f28565b600160008181553381526020829052604090205414806115085750600082815260026020526040902060010154600160301b90046001600160a01b031633145b6115245760405162461bcd60e51b81526004016106e090611f86565b60008281526002602081815260409283902083516101208101855281546001600160a01b0380821680845265ffffffffffff600160a01b8404811696850196909652600160d01b9283900486169784019790975260018401549485166060840152600160301b850416608083015260ff9304831660a0820152928101546001600160801b0380821660c0860152600160801b9091041660e08401526003015416610100820152906115e75760405162461bcd60e51b81526004016106e090611f57565b61010081015160ff161561163d5760405162461bcd60e51b815260206004820152601a60248201527f447373566573742f6e6f2d79616e6b696e672d626c657373656400000000000060448201526064016106e0565b42821015611649574291505b806060015165ffffffffffff168210156117d357600061166883611bb2565b6000858152600260209081526040909120600101805465ffffffffffff191665ffffffffffff8481169182179092559185015192935091909116111561170257600084815260026020819052604090912080546001600160a01b0316600160a01b65ffffffffffff85169081026001600160d01b031691909117600160d01b919091021781550180546001600160801b03191690556117d1565b816040015165ffffffffffff168165ffffffffffff16101561176057600084815260026020819052604090912080546001600160d01b0316600160d01b65ffffffffffff8516021781550180546001600160801b03191690556117d1565b6117a061179b611788858560200151866040015187606001518860c001518960e00151611816565b8460e001516001600160801b0316611b01565b611c0f565b60008581526002602081905260409091200180546001600160801b0319166001600160801b03929092169190911790555b505b827f6f2a3ed78a3066d89360b6c89e52bf3313f52e859401a3ea5fa0f033fd540c3c8360405161180591815260200190565b60405180910390a250506000805550565b60008465ffffffffffff16871061184a5761184561183688888787611a75565b836001600160801b0316611b5c565b610d15565b6000979650505050505050565b600054156118775760405162461bcd60e51b81526004016106e090611f28565b600160008181558381526002602081815260409283902083516101208101855281546001600160a01b03808216808452600160a01b830465ffffffffffff90811696850196909652600160d01b92839004861697840197909752968301549384166060830152600160301b840490961660808201529490910460ff90811660a0860152918101546001600160801b0380821660c0870152600160801b9091041660e085015260030154166101008301526119435760405162461bcd60e51b81526004016106e090611f57565b60a081015160ff161580611960575080516001600160a01b031633145b6119ac5760405162461bcd60e51b815260206004820152601b60248201527f447373566573742f6f6e6c792d757365722d63616e2d636c61696d000000000060448201526064016106e0565b60006119d0428360200151846040015185606001518660c001518760e00151611816565b90506119dc8184611c68565b90506119f861179b8360e001516001600160801b031683611b01565b60008581526002602081905260409091200180546001600160801b03928316600160801b0292169190911790558151611a319082611c7d565b837fa2906882572b0e9dfe893158bb064bc308eb1bd87d1da481850f9d17fc29384782604051611a6391815260200190565b60405180910390a25050600080555050565b60008365ffffffffffff16851015611a8f57506000611af9565b8265ffffffffffff168510611aae57506001600160801b038116611af9565b611ac88365ffffffffffff168565ffffffffffff16611b5c565b611aec836001600160801b0316611ae7888865ffffffffffff16611b5c565b611d41565b611af69190611fcc565b90505b949350505050565b600082611b0e8382612007565b9150811015611b565760405162461bcd60e51b8152602060048201526014602482015273447373566573742f6164642d6f766572666c6f7760601b60448201526064016106e0565b92915050565b600082611b69838261201a565b9150811115611b565760405162461bcd60e51b8152602060048201526015602482015274447373566573742f7375622d756e646572666c6f7760581b60448201526064016106e0565b8065ffffffffffff81168114611c0a5760405162461bcd60e51b815260206004820152601760248201527f447373566573742f75696e7434382d6f766572666c6f7700000000000000000060448201526064016106e0565b919050565b806001600160801b0381168114611c0a5760405162461bcd60e51b815260206004820152601860248201527f447373566573742f75696e743132382d6f766572666c6f77000000000000000060448201526064016106e0565b6000818311611c7757826109d7565b50919050565b6040516323b872dd60e01b81526001600160a01b037f0000000000000000000000006abfd6139c7c3cc270ee2ce132e309f59caaf6a2811660048301528381166024830152604482018390527f00000000000000000000000058d97b57bb95320f9a05dc918aef65434969c2b216906323b872dd906064016020604051808303816000875af1158015611d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d38919061202d565b6108ee57600080fd5b6000811580611d6557508282611d57818361204a565b9250611d639083611fcc565b145b611b565760405162461bcd60e51b8152602060048201526014602482015273447373566573742f6d756c2d6f766572666c6f7760601b60448201526064016106e0565b600060208284031215611dba57600080fd5b5035919050565b80356001600160a01b0381168114611c0a57600080fd5b80151581146107e157600080fd5b600080600080600080600080610100898b031215611e0357600080fd5b611e0c89611dc1565b975060208901359650604089013595506060890135945060808901359350611e3660a08a01611dc1565b925060c0890135611e4681611dd8565b915060e0890135611e5681611dd8565b809150509295985092959890939650565b60008060408385031215611e7a57600080fd5b50508035926020909101359150565b600060208284031215611e9b57600080fd5b6109d782611dc1565b60008060408385031215611eb757600080fd5b82359150611ec760208401611dc1565b90509250929050565b60008060008060008060c08789031215611ee957600080fd5b611ef287611dc1565b955060208701359450604087013593506060870135925060808701359150611f1c60a08801611dc1565b90509295509295509295565b602080825260159082015274111cdcd5995cdd0bdcde5cdd195b4b5b1bd8dad959605a1b604082015260600190565b602080825260159082015274111cdcd5995cdd0bda5b9d985b1a590b585dd85c99605a1b604082015260600190565b602080825260169082015275111cdcd5995cdd0bdb9bdd0b585d5d1a1bdc9a5e995960521b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082611fe957634e487b7160e01b600052601260045260246000fd5b500490565b60006001820161200057612000611fb6565b5060010190565b80820180821115611b5657611b56611fb6565b81810381811115611b5657611b56611fb6565b60006020828403121561203f57600080fd5b81516109d781611dd8565b600081600019048311821515161561206457612064611fb6565b50029056fea26469706673582212204a292a8dd3c156ae40fe24db4c12ca5fa9af9e70e5a4221776439c986e46808a64736f6c63430008100033

Deployed Bytecode Sourcemap

124:125:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13871:276:0;;;;;;:::i;:::-;;:::i;:::-;;19584:31;;;;;;;;-1:-1:-1;;;;;363:32:2;;;345:51;;333:2;318:18;19584:31:0;;;;;;;;3187:97;;;;;;:::i;:::-;3236:7;3262:11;;;:6;:11;;;;;:15;-1:-1:-1;;;3262:15:0;;;;;3187:97;;;;553:25:2;;;541:2;526:18;3187:97:0;407:177:2;8607:309:0;;;;;;:::i;:::-;;:::i;14757:80::-;;;;;;:::i;:::-;;:::i;4410:284::-;;;;;;:::i;:::-;;:::i;2966:18::-;;;;;;13125:71;;;;;;:::i;:::-;;:::i;15054:83::-;;;;;;:::i;:::-;;:::i;11569:282::-;;;;;;:::i;:::-;;:::i;1310:55::-;;1352:13;1310:55;;1967:79;;;;;;:::i;:::-;;:::i;9105:82::-;;;;;;:::i;:::-;;:::i;19621:30::-;;;;;14295:304;;;;;;:::i;:::-;;:::i;3908:97::-;;;;;;:::i;:::-;3957:7;3983:11;;;:6;:11;;;;;:15;;;;;;3908:97;3702;;;;;;:::i;:::-;3751:7;3777:11;;;:6;:11;;;;;;;;:15;;-1:-1:-1;;;;;3777:15:0;;3702:97;2051:79;;;;;;:::i;:::-;;:::i;9412:89::-;;;;;;:::i;:::-;;:::i;1920:41::-;;;;;;:::i;:::-;;;;;;;;;;;;;;17195:125;;;;;;:::i;:::-;17246:12;17298:11;;;:6;:11;;;;;;;;:15;;-1:-1:-1;;;;;17298:15:0;;;-1:-1:-1;;;17280:15:0;;;;:33;;17195:125;;;;2782:14:2;;2775:22;2757:41;;2745:2;2730:18;17195:125:0;2617:187:2;3084:97:0;;;;;;:::i;:::-;3133:7;3159:11;;;:6;:11;;;;;:15;-1:-1:-1;;;;;3159:15:0;;3084:97;3290;;;;;;:::i;:::-;3339:7;3365:11;;;:6;:11;;;;;:15;-1:-1:-1;;;3365:15:0;;;;;3290:97;3599;;;;;;:::i;:::-;3648:7;3674:11;;;:6;:11;;;;;:15;;;-1:-1:-1;;;3674:15:0;;;;;3599:97;16757:271;;;;;;:::i;:::-;;:::i;7765:192::-;;;;;;:::i;:::-;;:::i;3496:97::-;;;;;;:::i;:::-;3545:7;3571:11;;;:6;:11;;;;;:15;;;-1:-1:-1;;;3571:15:0;;-1:-1:-1;;;;;3571:15:0;;3496:97;3805;;;;;;:::i;:::-;3854:7;3880:11;;;:6;:11;;;;;;;;:15;;-1:-1:-1;;;3880:15:0;;-1:-1:-1;;;;;3880:15:0;;3805:97;3393;;;;;;:::i;:::-;3442:7;3468:11;;;:6;:11;;;;;:15;;;;;;3393:97;2941:18;;;;;;13695:65;;;;;;:::i;:::-;;:::i;10435:260::-;;;;;;:::i;:::-;;:::i;2895:40::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2895:40:0;;;;;-1:-1:-1;;;2895:40:0;;;;;-1:-1:-1;;;2895:40:0;;;;;;;;;;;-1:-1:-1;;;2895:40:0;;;;;;;;;;;;;;-1:-1:-1;;;;;2895:40:0;;;;-1:-1:-1;;;2895:40:0;;;;;;;;;;;;-1:-1:-1;;;;;4021:15:2;;;4003:34;;4056:14;4106:15;;;4101:2;4086:18;;4079:43;4158:15;;;4138:18;;;4131:43;4210:15;;;;4205:2;4190:18;;4183:43;4263:15;;;;4257:3;4242:19;;4235:44;4328:4;4316:17;;;3983:3;4295:19;;4288:46;-1:-1:-1;;;;;4424:15:2;;;4418:3;4403:19;;4396:44;4477:15;;4471:3;4456:19;;4449:44;4530:17;;4524:3;4509:19;;4502:46;3952:3;3937:19;2895:40:0;3608:946:2;13871:276:0;2294:6;;:11;2286:45;;;;-1:-1:-1;;;2286:45:0;;;;;;;:::i;:::-;;;;;;;;;2350:1;2341:6;:10;;;13940:11;;;:6:::1;:11;::::0;;;;:15;-1:-1:-1;;;;;13940:15:0::1;::::0;13965:52:::1;;;;-1:-1:-1::0;;;13965:52:0::1;;;;;;;:::i;:::-;14041:10;14035:17;::::0;;;:5:::1;:17;::::0;;;;;;;;:22:::1;14027:57;;;;-1:-1:-1::0;;;14027:57:0::1;;;;;;;:::i;:::-;14112:1;14094:11:::0;;;:6:::1;:11;::::0;;;;;:15:::1;;:19:::0;;-1:-1:-1;;14094:19:0::1;::::0;;14128:12;14101:3;;14128:12:::1;::::0;::::1;-1:-1:-1::0;;2381:1:0;2372:10;;13871:276::o;8607:309::-;8754:10;8781:38;8789:4;8794;8799;8804;8809;8814;8781:7;:38::i;:::-;8776:43;;8833:4;8829:28;;;8841:13;8851:2;8841:9;:13::i;:::-;8870:4;8866:25;;;8878:10;8885:2;8878:6;:10::i;:::-;8607:309;;;;;;;;;;:::o;14757:80::-;14803:27;14809:3;14814:15;14803:5;:27::i;:::-;14757:80;:::o;4410:284::-;2173:10;2167:17;;;;:5;:17;;;;;;;;;:22;2159:57;;;;-1:-1:-1;;;2159:57:0;;;;;;;:::i;:::-;2294:6:::1;::::0;:11;2286:45:::1;;;;-1:-1:-1::0;;;2286:45:0::1;;;;;;;:::i;:::-;2350:1;2341:6;:10:::0;-1:-1:-1;;;4490:13:0;;;4481:175:::2;;4513:3;:10:::0;;;4481:175:::2;;;4615:41;::::0;-1:-1:-1;;;4615:41:0;;5812:2:2;4615:41:0::2;::::0;::::2;5794:21:2::0;5851:2;5831:18;;;5824:30;5890:33;5870:18;;;5863:61;5941:18;;4615:41:0::2;5610:355:2::0;4481:175:0::2;4676:4;4671:16;4682:4;4671:16;;;;553:25:2::0;;541:2;526:18;;407:177;4671:16:0::2;;;;;;;;-1:-1:-1::0;;2381:1:0::1;2372:10:::0;;4410:284::o;13125:71::-;13175:14;13185:3;13175:9;:14::i;15054:83::-;15114:16;15120:3;15125:4;15114:5;:16::i;:::-;15054:83;;:::o;11569:282::-;11621:11;11666;;;:6;:11;;;;;;;;11644:33;;;;;;;;;-1:-1:-1;;;;;11644:33:0;;;;;;;-1:-1:-1;;;11644:33:0;;;;;;;;;;;-1:-1:-1;;;11644:33:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11644:33:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11644:33:0;;;;;;;-1:-1:-1;;;11644:33:0;;;;;;;;;;;;;;;;;;11687:58;;;;-1:-1:-1;;;11687:58:0;;;;;;;:::i;:::-;11761:83;11768:15;11785:6;:10;;;11797:6;:10;;;11809:6;:10;;;11821:6;:10;;;11833:6;:10;;;11761:6;:83::i;:::-;11755:89;11569:282;-1:-1:-1;;;11569:282:0:o;1967:79::-;2173:10;2167:17;;;;:5;:17;;;;;;;;;:22;2159:57;;;;-1:-1:-1;;;2159:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2011:11:0;::::1;;::::0;;;2025:1:::1;2011:11;::::0;;;;;;;:15;;;;2033:10;::::1;::::0;2011:11;2033:10:::1;1967:79:::0;:::o;9105:82::-;9151:29;9157:3;-1:-1:-1;;9151:5:0;:29::i;14295:304::-;2294:6;;:11;2286:45;;;;-1:-1:-1;;;2286:45:0;;;;;;;:::i;:::-;2350:1;2341:6;:10;;;14367:11;;;:6:::1;:11;::::0;;;;:15;-1:-1:-1;;;;;14367:15:0::1;::::0;14392:52:::1;;;;-1:-1:-1::0;;;14392:52:0::1;;;;;;;:::i;:::-;14468:10;14462:17;::::0;;;:5:::1;:17;::::0;;;;;;;;:22:::1;::::0;:44:::1;;-1:-1:-1::0;;;;;;14488:18:0;::::1;14496:10;14488:18;14462:44;14454:79;;;;-1:-1:-1::0;;;14454:79:0::1;;;;;;;:::i;:::-;14561:1;14543:11:::0;;;:6:::1;:11;::::0;;;;;:15:::1;;:19:::0;;-1:-1:-1;;;;14543:19:0::1;::::0;;14577:15;14550:3;;14577:15:::1;::::0;::::1;-1:-1:-1::0;;2381:1:0;2372:10;;14295:304::o;2051:79::-;2173:10;2167:17;;;;:5;:17;;;;;;;;;:22;2159:57;;;;-1:-1:-1;;;2159:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2095:11:0;::::1;2109:1;2095:11:::0;;;:5:::1;:11;::::0;;;;;:15;;;2117:10;::::1;::::0;2109:1;2117:10:::1;2051:79:::0;:::o;9412:89::-;9475:19;9481:3;9486:7;9475:5;:19::i;16757:271::-;2294:6;;:11;2286:45;;;;-1:-1:-1;;;2286:45:0;;;;;;;:::i;:::-;2350:1;2341:6;:10;;;16830:11;;;:6:::1;:11;::::0;;;;:15;-1:-1:-1;;;;;16830:15:0::1;16849:10;16830:29;16822:68;;;::::0;-1:-1:-1;;;16822:68:0;;6172:2:2;16822:68:0::1;::::0;::::1;6154:21:2::0;6211:2;6191:18;;;6184:30;6250:28;6230:18;;;6223:56;6296:18;;16822:68:0::1;5970:350:2::0;16822:68:0::1;-1:-1:-1::0;;;;;16908:18:0;::::1;16900:59;;;::::0;-1:-1:-1;;;16900:59:0;;6527:2:2;16900:59:0::1;::::0;::::1;6509:21:2::0;6566:2;6546:18;;;6539:30;6605;6585:18;;;6578:58;6653:18;;16900:59:0::1;6325:352:2::0;16900:59:0::1;16969:11;::::0;;;:6:::1;:11;::::0;;;;;:22;;-1:-1:-1;;;;;;16969:22:0::1;-1:-1:-1::0;;;;;16969:22:0;::::1;::::0;;::::1;::::0;;;17006:15;;16969:22;;:11;;17006:15:::1;::::0;16969:11;17006:15:::1;-1:-1:-1::0;;2381:1:0;2372:10;;16757:271::o;7765:192::-;7883:10;7912:38;7920:4;7925;7930;7935;7940;7945;7912:7;:38::i;:::-;7905:45;7765:192;-1:-1:-1;;;;;;;7765:192:0:o;13695:65::-;13742:11;13749:3;13742:6;:11::i;10435:260::-;10488:11;10533;;;:6;:11;;;;;;;;10511:33;;;;;;;;;-1:-1:-1;;;;;10511:33:0;;;;;;;-1:-1:-1;;;10511:33:0;;;;;;;;;;;-1:-1:-1;;;10511:33:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10511:33:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10511:33:0;;;;;;;-1:-1:-1;;;10511:33:0;;;;;;;;;;;;;;;;;;10554:58;;;;-1:-1:-1;;;10554:58:0;;;;;;;:::i;:::-;10628:60;10636:15;10653:6;:10;;;10665:6;:10;;;10677:6;:10;;;10628:7;:60::i;6012:1263::-;2173:10;6141;2167:17;;;:5;:17;;;;;;;;:22;2159:57;;;;-1:-1:-1;;;2159:57:0;;;;;;;:::i;:::-;2294:6:::1;::::0;:11;2286:45:::1;;;;-1:-1:-1::0;;;2286:45:0::1;;;;;;;:::i;:::-;2350:1;2341:6;:10:::0;-1:-1:-1;;;;;6171:18:0;::::2;6163:74;;;::::0;-1:-1:-1;;;6163:74:0;;6884:2:2;6163:74:0::2;::::0;::::2;6866:21:2::0;6923:2;6903:18;;;6896:30;-1:-1:-1;;;6942:18:2;;;6935:50;7002:18;;6163:74:0::2;6682:344:2::0;6163:74:0::2;6262:1;6255:4;:8;6247:82;;;::::0;-1:-1:-1;;;6247:82:0;;7233:2:2;6247:82:0::2;::::0;::::2;7215:21:2::0;7272:2;7252:18;;;7245:30;7311;7291:18;;;7284:58;7359:18;;6247:82:0::2;7031:352:2::0;6247:82:0::2;6354:34;6358:15;1352:13;6354:3;:34::i;:::-;6347:4;:41;6339:73;;;::::0;-1:-1:-1;;;6339:73:0;;7590:2:2;6339:73:0::2;::::0;::::2;7572:21:2::0;7629:2;7609:18;;;7602:30;-1:-1:-1;;;7648:18:2;;;7641:49;7707:18;;6339:73:0::2;7388:343:2::0;6339:73:0::2;6437:34;6441:15;1352:13;6437:3;:34::i;:::-;6430:4;:41;6422:78;;;::::0;-1:-1:-1;;;6422:78:0;;7938:2:2;6422:78:0::2;::::0;::::2;7920:21:2::0;7977:2;7957:18;;;7950:30;8016:26;7996:18;;;7989:54;8060:18;;6422:78:0::2;7736:348:2::0;6422:78:0::2;6525:1;6518:4;:8;6510:70;;;::::0;-1:-1:-1;;;6510:70:0;;8291:2:2;6510:70:0::2;::::0;::::2;8273:21:2::0;8330:2;8310:18;;;8303:30;-1:-1:-1;;;8349:18:2;;;8342:46;8405:18;;6510:70:0::2;8089:340:2::0;6510:70:0::2;6613:3;::::0;6598:11:::2;6605:4:::0;6598;:11:::2;:::i;:::-;:18;;6590:75;;;::::0;-1:-1:-1;;;6590:75:0;;8990:2:2;6590:75:0::2;::::0;::::2;8972:21:2::0;9029:2;9009:18;;;9002:30;-1:-1:-1;;;9048:18:2;;;9041:51;9109:18;;6590:75:0::2;8788:345:2::0;6590:75:0::2;1352:13;6683:4;:20;;6675:74;;;::::0;-1:-1:-1;;;6675:74:0;;9340:2:2;6675:74:0::2;::::0;::::2;9322:21:2::0;9379:2;9359:18;;;9352:30;-1:-1:-1;;;9398:18:2;;;9391:50;9458:18;;6675:74:0::2;9138:344:2::0;6675:74:0::2;6775:4;6767;:12;;6759:74;;;::::0;-1:-1:-1;;;6759:74:0;;9689:2:2;6759:74:0::2;::::0;::::2;9671:21:2::0;9728:2;9708:18;;;9701:30;-1:-1:-1;;;9747:18:2;;;9740:50;9807:18;;6759:74:0::2;9487:344:2::0;6759:74:0::2;-1:-1:-1::0;;6851:3:0::2;;:23;6843:74;;;::::0;-1:-1:-1;;;6843:74:0;;10038:2:2;6843:74:0::2;::::0;::::2;10020:21:2::0;10077:2;10057:18;;;10050:30;-1:-1:-1;;;10096:18:2;;;10089:50;10156:18;;6843:74:0::2;9836:344:2::0;6843:74:0::2;6935:3;;6933:5;;;;;:::i;:::-;;;;;;;6928:10;;6961:278;;;;;;;;6986:4;-1:-1:-1::0;;;;;6961:278:0::2;;;;;7009:14;7018:4;7009:8;:14::i;:::-;6961:278;;;;;;7042:25;7051:15;7055:4;7061;7051:3;:15::i;:::-;7042:8;:25::i;:::-;6961:278;;;;;;7086:25;7095:15;7099:4;7105;7095:3;:15::i;7086:25::-;6961:278;;::::0;;-1:-1:-1;;;;;6961:278:0;::::2;;::::0;::::2;::::0;-1:-1:-1;6961:278:0;;;;;;7130:15:::2;7140:4:::0;7130:9:::2;:15::i;:::-;-1:-1:-1::0;;;;;6961:278:0;;::::2;::::0;;7164:1:::2;6961:278;::::0;;::::2;::::0;;;;;;;;;;6948:10;;;:6:::2;:10:::0;;;;;;:291;;;;;;::::2;::::0;;;::::2;::::0;-1:-1:-1;;;;;6948:291:0;;::::2;-1:-1:-1::0;;;;;;6948:291:0;;;;-1:-1:-1;;;6948:291:0::2;::::0;;::::2;;;-1:-1:-1::0;;;;;6948:291:0::2;-1:-1:-1::0;;;6948:291:0;;::::2;::::0;::::2;;::::0;;::::2;::::0;::::2;::::0;-1:-1:-1;6948:291:0;::::2;::::0;;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;-1:-1:-1;;;6948:291:0;;::::2;::::0;;;::::2;::::0;;;::::2;-1:-1:-1::0;;;;6948:291:0::2;6961:278;6948:291:::0;;::::2;::::0;;::::2;;::::0;;;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;;::::2;-1:-1:-1::0;;;6948:291:0;;;::::2;;::::0;;;::::2;::::0;;::::2;::::0;;;;::::2;::::0;;::::2;::::0;::::2;::::0;;::::2;::::0;;-1:-1:-1;;6948:291:0::2;::::0;;;::::2;::::0;;;::::2;::::0;;;7254:14;;;;::::2;::::0;6948:10;;7254:14:::2;::::0;7164:1;7254:14:::2;2381:1:::1;2372:10:::0;;6012:1263;;-1:-1:-1;;;;;;6012:1263:0:o;12671:301::-;2294:6;;:11;2286:45;;;;-1:-1:-1;;;2286:45:0;;;;;;;:::i;:::-;2350:1;2341:6;:10;;;12742:11;;;:6:::1;:11;::::0;;;;:15;-1:-1:-1;;;;;12742:15:0::1;::::0;12767:52:::1;;;;-1:-1:-1::0;;;12767:52:0::1;;;;;;;:::i;:::-;12843:10;12837:17;::::0;;;:5:::1;:17;::::0;;;;;;;;:22:::1;::::0;:44:::1;;-1:-1:-1::0;;;;;;12863:18:0;::::1;12871:10;12863:18;12837:44;12829:79;;;;-1:-1:-1::0;;;12829:79:0::1;;;;;;;:::i;:::-;12918:11;::::0;;;:6:::1;:11;::::0;;;;;12936:1:::1;12918:15;:19:::0;;-1:-1:-1;;;;12918:19:0::1;-1:-1:-1::0;;;12918:19:0::1;::::0;;12952:13;12925:3;;12952:13:::1;::::0;::::1;-1:-1:-1::0;;2381:1:0;2372:10;;12671:301::o;13309:273::-;2294:6;;:11;2286:45;;;;-1:-1:-1;;;2286:45:0;;;;;;;:::i;:::-;2350:1;2341:6;:10;;;13377:11;;;:6:::1;:11;::::0;;;;:15;-1:-1:-1;;;;;13377:15:0::1;::::0;13402:52:::1;;;;-1:-1:-1::0;;;13402:52:0::1;;;;;;;:::i;:::-;13478:10;13472:17;::::0;;;:5:::1;:17;::::0;;;;;;;;:22:::1;13464:57;;;;-1:-1:-1::0;;;13464:57:0::1;;;;;;;:::i;:::-;13531:11;::::0;;;:6:::1;:11;::::0;;;;;:15:::1;;:19:::0;;-1:-1:-1;;13531:19:0::1;13549:1;13531:19;::::0;;13565:10;13538:3;;13565:10:::1;::::0;::::1;-1:-1:-1::0;;2381:1:0;2372:10;;13309:273::o;15347:1201::-;2294:6;;:11;2286:45;;;;-1:-1:-1;;;2286:45:0;;;;;;;:::i;:::-;2350:1;2341:6;:10;;;15427::::1;15421:17:::0;;::::1;::::0;;;;;;;:22:::1;::::0;:55:::1;;-1:-1:-1::0;15447:11:0::1;::::0;;;:6:::1;:11;::::0;;;;:15:::1;;::::0;-1:-1:-1;;;15447:15:0;::::1;-1:-1:-1::0;;;;;15447:15:0::1;15466:10;15447:29;15421:55;15413:90;;;;-1:-1:-1::0;;;15413:90:0::1;;;;;;;:::i;:::-;15513:19;15535:11:::0;;;:6:::1;:11;::::0;;;;;;;;15513:33;;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;15513:33:0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;15513:33:0;::::1;::::0;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;15513:33:0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;;::::1;::::0;;;;-1:-1:-1;;;15513:33:0;::::1;;::::0;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;-1:-1:-1;;;;;15513:33:0;;::::1;::::0;;;;-1:-1:-1;;;15513:33:0;;::::1;;::::0;;;;::::1;;::::0;::::1;;::::0;;;;15556:58:::1;;;;-1:-1:-1::0;;;15556:58:0::1;;;;;;;:::i;:::-;15632:10;::::0;::::1;::::0;:15:::1;;::::0;15624:54:::1;;;::::0;-1:-1:-1;;;15624:54:0;;10527:2:2;15624:54:0::1;::::0;::::1;10509:21:2::0;10566:2;10546:18;;;10539:30;10605:28;10585:18;;;10578:56;10651:18;;15624:54:0::1;10325:350:2::0;15624:54:0::1;15699:15;15692:4;:22;15688:75;;;15737:15;15730:22;;15688:75;15783:6;:10;;;15776:17;;:4;:17;15772:739;;;15809:10;15822:14;15831:4;15822:8;:14::i;:::-;15850:11;::::0;;;:6:::1;:11;::::0;;;;;;;:15:::1;;:21:::0;;-1:-1:-1;;15850:21:0::1;;::::0;;::::1;::::0;;::::1;::::0;;;15895:10;;::::1;::::0;15850:21;;-1:-1:-1;15889:16:0;;;::::1;-1:-1:-1::0;15885:616:0::1;;;15925:11;::::0;;;:6:::1;:11;::::0;;;;;;;:21;;-1:-1:-1;;;;;15964:21:0;-1:-1:-1;;;15925:21:0::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;;;;15964:21:0;;;;;-1:-1:-1;;;15964:21:0;;;::::1;;::::0;;16003:15:::1;:19:::0;;-1:-1:-1;;;;;;16003:19:0::1;::::0;;15885:616:::1;;;16053:6;:10;;;16047:16;;:3;:16;;;16043:458;;;16083:11;::::0;;;:6:::1;:11;::::0;;;;;;;:21;;-1:-1:-1;;;;;16083:21:0::1;-1:-1:-1::0;;;16083:21:0::1;::::0;::::1;;;::::0;;16122:15:::1;:19:::0;;-1:-1:-1;;;;;;16122:19:0::1;::::0;;16043:458:::1;;;16198:288;16245:207;16290:72;16297:4;16303:6;:10;;;16315:6;:10;;;16327:6;:10;;;16339:6;:10;;;16351:6;:10;;;16290:6;:72::i;:::-;16404:6;:10;;;-1:-1:-1::0;;;;;16245:207:0::1;:3;:207::i;:::-;16198:9;:288::i;:::-;16180:11;::::0;;;:6:::1;:11;::::0;;;;;;;:15:::1;:306:::0;;-1:-1:-1;;;;;;16180:306:0::1;-1:-1:-1::0;;;;;16180:306:0;;;::::1;::::0;;;::::1;::::0;;16043:458:::1;15795:716;15772:739;16531:3;16526:15;16536:4;16526:15;;;;553:25:2::0;;541:2;526:18;;407:177;16526:15:0::1;;;;;;;;-1:-1:-1::0;;2381:1:0;2372:10;;-1:-1:-1;15347:1201:0:o;12299:219::-;12420:11;12457:4;12449:12;;:5;:12;:62;;12468:43;12472:32;12480:5;12487:4;12493;12499;12472:7;:32::i;:::-;12506:4;-1:-1:-1;;;;;12468:43:0;:3;:43::i;:::-;12449:62;;;12464:1;12443:68;12299:219;-1:-1:-1;;;;;;;12299:219:0:o;9726:528::-;2294:6;;:11;2286:45;;;;-1:-1:-1;;;2286:45:0;;;;;;;:::i;:::-;2350:1;2341:6;:10;;;9817:11;;;:6:::1;:11;::::0;;;;;;;;9795:33;;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;9795:33:0;;::::1;::::0;;;-1:-1:-1;;;9795:33:0;::::1;;::::0;;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;9795:33:0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;;::::1;::::0;;;;-1:-1:-1;;;9795:33:0;::::1;::::0;;::::1;::::0;;;;;;;::::1;;::::0;;::::1;::::0;;;;;;::::1;::::0;-1:-1:-1;;;;;9795:33:0;;::::1;::::0;;;;-1:-1:-1;;;9795:33:0;;::::1;;::::0;;;;::::1;;::::0;::::1;;::::0;;;9838:58:::1;;;;-1:-1:-1::0;;;9838:58:0::1;;;;;;;:::i;:::-;9914:10;::::0;::::1;::::0;:15:::1;;::::0;;:43:::1;;-1:-1:-1::0;9933:10:0;;-1:-1:-1;;;;;9933:24:0::1;9947:10;9933:24;9914:43;9906:83;;;::::0;-1:-1:-1;;;9906:83:0;;10882:2:2;9906:83:0::1;::::0;::::1;10864:21:2::0;10921:2;10901:18;;;10894:30;10960:29;10940:18;;;10933:57;11007:18;;9906:83:0::1;10680:351:2::0;9906:83:0::1;9999:11;10013:83;10020:15;10037:6;:10;;;10049:6;:10;;;10061:6;:10;;;10073:6;:10;;;10085:6;:10;;;10013:6;:83::i;:::-;9999:97;;10112:17;10116:3;10121:7;10112:3;:17::i;:::-;10106:23;;10157:31;10167:20;10171:6;:10;;;-1:-1:-1::0;;;;;10167:20:0::1;10183:3;10167;:20::i;10157:31::-;10139:11;::::0;;;:6:::1;:11;::::0;;;;;;;:15:::1;:49:::0;;-1:-1:-1;;;;;10139:49:0;;::::1;-1:-1:-1::0;;;10139:49:0::1;::::0;::::1;::::0;;;::::1;::::0;;10202:10;;10198:20:::1;::::0;10214:3;10198::::1;:20::i;:::-;10238:3;10233:14;10243:3;10233:14;;;;553:25:2::0;;541:2;526:18;;407:177;10233:14:0::1;;;;;;;;-1:-1:-1::0;;2381:1:0;2372:10;;-1:-1:-1;;9726:528:0:o;11044:341::-;11139:11;11174:4;11166:12;;:5;:12;11162:217;;;-1:-1:-1;11200:1:0;11162:217;;;11231:4;11222:13;;:5;:13;11218:161;;-1:-1:-1;;;;;;11251:10:0;;11218:161;;;11328:15;11332:4;11328:15;;11338:4;11328:15;;:3;:15::i;:::-;11298:27;11302:4;-1:-1:-1;;;;;11298:27:0;11308:16;11312:5;11319:4;11308:16;;:3;:16::i;:::-;11298:3;:27::i;:::-;:45;;;;:::i;:::-;11292:51;;11218:161;11044:341;;;;;;:::o;4808:135::-;4866:9;4910:1;4900:5;4904:1;4910;4900:5;:::i;:::-;4896:9;;;4895:16;;4887:49;;;;-1:-1:-1;;;4887:49:0;;11368:2:2;4887:49:0;;;11350:21:2;11407:2;11387:18;;;11380:30;-1:-1:-1;;;11426:18:2;;;11419:50;11486:18;;4887:49:0;11166:344:2;4887:49:0;4808:135;;;;:::o;4948:136::-;5006:9;5050:1;5040:5;5044:1;5050;5040:5;:::i;:::-;5036:9;;;5035:16;;5027:50;;;;-1:-1:-1;;;5027:50:0;;11850:2:2;5027:50:0;;;11832:21:2;11889:2;11869:18;;;11862:30;-1:-1:-1;;;11908:18:2;;;11901:51;11969:18;;5027:50:0;11648:345:2;5243:135:0;5342:1;5323:20;;;;;5315:56;;;;-1:-1:-1;;;5315:56:0;;12200:2:2;5315:56:0;;;12182:21:2;12239:2;12219:18;;;12212:30;12278:25;12258:18;;;12251:53;12321:18;;5315:56:0;11998:347:2;5315:56:0;5243:135;;;:::o;5383:139::-;5485:1;-1:-1:-1;;;;;5465:21:0;;;;5457:58;;;;-1:-1:-1;;;5457:58:0;;12552:2:2;5457:58:0;;;12534:21:2;12591:2;12571:18;;;12564:30;12630:26;12610:18;;;12603:54;12674:18;;5457:58:0;12350:348:2;4700:103:0;4758:9;4787:1;4783;:5;:13;;4795:1;4783:13;;;-1:-1:-1;4791:1:0;4779:17;-1:-1:-1;4700:103:0:o;20331:119::-;20408:34;;-1:-1:-1;;;20408:34:0;;-1:-1:-1;;;;;20425:4:0;12961:15:2;;20408:34:0;;;12943::2;13013:15;;;12993:18;;;12986:43;13045:18;;;13038:34;;;20408:3:0;:16;;;;12878:18:2;;20408:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20400:43;;;;;5089:149;5147:9;5176:6;;;:30;;-1:-1:-1;5205:1:0;5200;5191:5;5200:1;5205;5191:5;:::i;:::-;5187:9;-1:-1:-1;5186:15:0;;5187:9;5186:15;:::i;:::-;:20;5176:30;5168:63;;;;-1:-1:-1;;;5168:63:0;;13708:2:2;5168:63:0;;;13690:21:2;13747:2;13727:18;;;13720:30;-1:-1:-1;;;13766:18:2;;;13759:50;13826:18;;5168:63:0;13506:344:2;14:180;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:2;;14:180;-1:-1:-1;14:180:2:o;589:173::-;657:20;;-1:-1:-1;;;;;706:31:2;;696:42;;686:70;;752:1;749;742:12;767:118;853:5;846:13;839:21;832:5;829:32;819:60;;875:1;872;865:12;890:801;1006:6;1014;1022;1030;1038;1046;1054;1062;1115:3;1103:9;1094:7;1090:23;1086:33;1083:53;;;1132:1;1129;1122:12;1083:53;1155:29;1174:9;1155:29;:::i;:::-;1145:39;;1231:2;1220:9;1216:18;1203:32;1193:42;;1282:2;1271:9;1267:18;1254:32;1244:42;;1333:2;1322:9;1318:18;1305:32;1295:42;;1384:3;1373:9;1369:19;1356:33;1346:43;;1408:39;1442:3;1431:9;1427:19;1408:39;:::i;:::-;1398:49;;1497:3;1486:9;1482:19;1469:33;1511:28;1533:5;1511:28;:::i;:::-;1558:5;-1:-1:-1;1615:3:2;1600:19;;1587:33;1629:30;1587:33;1629:30;:::i;:::-;1678:7;1668:17;;;890:801;;;;;;;;;;;:::o;1696:248::-;1764:6;1772;1825:2;1813:9;1804:7;1800:23;1796:32;1793:52;;;1841:1;1838;1831:12;1793:52;-1:-1:-1;;1864:23:2;;;1934:2;1919:18;;;1906:32;;-1:-1:-1;1696:248:2:o;2202:186::-;2261:6;2314:2;2302:9;2293:7;2289:23;2285:32;2282:52;;;2330:1;2327;2320:12;2282:52;2353:29;2372:9;2353:29;:::i;2809:254::-;2877:6;2885;2938:2;2926:9;2917:7;2913:23;2909:32;2906:52;;;2954:1;2951;2944:12;2906:52;2990:9;2977:23;2967:33;;3019:38;3053:2;3042:9;3038:18;3019:38;:::i;:::-;3009:48;;2809:254;;;;;:::o;3068:535::-;3172:6;3180;3188;3196;3204;3212;3265:3;3253:9;3244:7;3240:23;3236:33;3233:53;;;3282:1;3279;3272:12;3233:53;3305:29;3324:9;3305:29;:::i;:::-;3295:39;;3381:2;3370:9;3366:18;3353:32;3343:42;;3432:2;3421:9;3417:18;3404:32;3394:42;;3483:2;3472:9;3468:18;3455:32;3445:42;;3534:3;3523:9;3519:19;3506:33;3496:43;;3558:39;3592:3;3581:9;3577:19;3558:39;:::i;:::-;3548:49;;3068:535;;;;;;;;:::o;4559:345::-;4761:2;4743:21;;;4800:2;4780:18;;;4773:30;-1:-1:-1;;;4834:2:2;4819:18;;4812:51;4895:2;4880:18;;4559:345::o;4909:::-;5111:2;5093:21;;;5150:2;5130:18;;;5123:30;-1:-1:-1;;;5184:2:2;5169:18;;5162:51;5245:2;5230:18;;4909:345::o;5259:346::-;5461:2;5443:21;;;5500:2;5480:18;;;5473:30;-1:-1:-1;;;5534:2:2;5519:18;;5512:52;5596:2;5581:18;;5259:346::o;8434:127::-;8495:10;8490:3;8486:20;8483:1;8476:31;8526:4;8523:1;8516:15;8550:4;8547:1;8540:15;8566:217;8606:1;8632;8622:132;;8676:10;8671:3;8667:20;8664:1;8657:31;8711:4;8708:1;8701:15;8739:4;8736:1;8729:15;8622:132;-1:-1:-1;8768:9:2;;8566:217::o;10185:135::-;10224:3;10245:17;;;10242:43;;10265:18;;:::i;:::-;-1:-1:-1;10312:1:2;10301:13;;10185:135::o;11036:125::-;11101:9;;;11122:10;;;11119:36;;;11135:18;;:::i;11515:128::-;11582:9;;;11603:11;;;11600:37;;;11617:18;;:::i;13083:245::-;13150:6;13203:2;13191:9;13182:7;13178:23;13174:32;13171:52;;;13219:1;13216;13209:12;13171:52;13251:9;13245:16;13270:28;13292:5;13270:28;:::i;13333:168::-;13373:7;13439:1;13435;13431:6;13427:14;13424:1;13421:21;13416:1;13409:9;13402:17;13398:45;13395:71;;;13446:18;;:::i;:::-;-1:-1:-1;13486:9:2;;13333:168::o

Swarm Source

ipfs://4a292a8dd3c156ae40fe24db4c12ca5fa9af9e70e5a4221776439c986e46808a

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

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