Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
DssVestMintable
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2024-09-06
*/
// SPDX-License-Identifier: AGPL-3.0-or-later
pragma solidity =0.6.12;
// src/DssVest.sol
//
// 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/>.
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);
// --- 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
}
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;
}
/*
@dev Base vesting logic contract constructor
*/
constructor() public {
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) external 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
});
emit Init(id, _usr);
}
/*
@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
*/
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 _end the end time of the contract
@param _amt the total amount of the contract
*/
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
*/
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 _end the end time of the contract
@param _tot the total amount of the contract
@param _rxd the number of gems received
*/
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) 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 = 1;
emit Restrict(_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");
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
*/
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) public 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) public 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) public 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));
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_gem","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Deny","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"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":"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"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"bgn","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"}],"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 MintLike","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":"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"}]Contract Creation Code
60a060405234801561001057600080fd5b506040516120d23803806120d28339818101604052602081101561003357600080fd5b505133600081815260016020819052604080832091909155517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a26001600160a01b0381166100cb576040805162461bcd60e51b815260206004820152601d60248201527f447373566573742f496e76616c69642d746f6b656e2d61646472657373000000604482015290519081900360640190fd5b606081901b6001600160601b0319166080526001600160a01b0316611fd061010260003980610a605280611e225250611fd06000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063bb7c46f3116100f9578063db64ff8f11610097578063e529780d11610071578063e529780d146104eb578063e7657e1514610508578063f52981f414610510578063fc5a5b631461052d576101c4565b8063db64ff8f1461046b578063dc2c788f146104b1578063e054720f146104ce576101c4565b8063c659cd45116100d3578063c659cd45146103e8578063cdf4349714610405578063d4e8fd2e14610422578063d8a8e03a1461043f576101c4565b8063bb7c46f31461036e578063bf353dbb14610391578063bf8712c5146103b7576101c4565b806360fb494b116101665780637bd2bea7116101405780637bd2bea7146102ea5780637d8d27021461030e578063892de51d1461032b5780639c52a7f114610348576101c4565b806360fb494b1461029f57806365fae35e146102a75780636a760b80146102cd576101c4565b8063355274ea116101a2578063355274ea1461023a5780633c433d5f14610242578063509aaa1d1461025f57806353e8863d14610282576101c4565b806321f6c0cf146101c957806326e027f1146101f857806329ae811414610217575b600080fd5b6101e6600480360360208110156101df57600080fd5b50356105b2565b60408051918252519081900360200190f35b6102156004803603602081101561020e57600080fd5b50356105d6565b005b6102156004803603604081101561022d57600080fd5b50803590602001356105e3565b6101e6610721565b6102156004803603602081101561025857600080fd5b5035610727565b6102156004803603604081101561027557600080fd5b5080359060200135610888565b6101e66004803603602081101561029857600080fd5b5035610896565b6101e66109b0565b610215600480360360208110156102bd57600080fd5b50356001600160a01b03166109b8565b610215600480360360208110156102e357600080fd5b5035610a52565b6102f2610a5e565b604080516001600160a01b039092168252519081900360200190f35b6102156004803603602081101561032457600080fd5b5035610a82565b6101e66004803603602081101561034157600080fd5b5035610bdd565b6102156004803603602081101561035e57600080fd5b50356001600160a01b0316610bfc565b6102156004803603604081101561038457600080fd5b5080359060200135610c93565b6101e6600480360360208110156103a757600080fd5b50356001600160a01b0316610c9d565b6103d4600480360360208110156103cd57600080fd5b5035610caf565b604080519115158252519081900360200190f35b6102f2600480360360208110156103fe57600080fd5b5035610cda565b6101e66004803603602081101561041b57600080fd5b5035610cf5565b6101e66004803603602081101561043857600080fd5b5035610d16565b6102156004803603604081101561045557600080fd5b50803590602001356001600160a01b0316610d35565b6101e6600480360360c081101561048157600080fd5b506001600160a01b03813581169160208101359160408201359160608101359160808201359160a0013516610ea0565b6102f2600480360360208110156104c757600080fd5b5035611405565b6101e6600480360360208110156104e457600080fd5b503561142a565b6101e66004803603602081101561050157600080fd5b5035611450565b6101e661146d565b6101e66004803603602081101561052657600080fd5b5035611473565b61054a6004803603602081101561054357600080fd5b503561157c565b604080516001600160a01b03998a16815265ffffffffffff98891660208201529688168782015294909616606086015291909516608084015260ff90941660a08301526001600160801b0393841660c08301529190921660e083015251908190036101000190f35b600081815260026020526040902054600160a01b900465ffffffffffff165b919050565b6105e081426115ec565b50565b3360009081526001602081905260409091205414610636576040805162461bcd60e51b81526020600482015260166024820152600080516020611f7b833981519152604482015290519081900360640190fd5b60005415610679576040805162461bcd60e51b81526020600482015260156024820152600080516020611f5b833981519152604482015290519081900360640190fd5b60016000556206361760ec1b8214156106965760048190556106e3565b6040805162461bcd60e51b815260206004820152601f60248201527f447373566573742f66696c652d756e7265636f676e697a65642d706172616d00604482015290519081900360640190fd5b60408051828152905183917fe986e40cc8c151830d4f61050f4fb2e4add8567caad2d5f5496f9158e91fe4c7919081900360200190a2505060008055565b60045481565b6000541561076a576040805162461bcd60e51b81526020600482015260156024820152600080516020611f5b833981519152604482015290519081900360640190fd5b60016000908155818152600260205260409020546001600160a01b0316806107d1576040805162461bcd60e51b8152602060048201526015602482015274111cdcd5995cdd0bda5b9d985b1a590b585dd85c99605a1b604482015290519081900360640190fd5b3360009081526001602081905260409091205414806107f857506001600160a01b03811633145b610837576040805162461bcd60e51b81526020600482015260166024820152600080516020611f7b833981519152604482015290519081900360640190fd5b600082815260026020526040808220600101805460ff60d01b1916600160d01b1790555183917f9247a2bf1b75bc397d4043d99b9cebce531548a01dbb56a5d4c5f5ca26051e8d91a2505060008055565b61089282826115ec565b5050565b60006108a0611f16565b5060008281526002602081815260409283902083516101008101855281546001600160a01b03808216808452600160a01b830465ffffffffffff90811696850196909652600160d01b9283900486169784019790975260018401549485166060840152600160301b850416608083015290920460ff1660a0830152909101546001600160801b0380821660c0840152600160801b9091041660e082015290610987576040805162461bcd60e51b8152602060048201526015602482015274111cdcd5995cdd0bda5b9d985b1a590b585dd85c99605a1b604482015290519081900360640190fd5b6109a9428260200151836040015184606001518560c001518660e00151611975565b9392505050565b632598060081565b3360009081526001602081905260409091205414610a0b576040805162461bcd60e51b81526020600482015260166024820152600080516020611f7b833981519152604482015290519081900360640190fd5b6001600160a01b038116600081815260016020819052604080832091909155517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b6105e0816000196119b7565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005415610ac5576040805162461bcd60e51b81526020600482015260156024820152600080516020611f5b833981519152604482015290519081900360640190fd5b60016000908155818152600260205260409020546001600160a01b031680610b2c576040805162461bcd60e51b8152602060048201526015602482015274111cdcd5995cdd0bda5b9d985b1a590b585dd85c99605a1b604482015290519081900360640190fd5b336000908152600160208190526040909120541480610b5357506001600160a01b03811633145b610b92576040805162461bcd60e51b81526020600482015260166024820152600080516020611f7b833981519152604482015290519081900360640190fd5b600082815260026020526040808220600101805460ff60d01b191690555183917f3d1b575f06b2d660af77eec35d9b3ffcfa956b6c1fdbc840992d4b03b03e622b91a2505060008055565b600090815260026020819052604090912001546001600160801b031690565b3360009081526001602081905260409091205414610c4f576040805162461bcd60e51b81526020600482015260166024820152600080516020611f7b833981519152604482015290519081900360640190fd5b6001600160a01b038116600081815260016020526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b61089282826119b7565b60016020526000908152604090205481565b600090815260026020819052604090912001546001600160801b03808216600160801b909204161090565b6000908152600260205260409020546001600160a01b031690565b600090815260026020526040902054600160d01b900465ffffffffffff1690565b600090815260026020526040902060010154600160d01b900460ff1690565b60005415610d78576040805162461bcd60e51b81526020600482015260156024820152600080516020611f5b833981519152604482015290519081900360640190fd5b60016000908155828152600260205260409020546001600160a01b03163314610de8576040805162461bcd60e51b815260206004820152601a60248201527f447373566573742f6f6e6c792d757365722d63616e2d6d6f7665000000000000604482015290519081900360640190fd5b6001600160a01b038116610e43576040805162461bcd60e51b815260206004820152601c60248201527f447373566573742f7a65726f2d616464726573732d696e76616c696400000000604482015290519081900360640190fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0385169081179091559051909184917f8ceddd02f4fb8ef0d5d6212cf4c91d59d366e04b977e8b2b944168d2a6d850819190a3505060008055565b33600090815260016020819052604082205414610ef2576040805162461bcd60e51b81526020600482015260166024820152600080516020611f7b833981519152604482015290519081900360640190fd5b60005415610f35576040805162461bcd60e51b81526020600482015260156024820152600080516020611f5b833981519152604482015290519081900360640190fd5b60016000556001600160a01b038716610f8c576040805162461bcd60e51b81526020600482015260146024820152732239b9ab32b9ba17b4b73b30b634b216bab9b2b960611b604482015290519081900360640190fd5b60008611610fe1576040805162461bcd60e51b815260206004820152601c60248201527f447373566573742f6e6f2d766573742d746f74616c2d616d6f756e7400000000604482015290519081900360640190fd5b610fef426325980600611c21565b8510611038576040805162461bcd60e51b81526020600482015260136024820152722239b9ab32b9ba17b133b716ba37b796b330b960691b604482015290519081900360640190fd5b611046426325980600611c76565b8511611099576040805162461bcd60e51b815260206004820152601860248201527f447373566573742f62676e2d746f6f2d6c6f6e672d61676f0000000000000000604482015290519081900360640190fd5b600084116110e1576040805162461bcd60e51b815260206004820152601060248201526f447373566573742f7461752d7a65726f60801b604482015290519081900360640190fd5b6004548487816110ed57fe5b041115611139576040805162461bcd60e51b8152602060048201526015602482015274088e6e6accae6e85ee4c2e8ca5ae8dede5ad0d2ced605b1b604482015290519081900360640190fd5b6325980600841115611189576040805162461bcd60e51b8152602060048201526014602482015273447373566573742f7461752d746f6f2d6c6f6e6760601b604482015290519081900360640190fd5b838311156111d5576040805162461bcd60e51b8152602060048201526014602482015273447373566573742f6574612d746f6f2d6c6f6e6760601b604482015290519081900360640190fd5b60001960035410611224576040805162461bcd60e51b8152602060048201526014602482015273447373566573742f6964732d6f766572666c6f7760601b604482015290519081900360640190fd5b5060038054600101908190556040805161010081019091526001600160a01b03881681526020810161125587611cc6565b65ffffffffffff16815260200161127461126f8887611c21565b611cc6565b65ffffffffffff16815260200161128e61126f8888611c21565b65ffffffffffff1681526001600160a01b0384166020820152600060408201526060016112ba88611d23565b6001600160801b03908116825260006020928301819052848152600280845260408083208651815496880151888401516001600160a01b03199098166001600160a01b039283161765ffffffffffff60a01b1916600160a01b65ffffffffffff92831602176001600160d01b0316600160d01b9882168902178355606089015160018401805460808c015160a08d015165ffffffffffff1990921693909416929092176601000000000000600160d01b031916600160301b938516939093029290921760ff60d01b191660ff9091169098029790971790965560c08701519201805460e0909701516001600160801b0319909716928516929092178416600160801b96909416959095029290921790915591519089169183917f2e3cc5298d3204a0f0fc2be0f6fdefcef002025f4c75caf950b23e6cfbfb78d09190a3600080559695505050505050565b600090815260026020526040902060010154600160301b90046001600160a01b031690565b60009081526002602081905260409091200154600160801b90046001600160801b031690565b60009081526002602052604090206001015465ffffffffffff1690565b60035481565b600061147d611f16565b5060008281526002602081815260409283902083516101008101855281546001600160a01b03808216808452600160a01b830465ffffffffffff90811696850196909652600160d01b9283900486169784019790975260018401549485166060840152600160301b850416608083015290920460ff1660a0830152909101546001600160801b0380821660c0840152600160801b9091041660e082015290611564576040805162461bcd60e51b8152602060048201526015602482015274111cdcd5995cdd0bda5b9d985b1a590b585dd85c99605a1b604482015290519081900360640190fd5b6109a942826020015183606001518460c00151611d81565b60026020819052600091825260409091208054600182015491909201546001600160a01b038084169365ffffffffffff600160a01b8204811694600160d01b9283900482169491811693600160301b8204169260ff910416906001600160801b0380821691600160801b90041688565b6000541561162f576040805162461bcd60e51b81526020600482015260156024820152600080516020611f5b833981519152604482015290519081900360640190fd5b6001600081815533815260208290526040902054148061166f5750600082815260026020526040902060010154600160301b90046001600160a01b031633145b6116ae576040805162461bcd60e51b81526020600482015260166024820152600080516020611f7b833981519152604482015290519081900360640190fd5b6116b6611f16565b5060008281526002602081815260409283902083516101008101855281546001600160a01b03808216808452600160a01b830465ffffffffffff90811696850196909652600160d01b9283900486169784019790975260018401549485166060840152600160301b850416608083015290920460ff1660a0830152909101546001600160801b0380821660c0840152600160801b9091041660e08201529061179d576040805162461bcd60e51b8152602060048201526015602482015274111cdcd5995cdd0bda5b9d985b1a590b585dd85c99605a1b604482015290519081900360640190fd5b428210156117a9574291505b806060015165ffffffffffff168210156119365760006117c883611cc6565b6000858152600260209081526040909120600101805465ffffffffffff191665ffffffffffff84811691821790925591850151929350919091161115611865576000848152600260208190526040909120805465ffffffffffff60a01b1916600160a01b65ffffffffffff8516908102919091176001600160d01b0316600160d01b919091021781550180546001600160801b0319169055611934565b816040015165ffffffffffff168165ffffffffffff1610156118c357600084815260026020819052604090912080546001600160d01b0316600160d01b65ffffffffffff8516021781550180546001600160801b0319169055611934565b6119036118fe6118eb858560200151866040015187606001518860c001518960e00151611975565b8460e001516001600160801b0316611c21565b611d23565b60008581526002602081905260409091200180546001600160801b0319166001600160801b03929092169190911790555b505b60408051838152905184917f6f2a3ed78a3066d89360b6c89e52bf3313f52e859401a3ea5fa0f033fd540c3c919081900360200190a250506000805550565b60008465ffffffffffff1687106119a9576119a461199588888787611d81565b836001600160801b0316611c76565b6119ac565b60005b979650505050505050565b600054156119fa576040805162461bcd60e51b81526020600482015260156024820152600080516020611f5b833981519152604482015290519081900360640190fd5b6001600055611a07611f16565b5060008281526002602081815260409283902083516101008101855281546001600160a01b03808216808452600160a01b830465ffffffffffff90811696850196909652600160d01b9283900486169784019790975260018401549485166060840152600160301b850416608083015290920460ff1660a0830152909101546001600160801b0380821660c0840152600160801b9091041660e082015290611aee576040805162461bcd60e51b8152602060048201526015602482015274111cdcd5995cdd0bda5b9d985b1a590b585dd85c99605a1b604482015290519081900360640190fd5b60a081015160ff161580611b0b575080516001600160a01b031633145b611b5c576040805162461bcd60e51b815260206004820152601b60248201527f447373566573742f6f6e6c792d757365722d63616e2d636c61696d0000000000604482015290519081900360640190fd5b6000611b80428360200151846040015185606001518660c001518760e00151611975565b9050611b8c8184611e0b565b9050611ba86118fe8360e001516001600160801b031683611c21565b60008581526002602081905260409091200180546001600160801b03928316600160801b0292169190911790558151611be19082611e20565b60408051828152905185917fa2906882572b0e9dfe893158bb064bc308eb1bd87d1da481850f9d17fc293847919081900360200190a25050600080555050565b80820182811015611c70576040805162461bcd60e51b8152602060048201526014602482015273447373566573742f6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b92915050565b80820382811115611c70576040805162461bcd60e51b8152602060048201526015602482015274447373566573742f7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b8065ffffffffffff811681146105d1576040805162461bcd60e51b815260206004820152601760248201527f447373566573742f75696e7434382d6f766572666c6f77000000000000000000604482015290519081900360640190fd5b806001600160801b03811681146105d1576040805162461bcd60e51b815260206004820152601860248201527f447373566573742f75696e743132382d6f766572666c6f770000000000000000604482015290519081900360640190fd5b60008365ffffffffffff16851015611d9b57506000611e03565b8265ffffffffffff168510611dba57506001600160801b038116611e03565b611dd48365ffffffffffff168565ffffffffffff16611c76565b611df8836001600160801b0316611df3888865ffffffffffff16611c76565b611eb3565b81611dff57fe5b0490505b949350505050565b6000818311611e1a57826109a9565b50919050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166340c10f1983836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611e9757600080fd5b505af1158015611eab573d6000803e3d6000fd5b505050505050565b6000811580611ece57505080820282828281611ecb57fe5b04145b611c70576040805162461bcd60e51b8152602060048201526014602482015273447373566573742f6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091529056fe447373566573742f73797374656d2d6c6f636b65640000000000000000000000447373566573742f6e6f742d617574686f72697a656400000000000000000000a26469706673582212202f0ea799a75e98395ed56bcef1faf60a76eee6b6f29f841d71aa45f1c0b4034764736f6c634300060c003300000000000000000000000056072c95faa701256059aa122697b133aded9279
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101c45760003560e01c8063bb7c46f3116100f9578063db64ff8f11610097578063e529780d11610071578063e529780d146104eb578063e7657e1514610508578063f52981f414610510578063fc5a5b631461052d576101c4565b8063db64ff8f1461046b578063dc2c788f146104b1578063e054720f146104ce576101c4565b8063c659cd45116100d3578063c659cd45146103e8578063cdf4349714610405578063d4e8fd2e14610422578063d8a8e03a1461043f576101c4565b8063bb7c46f31461036e578063bf353dbb14610391578063bf8712c5146103b7576101c4565b806360fb494b116101665780637bd2bea7116101405780637bd2bea7146102ea5780637d8d27021461030e578063892de51d1461032b5780639c52a7f114610348576101c4565b806360fb494b1461029f57806365fae35e146102a75780636a760b80146102cd576101c4565b8063355274ea116101a2578063355274ea1461023a5780633c433d5f14610242578063509aaa1d1461025f57806353e8863d14610282576101c4565b806321f6c0cf146101c957806326e027f1146101f857806329ae811414610217575b600080fd5b6101e6600480360360208110156101df57600080fd5b50356105b2565b60408051918252519081900360200190f35b6102156004803603602081101561020e57600080fd5b50356105d6565b005b6102156004803603604081101561022d57600080fd5b50803590602001356105e3565b6101e6610721565b6102156004803603602081101561025857600080fd5b5035610727565b6102156004803603604081101561027557600080fd5b5080359060200135610888565b6101e66004803603602081101561029857600080fd5b5035610896565b6101e66109b0565b610215600480360360208110156102bd57600080fd5b50356001600160a01b03166109b8565b610215600480360360208110156102e357600080fd5b5035610a52565b6102f2610a5e565b604080516001600160a01b039092168252519081900360200190f35b6102156004803603602081101561032457600080fd5b5035610a82565b6101e66004803603602081101561034157600080fd5b5035610bdd565b6102156004803603602081101561035e57600080fd5b50356001600160a01b0316610bfc565b6102156004803603604081101561038457600080fd5b5080359060200135610c93565b6101e6600480360360208110156103a757600080fd5b50356001600160a01b0316610c9d565b6103d4600480360360208110156103cd57600080fd5b5035610caf565b604080519115158252519081900360200190f35b6102f2600480360360208110156103fe57600080fd5b5035610cda565b6101e66004803603602081101561041b57600080fd5b5035610cf5565b6101e66004803603602081101561043857600080fd5b5035610d16565b6102156004803603604081101561045557600080fd5b50803590602001356001600160a01b0316610d35565b6101e6600480360360c081101561048157600080fd5b506001600160a01b03813581169160208101359160408201359160608101359160808201359160a0013516610ea0565b6102f2600480360360208110156104c757600080fd5b5035611405565b6101e6600480360360208110156104e457600080fd5b503561142a565b6101e66004803603602081101561050157600080fd5b5035611450565b6101e661146d565b6101e66004803603602081101561052657600080fd5b5035611473565b61054a6004803603602081101561054357600080fd5b503561157c565b604080516001600160a01b03998a16815265ffffffffffff98891660208201529688168782015294909616606086015291909516608084015260ff90941660a08301526001600160801b0393841660c08301529190921660e083015251908190036101000190f35b600081815260026020526040902054600160a01b900465ffffffffffff165b919050565b6105e081426115ec565b50565b3360009081526001602081905260409091205414610636576040805162461bcd60e51b81526020600482015260166024820152600080516020611f7b833981519152604482015290519081900360640190fd5b60005415610679576040805162461bcd60e51b81526020600482015260156024820152600080516020611f5b833981519152604482015290519081900360640190fd5b60016000556206361760ec1b8214156106965760048190556106e3565b6040805162461bcd60e51b815260206004820152601f60248201527f447373566573742f66696c652d756e7265636f676e697a65642d706172616d00604482015290519081900360640190fd5b60408051828152905183917fe986e40cc8c151830d4f61050f4fb2e4add8567caad2d5f5496f9158e91fe4c7919081900360200190a2505060008055565b60045481565b6000541561076a576040805162461bcd60e51b81526020600482015260156024820152600080516020611f5b833981519152604482015290519081900360640190fd5b60016000908155818152600260205260409020546001600160a01b0316806107d1576040805162461bcd60e51b8152602060048201526015602482015274111cdcd5995cdd0bda5b9d985b1a590b585dd85c99605a1b604482015290519081900360640190fd5b3360009081526001602081905260409091205414806107f857506001600160a01b03811633145b610837576040805162461bcd60e51b81526020600482015260166024820152600080516020611f7b833981519152604482015290519081900360640190fd5b600082815260026020526040808220600101805460ff60d01b1916600160d01b1790555183917f9247a2bf1b75bc397d4043d99b9cebce531548a01dbb56a5d4c5f5ca26051e8d91a2505060008055565b61089282826115ec565b5050565b60006108a0611f16565b5060008281526002602081815260409283902083516101008101855281546001600160a01b03808216808452600160a01b830465ffffffffffff90811696850196909652600160d01b9283900486169784019790975260018401549485166060840152600160301b850416608083015290920460ff1660a0830152909101546001600160801b0380821660c0840152600160801b9091041660e082015290610987576040805162461bcd60e51b8152602060048201526015602482015274111cdcd5995cdd0bda5b9d985b1a590b585dd85c99605a1b604482015290519081900360640190fd5b6109a9428260200151836040015184606001518560c001518660e00151611975565b9392505050565b632598060081565b3360009081526001602081905260409091205414610a0b576040805162461bcd60e51b81526020600482015260166024820152600080516020611f7b833981519152604482015290519081900360640190fd5b6001600160a01b038116600081815260016020819052604080832091909155517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b6105e0816000196119b7565b7f00000000000000000000000056072c95faa701256059aa122697b133aded927981565b60005415610ac5576040805162461bcd60e51b81526020600482015260156024820152600080516020611f5b833981519152604482015290519081900360640190fd5b60016000908155818152600260205260409020546001600160a01b031680610b2c576040805162461bcd60e51b8152602060048201526015602482015274111cdcd5995cdd0bda5b9d985b1a590b585dd85c99605a1b604482015290519081900360640190fd5b336000908152600160208190526040909120541480610b5357506001600160a01b03811633145b610b92576040805162461bcd60e51b81526020600482015260166024820152600080516020611f7b833981519152604482015290519081900360640190fd5b600082815260026020526040808220600101805460ff60d01b191690555183917f3d1b575f06b2d660af77eec35d9b3ffcfa956b6c1fdbc840992d4b03b03e622b91a2505060008055565b600090815260026020819052604090912001546001600160801b031690565b3360009081526001602081905260409091205414610c4f576040805162461bcd60e51b81526020600482015260166024820152600080516020611f7b833981519152604482015290519081900360640190fd5b6001600160a01b038116600081815260016020526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b61089282826119b7565b60016020526000908152604090205481565b600090815260026020819052604090912001546001600160801b03808216600160801b909204161090565b6000908152600260205260409020546001600160a01b031690565b600090815260026020526040902054600160d01b900465ffffffffffff1690565b600090815260026020526040902060010154600160d01b900460ff1690565b60005415610d78576040805162461bcd60e51b81526020600482015260156024820152600080516020611f5b833981519152604482015290519081900360640190fd5b60016000908155828152600260205260409020546001600160a01b03163314610de8576040805162461bcd60e51b815260206004820152601a60248201527f447373566573742f6f6e6c792d757365722d63616e2d6d6f7665000000000000604482015290519081900360640190fd5b6001600160a01b038116610e43576040805162461bcd60e51b815260206004820152601c60248201527f447373566573742f7a65726f2d616464726573732d696e76616c696400000000604482015290519081900360640190fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0385169081179091559051909184917f8ceddd02f4fb8ef0d5d6212cf4c91d59d366e04b977e8b2b944168d2a6d850819190a3505060008055565b33600090815260016020819052604082205414610ef2576040805162461bcd60e51b81526020600482015260166024820152600080516020611f7b833981519152604482015290519081900360640190fd5b60005415610f35576040805162461bcd60e51b81526020600482015260156024820152600080516020611f5b833981519152604482015290519081900360640190fd5b60016000556001600160a01b038716610f8c576040805162461bcd60e51b81526020600482015260146024820152732239b9ab32b9ba17b4b73b30b634b216bab9b2b960611b604482015290519081900360640190fd5b60008611610fe1576040805162461bcd60e51b815260206004820152601c60248201527f447373566573742f6e6f2d766573742d746f74616c2d616d6f756e7400000000604482015290519081900360640190fd5b610fef426325980600611c21565b8510611038576040805162461bcd60e51b81526020600482015260136024820152722239b9ab32b9ba17b133b716ba37b796b330b960691b604482015290519081900360640190fd5b611046426325980600611c76565b8511611099576040805162461bcd60e51b815260206004820152601860248201527f447373566573742f62676e2d746f6f2d6c6f6e672d61676f0000000000000000604482015290519081900360640190fd5b600084116110e1576040805162461bcd60e51b815260206004820152601060248201526f447373566573742f7461752d7a65726f60801b604482015290519081900360640190fd5b6004548487816110ed57fe5b041115611139576040805162461bcd60e51b8152602060048201526015602482015274088e6e6accae6e85ee4c2e8ca5ae8dede5ad0d2ced605b1b604482015290519081900360640190fd5b6325980600841115611189576040805162461bcd60e51b8152602060048201526014602482015273447373566573742f7461752d746f6f2d6c6f6e6760601b604482015290519081900360640190fd5b838311156111d5576040805162461bcd60e51b8152602060048201526014602482015273447373566573742f6574612d746f6f2d6c6f6e6760601b604482015290519081900360640190fd5b60001960035410611224576040805162461bcd60e51b8152602060048201526014602482015273447373566573742f6964732d6f766572666c6f7760601b604482015290519081900360640190fd5b5060038054600101908190556040805161010081019091526001600160a01b03881681526020810161125587611cc6565b65ffffffffffff16815260200161127461126f8887611c21565b611cc6565b65ffffffffffff16815260200161128e61126f8888611c21565b65ffffffffffff1681526001600160a01b0384166020820152600060408201526060016112ba88611d23565b6001600160801b03908116825260006020928301819052848152600280845260408083208651815496880151888401516001600160a01b03199098166001600160a01b039283161765ffffffffffff60a01b1916600160a01b65ffffffffffff92831602176001600160d01b0316600160d01b9882168902178355606089015160018401805460808c015160a08d015165ffffffffffff1990921693909416929092176601000000000000600160d01b031916600160301b938516939093029290921760ff60d01b191660ff9091169098029790971790965560c08701519201805460e0909701516001600160801b0319909716928516929092178416600160801b96909416959095029290921790915591519089169183917f2e3cc5298d3204a0f0fc2be0f6fdefcef002025f4c75caf950b23e6cfbfb78d09190a3600080559695505050505050565b600090815260026020526040902060010154600160301b90046001600160a01b031690565b60009081526002602081905260409091200154600160801b90046001600160801b031690565b60009081526002602052604090206001015465ffffffffffff1690565b60035481565b600061147d611f16565b5060008281526002602081815260409283902083516101008101855281546001600160a01b03808216808452600160a01b830465ffffffffffff90811696850196909652600160d01b9283900486169784019790975260018401549485166060840152600160301b850416608083015290920460ff1660a0830152909101546001600160801b0380821660c0840152600160801b9091041660e082015290611564576040805162461bcd60e51b8152602060048201526015602482015274111cdcd5995cdd0bda5b9d985b1a590b585dd85c99605a1b604482015290519081900360640190fd5b6109a942826020015183606001518460c00151611d81565b60026020819052600091825260409091208054600182015491909201546001600160a01b038084169365ffffffffffff600160a01b8204811694600160d01b9283900482169491811693600160301b8204169260ff910416906001600160801b0380821691600160801b90041688565b6000541561162f576040805162461bcd60e51b81526020600482015260156024820152600080516020611f5b833981519152604482015290519081900360640190fd5b6001600081815533815260208290526040902054148061166f5750600082815260026020526040902060010154600160301b90046001600160a01b031633145b6116ae576040805162461bcd60e51b81526020600482015260166024820152600080516020611f7b833981519152604482015290519081900360640190fd5b6116b6611f16565b5060008281526002602081815260409283902083516101008101855281546001600160a01b03808216808452600160a01b830465ffffffffffff90811696850196909652600160d01b9283900486169784019790975260018401549485166060840152600160301b850416608083015290920460ff1660a0830152909101546001600160801b0380821660c0840152600160801b9091041660e08201529061179d576040805162461bcd60e51b8152602060048201526015602482015274111cdcd5995cdd0bda5b9d985b1a590b585dd85c99605a1b604482015290519081900360640190fd5b428210156117a9574291505b806060015165ffffffffffff168210156119365760006117c883611cc6565b6000858152600260209081526040909120600101805465ffffffffffff191665ffffffffffff84811691821790925591850151929350919091161115611865576000848152600260208190526040909120805465ffffffffffff60a01b1916600160a01b65ffffffffffff8516908102919091176001600160d01b0316600160d01b919091021781550180546001600160801b0319169055611934565b816040015165ffffffffffff168165ffffffffffff1610156118c357600084815260026020819052604090912080546001600160d01b0316600160d01b65ffffffffffff8516021781550180546001600160801b0319169055611934565b6119036118fe6118eb858560200151866040015187606001518860c001518960e00151611975565b8460e001516001600160801b0316611c21565b611d23565b60008581526002602081905260409091200180546001600160801b0319166001600160801b03929092169190911790555b505b60408051838152905184917f6f2a3ed78a3066d89360b6c89e52bf3313f52e859401a3ea5fa0f033fd540c3c919081900360200190a250506000805550565b60008465ffffffffffff1687106119a9576119a461199588888787611d81565b836001600160801b0316611c76565b6119ac565b60005b979650505050505050565b600054156119fa576040805162461bcd60e51b81526020600482015260156024820152600080516020611f5b833981519152604482015290519081900360640190fd5b6001600055611a07611f16565b5060008281526002602081815260409283902083516101008101855281546001600160a01b03808216808452600160a01b830465ffffffffffff90811696850196909652600160d01b9283900486169784019790975260018401549485166060840152600160301b850416608083015290920460ff1660a0830152909101546001600160801b0380821660c0840152600160801b9091041660e082015290611aee576040805162461bcd60e51b8152602060048201526015602482015274111cdcd5995cdd0bda5b9d985b1a590b585dd85c99605a1b604482015290519081900360640190fd5b60a081015160ff161580611b0b575080516001600160a01b031633145b611b5c576040805162461bcd60e51b815260206004820152601b60248201527f447373566573742f6f6e6c792d757365722d63616e2d636c61696d0000000000604482015290519081900360640190fd5b6000611b80428360200151846040015185606001518660c001518760e00151611975565b9050611b8c8184611e0b565b9050611ba86118fe8360e001516001600160801b031683611c21565b60008581526002602081905260409091200180546001600160801b03928316600160801b0292169190911790558151611be19082611e20565b60408051828152905185917fa2906882572b0e9dfe893158bb064bc308eb1bd87d1da481850f9d17fc293847919081900360200190a25050600080555050565b80820182811015611c70576040805162461bcd60e51b8152602060048201526014602482015273447373566573742f6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b92915050565b80820382811115611c70576040805162461bcd60e51b8152602060048201526015602482015274447373566573742f7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b8065ffffffffffff811681146105d1576040805162461bcd60e51b815260206004820152601760248201527f447373566573742f75696e7434382d6f766572666c6f77000000000000000000604482015290519081900360640190fd5b806001600160801b03811681146105d1576040805162461bcd60e51b815260206004820152601860248201527f447373566573742f75696e743132382d6f766572666c6f770000000000000000604482015290519081900360640190fd5b60008365ffffffffffff16851015611d9b57506000611e03565b8265ffffffffffff168510611dba57506001600160801b038116611e03565b611dd48365ffffffffffff168565ffffffffffff16611c76565b611df8836001600160801b0316611df3888865ffffffffffff16611c76565b611eb3565b81611dff57fe5b0490505b949350505050565b6000818311611e1a57826109a9565b50919050565b7f00000000000000000000000056072c95faa701256059aa122697b133aded92796001600160a01b03166340c10f1983836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611e9757600080fd5b505af1158015611eab573d6000803e3d6000fd5b505050505050565b6000811580611ece57505080820282828281611ecb57fe5b04145b611c70576040805162461bcd60e51b8152602060048201526014602482015273447373566573742f6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091529056fe447373566573742f73797374656d2d6c6f636b65640000000000000000000000447373566573742f6e6f742d617574686f72697a656400000000000000000000a26469706673582212202f0ea799a75e98395ed56bcef1faf60a76eee6b6f29f841d71aa45f1c0b4034764736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000056072c95faa701256059aa122697b133aded9279
-----Decoded View---------------
Arg [0] : _gem (address): 0x56072C95FAA701256059aa122697B133aDEd9279
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000056072c95faa701256059aa122697b133aded9279
Deployed Bytecode Sourcemap
14616:681:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3169:99;;;;;;;;;;;;;;;;-1:-1:-1;3169:99:0;;:::i;:::-;;;;;;;;;;;;;;;;11840:82;;;;;;;;;;;;;;;;-1:-1:-1;11840:82:0;;:::i;:::-;;4335:288;;;;;;;;;;;;;;;;-1:-1:-1;4335:288:0;;;;;;;:::i;2941:18::-;;;:::i;10908:306::-;;;;;;;;;;;;;;;;-1:-1:-1;10908:306:0;;:::i;12145:85::-;;;;;;;;;;;;;;;;-1:-1:-1;12145:85:0;;;;;;;:::i;9827:286::-;;;;;;;;;;;;;;;;-1:-1:-1;9827:286:0;;:::i;1376:55::-;;;:::i;1972:76::-;;;;;;;;;;;;;;;;-1:-1:-1;1972:76:0;-1:-1:-1;;;;;1972:76:0;;:::i;7430:84::-;;;;;;;;;;;;;;;;-1:-1:-1;7430:84:0;;:::i;14661:29::-;;;:::i;:::-;;;;-1:-1:-1;;;;;14661:29:0;;;;;;;;;;;;;;11367:310;;;;;;;;;;;;;;;;-1:-1:-1;11367:310:0;;:::i;3704:99::-;;;;;;;;;;;;;;;;-1:-1:-1;3704:99:0;;:::i;2054:76::-;;;;;;;;;;;;;;;;-1:-1:-1;2054:76:0;-1:-1:-1;;;;;2054:76:0;;:::i;7745:91::-;;;;;;;;;;;;;;;;-1:-1:-1;7745:91:0;;;;;;;:::i;1924:41::-;;;;;;;;;;;;;;;;-1:-1:-1;1924:41:0;-1:-1:-1;;;;;1924:41:0;;:::i;14226:127::-;;;;;;;;;;;;;;;;-1:-1:-1;14226:127:0;;:::i;:::-;;;;;;;;;;;;;;;;;;3062:99;;;;;;;;;;;;;;;;-1:-1:-1;3062:99:0;;:::i;3276:::-;;;;;;;;;;;;;;;;-1:-1:-1;3276:99:0;;:::i;3597:::-;;;;;;;;;;;;;;;;-1:-1:-1;3597:99:0;;:::i;13826:276::-;;;;;;;;;;;;;;;;-1:-1:-1;13826:276:0;;;;;;-1:-1:-1;;;;;13826:276:0;;:::i;5971:1265::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5971:1265:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3490:99::-;;;;;;;;;;;;;;;;-1:-1:-1;3490:99:0;;:::i;3811:::-;;;;;;;;;;;;;;;;-1:-1:-1;3811:99:0;;:::i;3383:::-;;;;;;;;;;;;;;;;-1:-1:-1;3383:99:0;;:::i;2914:18::-;;;:::i;8750:264::-;;;;;;;;;;;;;;;;-1:-1:-1;8750:264:0;;:::i;2867:40::-;;;;;;;;;;;;;;;;-1:-1:-1;2867:40:0;;:::i;:::-;;;;-1:-1:-1;;;;;2867:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2867:40:0;;;;;;;;;;;;;;;;;;;;;;;;3169:99;3218:7;3245:11;;;:6;:11;;;;;:15;-1:-1:-1;;;3245:15:0;;;;3169:99;;;;:::o;11840:82::-;11887:27;11893:3;11898:15;11887:5;:27::i;:::-;11840:82;:::o;4335:288::-;2175:10;2169:17;;;;:5;:17;;;;;;;;;:22;2161:57;;;;;-1:-1:-1;;;2161:57:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2161:57:0;;;;;;;;;;;;;;;2302:6:::1;::::0;:11;2294:45:::1;;;::::0;;-1:-1:-1;;;2294:45:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;2294:45:0;;;;;;;;;;;;;::::1;;2359:1;2350:6;:10:::0;-1:-1:-1;;;4416:13:0;::::2;4407:176;;;4439:3;:10:::0;;;4407:176:::2;;;4542:41;::::0;;-1:-1:-1;;;4542:41:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;4407:176;4599:16;::::0;;;;;;;4604:4;;4599:16:::2;::::0;;;;;::::2;::::0;;::::2;-1:-1:-1::0;;2392:1:0::1;2383:10:::0;;4335:288::o;2941:18::-;;;;:::o;10908:306::-;2302:6;;:11;2294:45;;;;;-1:-1:-1;;;2294:45:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2294:45:0;;;;;;;;;;;;;;;2359:1;2350:6;:10;;;10979:11;;;:6:::1;:11;::::0;;;;:15;-1:-1:-1;;;;;10979:15:0::1;11013:18:::0;11005:52:::1;;;::::0;;-1:-1:-1;;;11005:52:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;11005:52:0;;;;;;;;;;;;;::::1;;11082:10;11076:17;::::0;;;:5:::1;:17;::::0;;;;;;;;:22:::1;::::0;:44:::1;;-1:-1:-1::0;;;;;;11102:18:0;::::1;11110:10;11102:18;11076:44;11068:79;;;::::0;;-1:-1:-1;;;11068:79:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;11068:79:0;;;;;;;;;;;;;::::1;;11158:11;::::0;;;:6:::1;:11;::::0;;;;;11176:1:::1;11158:15;:19:::0;;-1:-1:-1;;;;11158:19:0::1;-1:-1:-1::0;;;11158:19:0::1;::::0;;11193:13;11165:3;;11193:13:::1;::::0;::::1;-1:-1:-1::0;;2392:1:0;2383:10;;10908:306::o;12145:85::-;12206:16;12212:3;12217:4;12206:5;:16::i;:::-;12145:85;;:::o;9827:286::-;9879:11;9903:19;;:::i;:::-;-1:-1:-1;9925:11:0;;;;:6;:11;;;;;;;;;9903:33;;;;;;;;;-1:-1:-1;;;;;9903:33:0;;;;;;-1:-1:-1;;;9903:33:0;;;;;;;;;;;;;-1:-1:-1;;;9903:33:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9903:33:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9903:33:0;;;;;;;-1:-1:-1;;;9903:33:0;;;;;;;;;9947:58;;;;;-1:-1:-1;;;9947:58:0;;;;;;;;;;;;-1:-1:-1;;;9947:58:0;;;;;;;;;;;;;;;10022:83;10029:15;10046:6;:10;;;10058:6;:10;;;10070:6;:10;;;10082:6;:10;;;10094:6;:10;;;10022:6;:83::i;:::-;10016:89;9827:286;-1:-1:-1;;;9827:286:0:o;1376:55::-;1418:13;1376:55;:::o;1972:76::-;2175:10;2169:17;;;;:5;:17;;;;;;;;;:22;2161:57;;;;;-1:-1:-1;;;2161:57:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2161:57:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;2015:10:0;::::1;;::::0;;;2028:1:::1;2015:10;::::0;;;;;;;:14;;;;2036:9;::::1;::::0;2015:10;2036:9:::1;1972:76:::0;:::o;7430:84::-;7477:29;7483:3;-1:-1:-1;;7477:5:0;:29::i;14661:::-;;;:::o;11367:310::-;2302:6;;:11;2294:45;;;;;-1:-1:-1;;;2294:45:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2294:45:0;;;;;;;;;;;;;;;2359:1;2350:6;:10;;;11440:11;;;:6:::1;:11;::::0;;;;:15;-1:-1:-1;;;;;11440:15:0::1;11474:18:::0;11466:52:::1;;;::::0;;-1:-1:-1;;;11466:52:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;11466:52:0;;;;;;;;;;;;;::::1;;11543:10;11537:17;::::0;;;:5:::1;:17;::::0;;;;;;;;:22:::1;::::0;:44:::1;;-1:-1:-1::0;;;;;;11563:18:0;::::1;11571:10;11563:18;11537:44;11529:79;;;::::0;;-1:-1:-1;;;11529:79:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;11529:79:0;;;;;;;;;;;;;::::1;;11637:1;11619:11:::0;;;:6:::1;:11;::::0;;;;;:15:::1;;:19:::0;;-1:-1:-1;;;;11619:19:0::1;::::0;;11654:15;11626:3;;11654:15:::1;::::0;::::1;-1:-1:-1::0;;2392:1:0;2383:10;;11367:310::o;3704:99::-;3753:7;3780:11;;;:6;:11;;;;;;;;:15;;-1:-1:-1;;;;;3780:15:0;;3704:99::o;2054:76::-;2175:10;2169:17;;;;:5;:17;;;;;;;;;:22;2161:57;;;;;-1:-1:-1;;;2161:57:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2161:57:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;2097:10:0;::::1;2110:1;2097:10:::0;;;:5:::1;:10;::::0;;;;;:14;;;2118:9;::::1;::::0;2110:1;2118:9:::1;2054:76:::0;:::o;7745:91::-;7809:19;7815:3;7820:7;7809:5;:19::i;1924:41::-;;;;;;;;;;;;;:::o;14226:127::-;14277:12;14330:11;;;:6;:11;;;;;;;;:15;;-1:-1:-1;;;;;14330:15:0;;;-1:-1:-1;;;14312:15:0;;;;:33;;14226:127::o;3062:99::-;3111:7;3138:11;;;:6;:11;;;;;:15;-1:-1:-1;;;;;3138:15:0;;3062:99::o;3276:::-;3325:7;3352:11;;;:6;:11;;;;;:15;-1:-1:-1;;;3352:15:0;;;;;3276:99::o;3597:::-;3646:7;3673:11;;;:6;:11;;;;;:15;;;-1:-1:-1;;;3673:15:0;;;;;3597:99::o;13826:276::-;2302:6;;:11;2294:45;;;;;-1:-1:-1;;;2294:45:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2294:45:0;;;;;;;;;;;;;;;2359:1;2350:6;:10;;;13900:11;;;:6:::1;:11;::::0;;;;:15;-1:-1:-1;;;;;13900:15:0::1;13919:10;13900:29;13892:68;;;::::0;;-1:-1:-1;;;13892:68:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;13979:18:0;::::1;13971:59;;;::::0;;-1:-1:-1;;;13971:59:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;14041:11;::::0;;;:6:::1;:11;::::0;;;;;:22;;-1:-1:-1;;;;;;14041:22:0::1;-1:-1:-1::0;;;;;14041:22:0;::::1;::::0;;::::1;::::0;;;14079:15;;14041:22;;:11;;14079:15:::1;::::0;14041:11;14079:15:::1;-1:-1:-1::0;;2392:1:0;2383:10;;13826:276::o;5971:1265::-;2175:10;6099;2169:17;;;:5;:17;;;;;;;;:22;2161:57;;;;;-1:-1:-1;;;2161:57:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2161:57:0;;;;;;;;;;;;;;;2302:6:::1;::::0;:11;2294:45:::1;;;::::0;;-1:-1:-1;;;2294:45:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;2294:45:0;;;;;;;;;;;;;::::1;;2359:1;2350:6;:10:::0;-1:-1:-1;;;;;6130:18:0;::::2;6122:74;;;::::0;;-1:-1:-1;;;6122:74:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;6122:74:0;;;;;;;;;;;;;::::2;;6222:1;6215:4;:8;6207:82;;;::::0;;-1:-1:-1;;;6207:82:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;6315:34;6319:15;1418:13;6315:3;:34::i;:::-;6308:4;:41;6300:73;;;::::0;;-1:-1:-1;;;6300:73:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;6300:73:0;;;;;;;;;;;;;::::2;;6399:34;6403:15;1418:13;6399:3;:34::i;:::-;6392:4;:41;6384:78;;;::::0;;-1:-1:-1;;;6384:78:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;6488:1;6481:4;:8;6473:70;;;::::0;;-1:-1:-1;;;6473:70:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;6473:70:0;;;;;;;;;;;;;::::2;;6577:3;;6569:4;6562;:11;;;;;;:18;;6554:75;;;::::0;;-1:-1:-1;;;6554:75:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;6554:75:0;;;;;;;;;;;;;::::2;;1418:13;6648:4;:20;;6640:74;;;::::0;;-1:-1:-1;;;6640:74:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;6640:74:0;;;;;;;;;;;;;::::2;;6741:4;6733;:12;;6725:74;;;::::0;;-1:-1:-1;;;6725:74:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;6725:74:0;;;;;;;;;;;;;::::2;;-1:-1:-1::0;;6818:3:0::2;;:23;6810:74;;;::::0;;-1:-1:-1;;;6810:74:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;6810:74:0;;;;;;;;;;;;;::::2;;-1:-1:-1::0;6904:3:0::2;6902:5:::0;;::::2;;::::0;;;;6931:267:::2;::::0;;::::2;::::0;::::2;::::0;;;-1:-1:-1;;;;;6931:267:0;::::2;::::0;;::::2;::::0;::::2;6981:14;6990:4:::0;6981:8:::2;:14::i;:::-;6931:267;;;;;;7015:25;7024:15;7028:4;7034;7024:3;:15::i;:::-;7015:8;:25::i;:::-;6931:267;;;;;;7060:25;7069:15;7073:4;7079;7069:3;:15::i;7060:25::-;6931:267;;::::0;;-1:-1:-1;;;;;6931:267:0;::::2;;::::0;::::2;::::0;-1:-1:-1;6931:267:0;;;;;;7105:15:::2;7115:4:::0;7105:9:::2;:15::i;:::-;-1:-1:-1::0;;;;;6931:267:0;;::::2;::::0;;7140:1:::2;6931:267;::::0;;::::2;::::0;;;6918:10;;;:6:::2;:10:::0;;;;;;;:280;;;;;;::::2;::::0;;;::::2;::::0;-1:-1:-1;;;;;;6918:280:0;;::::2;-1:-1:-1::0;;;;;6918:280:0;;::::2;;-1:-1:-1::0;;;;6918:280:0::2;-1:-1:-1::0;;;6918:280:0::2;::::0;;::::2;;;-1:-1:-1::0;;;;;6918:280:0::2;-1:-1:-1::0;;;6918:280:0;;::::2;::::0;::::2;;::::0;;::::2;::::0;::::2;::::0;-1:-1:-1;6918:280:0;::::2;::::0;;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;-1:-1:-1;;6918:280:0;;::::2;::::0;;;::::2;::::0;;;::::2;-1:-1:-1::0;;;;;;6918:280:0::2;-1:-1:-1::0;;;6918:280:0;;::::2;::::0;;;::::2;::::0;;;::::2;-1:-1:-1::0;;;;6918:280:0::2;;::::0;;::::2;::::0;;::::2;::::0;;;::::2;::::0;;;::::2;::::0;::::2;::::0;;::::2;::::0;;::::2;::::0;;::::2;::::0;-1:-1:-1;;;;;;6918:280:0;;::::2;::::0;;::::2;::::0;;;::::2;::::0;::::2;-1:-1:-1::0;;;6918:280:0;;;::::2;::::0;;;::::2;::::0;;;::::2;::::0;;;7214:14;;;;::::2;::::0;6918:10;;7214:14:::2;::::0;7140:1;7214:14:::2;2392:1:::1;2383:10:::0;;5971:1265;;-1:-1:-1;;;;;;5971:1265:0:o;3490:99::-;3539:7;3566:11;;;:6;:11;;;;;:15;;;-1:-1:-1;;;3566:15:0;;-1:-1:-1;;;;;3566:15:0;;3490:99::o;3811:::-;3860:7;3887:11;;;:6;:11;;;;;;;;:15;;-1:-1:-1;;;3887:15:0;;-1:-1:-1;;;;;3887:15:0;;3811:99::o;3383:::-;3432:7;3459:11;;;:6;:11;;;;;:15;;;;;;3383:99::o;2914:18::-;;;;:::o;8750:264::-;8803:11;8827:19;;:::i;:::-;-1:-1:-1;8849:11:0;;;;:6;:11;;;;;;;;;8827:33;;;;;;;;;-1:-1:-1;;;;;8827:33:0;;;;;;-1:-1:-1;;;8827:33:0;;;;;;;;;;;;;-1:-1:-1;;;8827:33:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8827:33:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8827:33:0;;;;;;;-1:-1:-1;;;8827:33:0;;;;;;;;;8871:58;;;;;-1:-1:-1;;;8871:58:0;;;;;;;;;;;;-1:-1:-1;;;8871:58:0;;;;;;;;;;;;;;;8946:60;8954:15;8971:6;:10;;;8983:6;:10;;;8995:6;:10;;;8946:7;:60::i;2867:40::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2867:40:0;;;;;-1:-1:-1;;;2867:40:0;;;;;-1:-1:-1;;;2867:40:0;;;;;;;;;;;-1:-1:-1;;;2867:40:0;;;;;;;;;-1:-1:-1;;;;;2867:40:0;;;;-1:-1:-1;;;2867:40:0;;;;:::o;12446:1165::-;2302:6;;:11;2294:45;;;;;-1:-1:-1;;;2294:45:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2294:45:0;;;;;;;;;;;;;;;2359:1;2350:6;:10;;;12527::::1;12521:17:::0;;::::1;::::0;;;;;;;:22:::1;::::0;:55:::1;;-1:-1:-1::0;12547:11:0::1;::::0;;;:6:::1;:11;::::0;;;;:15:::1;;::::0;-1:-1:-1;;;12547:15:0;::::1;-1:-1:-1::0;;;;;12547:15:0::1;12566:10;12547:29;12521:55;12513:90;;;::::0;;-1:-1:-1;;;12513:90:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;12513:90:0;;;;;;;;;;;;;::::1;;12614:19;;:::i;:::-;-1:-1:-1::0;12636:11:0::1;::::0;;;:6:::1;:11;::::0;;;;;;;;12614:33;;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;12614:33:0;;::::1;::::0;;;-1:-1:-1;;;12614:33:0;::::1;;::::0;;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;12614:33:0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;;::::1;::::0;;;;-1:-1:-1;;;12614:33:0;::::1;;::::0;;;;;;::::1;;;::::0;;;;;;::::1;::::0;-1:-1:-1;;;;;12614:33:0;;::::1;::::0;;;;-1:-1:-1;;;12614:33:0;;::::1;;::::0;;;;;12658:58:::1;;;::::0;;-1:-1:-1;;;12658:58:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;12658:58:0;;;;;;;;;;;;;::::1;;12738:15;12731:4;:22;12727:77;;;12777:15;12770:22;;12727:77;12825:6;:10;;;12818:17;;:4;:17;12814:757;;;12852:10;12865:14;12874:4;12865:8;:14::i;:::-;12894:11;::::0;;;:6:::1;:11;::::0;;;;;;;:15:::1;;:21:::0;;-1:-1:-1;;12894:21:0::1;;::::0;;::::1;::::0;;::::1;::::0;;;12940:10;;::::1;::::0;12894:21;;-1:-1:-1;12934:16:0;;;::::1;-1:-1:-1::0;12930:630:0::1;;;12971:11;::::0;;;:6:::1;:11;::::0;;;;;;;:21;;-1:-1:-1;;;;12971:21:0::1;-1:-1:-1::0;;;12971:21:0::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;;13011:21:0::1;-1:-1:-1::0;;;13011:21:0;;;::::1;;::::0;;13051:15:::1;:19:::0;;-1:-1:-1;;;;;;13051:19:0::1;::::0;;12930:630:::1;;;13102:6;:10;;;13096:16;;:3;:16;;;13092:468;;;13133:11;::::0;;;:6:::1;:11;::::0;;;;;;;:21;;-1:-1:-1;;;;;13133:21:0::1;-1:-1:-1::0;;;13133:21:0::1;::::0;::::1;;;::::0;;13173:15:::1;:19:::0;;-1:-1:-1;;;;;;13173:19:0::1;::::0;;13092:468:::1;;;13251:293;13299:210;13345:72;13352:4;13358:6;:10;;;13370:6;:10;;;13382:6;:10;;;13394:6;:10;;;13406:6;:10;;;13345:6;:72::i;:::-;13460:6;:10;;;-1:-1:-1::0;;;;;13299:210:0::1;:3;:210::i;:::-;13251:9;:293::i;:::-;13233:11;::::0;;;:6:::1;:11;::::0;;;;;;;:15:::1;:311:::0;;-1:-1:-1;;;;;;13233:311:0::1;-1:-1:-1::0;;;;;13233:311:0;;;::::1;::::0;;;::::1;::::0;;13092:468:::1;12814:757;;13588:15;::::0;;;;;;;13593:3;;13588:15:::1;::::0;;;;;::::1;::::0;;::::1;-1:-1:-1::0;;2392:1:0;2383:10;;-1:-1:-1;12446:1165:0:o;10529:221::-;10650:11;10688:4;10680:12;;:5;:12;:62;;10699:43;10703:32;10711:5;10718:4;10724;10730;10703:7;:32::i;:::-;10737:4;-1:-1:-1;;;;;10699:43:0;:3;:43::i;:::-;10680:62;;;10695:1;10680:62;10674:68;10529:221;-1:-1:-1;;;;;;;10529:221:0:o;8067:537::-;2302:6;;:11;2294:45;;;;;-1:-1:-1;;;2294:45:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2294:45:0;;;;;;;;;;;;;;;2359:1;2350:6;:10;8137:19:::1;;:::i;:::-;-1:-1:-1::0;8159:11:0::1;::::0;;;:6:::1;:11;::::0;;;;;;;;8137:33;;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;8137:33:0;;::::1;::::0;;;-1:-1:-1;;;8137:33:0;::::1;;::::0;;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;8137:33:0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;;::::1;::::0;;;;-1:-1:-1;;;8137:33:0;::::1;;::::0;;;;;;::::1;;;::::0;;;;;;::::1;::::0;-1:-1:-1;;;;;8137:33:0;;::::1;::::0;;;;-1:-1:-1;;;8137:33:0;;::::1;;::::0;;;;;8181:58:::1;;;::::0;;-1:-1:-1;;;8181:58:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;8181:58:0;;;;;;;;;;;;;::::1;;8258:10;::::0;::::1;::::0;:15:::1;;::::0;;:43:::1;;-1:-1:-1::0;8277:10:0;;-1:-1:-1;;;;;8277:24:0::1;8291:10;8277:24;8258:43;8250:83;;;::::0;;-1:-1:-1;;;8250:83:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;8344:11;8358:83;8365:15;8382:6;:10;;;8394:6;:10;;;8406:6;:10;;;8418:6;:10;;;8430:6;:10;;;8358:6;:83::i;:::-;8344:97;;8458:17;8462:3;8467:7;8458:3;:17::i;:::-;8452:23;;8504:31;8514:20;8518:6;:10;;;-1:-1:-1::0;;;;;8514:20:0::1;8530:3;8514;:20::i;8504:31::-;8486:11;::::0;;;:6:::1;:11;::::0;;;;;;;:15:::1;:49:::0;;-1:-1:-1;;;;;8486:49:0;;::::1;-1:-1:-1::0;;;8486:49:0::1;::::0;::::1;::::0;;;::::1;::::0;;8550:10;;8546:20:::1;::::0;8562:3;8546::::1;:20::i;:::-;8582:14;::::0;;;;;;;8587:3;;8582:14:::1;::::0;;;;;::::1;::::0;;::::1;-1:-1:-1::0;;2392:1:0;2383:10;;-1:-1:-1;;8067:537:0:o;4742:137::-;4835:5;;;4830:16;;;;4822:49;;;;;-1:-1:-1;;;4822:49:0;;;;;;;;;;;;-1:-1:-1;;;4822:49:0;;;;;;;;;;;;;;;4742:137;;;;:::o;4885:138::-;4978:5;;;4973:16;;;;4965:50;;;;;-1:-1:-1;;;4965:50:0;;;;;;;;;;;;-1:-1:-1;;;4965:50:0;;;;;;;;;;;;;;5186:137;5286:1;5267:20;;;;;5259:56;;;;;-1:-1:-1;;;5259:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;5329:141;5432:1;-1:-1:-1;;;;;5412:21:0;;;;5404:58;;;;;-1:-1:-1;;;5404:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;9331:349;9426:11;9462:4;9454:12;;:5;:12;9450:223;;;-1:-1:-1;9489:1:0;9450:223;;;9521:4;9512:13;;:5;:13;9508:165;;-1:-1:-1;;;;;;9542:10:0;;9508:165;;;9621:15;9625:4;9621:15;;9631:4;9621:15;;:3;:15::i;:::-;9591:27;9595:4;-1:-1:-1;;;;;9591:27:0;9601:16;9605:5;9612:4;9601:16;;:3;:16::i;:::-;9591:3;:27::i;:::-;:45;;;;;;9585:51;;9508:165;9331:349;;;;;;:::o;4631:105::-;4689:9;4719:1;4715;:5;:13;;4727:1;4715:13;;;-1:-1:-1;4723:1:0;4711:17;-1:-1:-1;4631:105:0:o;15196:98::-;15266:3;-1:-1:-1;;;;;15266:8:0;;15275:4;15281;15266:20;;;;;;;;;;;;;-1:-1:-1;;;;;15266:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15196:98;;:::o;5029:151::-;5087:9;5117:6;;;:30;;-1:-1:-1;;5132:5:0;;;5146:1;5141;5132:5;5141:1;5127:15;;;;;:20;5117:30;5109:63;;;;;-1:-1:-1;;;5109:63:0;;;;;;;;;;;;-1:-1:-1;;;5109:63:0;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
ipfs://2f0ea799a75e98395ed56bcef1faf60a76eee6b6f29f841d71aa45f1c0b40347
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.