Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers.
Latest 5 internal transactions
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Vesting
Compiler Version
v0.5.8+commit.23d335f2
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2020-09-03
*/
// https://github.com/dapphub/dappsys-monolithic/blob/de9114c5fa1b881bf16b1414e7ed90cd3cb2e361/auth.sol
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
pragma solidity >=0.4.23;
contract DSAuthority {
function canCall(
address src, address dst, bytes4 sig
) public view returns (bool);
}
contract DSAuthEvents {
event LogSetAuthority (address indexed authority);
event LogSetOwner (address indexed owner);
}
contract DSAuth is DSAuthEvents {
DSAuthority public authority;
address public owner;
constructor() public {
owner = msg.sender;
emit LogSetOwner(msg.sender);
}
function setOwner(address owner_)
public
auth
{
owner = owner_;
emit LogSetOwner(owner);
}
function setAuthority(DSAuthority authority_)
public
auth
{
authority = authority_;
emit LogSetAuthority(address(authority));
}
modifier auth {
require(isAuthorized(msg.sender, msg.sig), "ds-auth-unauthorized");
_;
}
function isAuthorized(address src, bytes4 sig) internal view returns (bool) {
if (src == address(this)) {
return true;
} else if (src == owner) {
return true;
} else if (authority == DSAuthority(0)) {
return false;
} else {
return authority.canCall(src, address(this), sig);
}
}
}
// https://github.com/dapphub/dappsys-monolithic/blob/de9114c5fa1b881bf16b1414e7ed90cd3cb2e361/erc20.sol
// erc20.sol -- API for the ERC20 token standard
// See <https://github.com/ethereum/EIPs/issues/20>.
// This file likely does not meet the threshold of originality
// required for copyright to apply. As a result, this is free and
// unencumbered software belonging to the public domain.
pragma solidity >0.4.20;
contract ERC20Events {
event Approval(address indexed src, address indexed guy, uint wad);
event Transfer(address indexed src, address indexed dst, uint wad);
}
contract ERC20 is ERC20Events {
function totalSupply() public view returns (uint);
function balanceOf(address guy) public view returns (uint);
function allowance(address src, address guy) public view returns (uint);
function approve(address guy, uint wad) public returns (bool);
function transfer(address dst, uint wad) public returns (bool);
function transferFrom(
address src, address dst, uint wad
) public returns (bool);
}
// https://github.com/dapphub/dappsys-monolithic/blob/de9114c5fa1b881bf16b1414e7ed90cd3cb2e361/math.sol
/// math.sol -- mixin for inline numerical wizardry
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
pragma solidity >0.4.13;
contract DSMath {
function add(uint x, uint y) internal pure returns (uint z) {
require((z = x + y) >= x, "ds-math-add-overflow");
}
function sub(uint x, uint y) internal pure returns (uint z) {
require((z = x - y) <= x, "ds-math-sub-underflow");
}
function mul(uint x, uint y) internal pure returns (uint z) {
require(y == 0 || (z = x * y) / y == x, "ds-math-mul-overflow");
}
function min(uint x, uint y) internal pure returns (uint z) {
return x <= y ? x : y;
}
function max(uint x, uint y) internal pure returns (uint z) {
return x >= y ? x : y;
}
function imin(int x, int y) internal pure returns (int z) {
return x <= y ? x : y;
}
function imax(int x, int y) internal pure returns (int z) {
return x >= y ? x : y;
}
uint constant WAD = 10 ** 18;
uint constant RAY = 10 ** 27;
function wmul(uint x, uint y) internal pure returns (uint z) {
z = add(mul(x, y), WAD / 2) / WAD;
}
function rmul(uint x, uint y) internal pure returns (uint z) {
z = add(mul(x, y), RAY / 2) / RAY;
}
function wdiv(uint x, uint y) internal pure returns (uint z) {
z = add(mul(x, WAD), y / 2) / y;
}
function rdiv(uint x, uint y) internal pure returns (uint z) {
z = add(mul(x, RAY), y / 2) / y;
}
// This famous algorithm is called "exponentiation by squaring"
// and calculates x^n with x as fixed-point and n as regular unsigned.
//
// It's O(log n), instead of O(n) for naive repeated multiplication.
//
// These facts are why it works:
//
// If n is even, then x^n = (x^2)^(n/2).
// If n is odd, then x^n = x * x^(n-1),
// and applying the equation for even x gives
// x^n = x * (x^2)^((n-1) / 2).
//
// Also, EVM division is flooring and
// floor[(n-1) / 2] = floor[n / 2].
//
function rpow(uint x, uint n) internal pure returns (uint z) {
z = n % 2 != 0 ? x : RAY;
for (n /= 2; n != 0; n /= 2) {
x = rmul(x, x);
if (n % 2 != 0) {
z = rmul(z, x);
}
}
}
}
// https://github.com/JoinColony/colonyToken/blob/master/contracts/ERC20Extended.sol
/*
This file is part of The Colony Network.
The Colony Network is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
The Colony Network is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with The Colony Network. If not, see <http://www.gnu.org/licenses/>.
*/
pragma solidity 0.5.8;
contract ERC20Extended is ERC20 {
event Mint(address indexed guy, uint wad);
event Burn(address indexed guy, uint wad);
function mint(uint wad) public;
function mint(address guy, uint wad) public;
function burn(uint wad) public;
function burn(address guy, uint wad) public;
}
// https://github.com/dapphub/dappsys-monolithic/blob/de9114c5fa1b881bf16b1414e7ed90cd3cb2e361/base.sol
/// base.sol -- basic ERC20 implementation
// Copyright (C) 2015, 2016, 2017 DappHub, LLC
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
pragma solidity >=0.4.23;
contract DSTokenBase is ERC20, DSMath {
uint256 _supply;
mapping (address => uint256) _balances;
mapping (address => mapping (address => uint256)) _approvals;
constructor(uint supply) public {
_balances[msg.sender] = supply;
_supply = supply;
}
function totalSupply() public view returns (uint) {
return _supply;
}
function balanceOf(address src) public view returns (uint) {
return _balances[src];
}
function allowance(address src, address guy) public view returns (uint) {
return _approvals[src][guy];
}
function transfer(address dst, uint wad) public returns (bool) {
return transferFrom(msg.sender, dst, wad);
}
function transferFrom(address src, address dst, uint wad)
public
returns (bool)
{
if (src != msg.sender) {
require(_approvals[src][msg.sender] >= wad, "ds-token-insufficient-approval");
_approvals[src][msg.sender] = sub(_approvals[src][msg.sender], wad);
}
require(_balances[src] >= wad, "ds-token-insufficient-balance");
_balances[src] = sub(_balances[src], wad);
_balances[dst] = add(_balances[dst], wad);
emit Transfer(src, dst, wad);
return true;
}
function approve(address guy, uint wad) public returns (bool) {
_approvals[msg.sender][guy] = wad;
emit Approval(msg.sender, guy, wad);
return true;
}
}
// https://github.com/JoinColony/colonyToken/blob/master/contracts/Token.sol
/*
This file is part of The Colony Network.
The Colony Network is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
The Colony Network is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with The Colony Network. If not, see <http://www.gnu.org/licenses/>.
*/
pragma solidity 0.5.8;
contract Token is DSTokenBase(0), DSAuth, ERC20Extended {
uint8 public decimals;
string public symbol;
string public name;
bool public locked;
modifier unlocked {
if (locked) {
require(isAuthorized(msg.sender, msg.sig), "colony-token-unauthorised");
}
_;
}
constructor(string memory _name, string memory _symbol, uint8 _decimals) public {
name = _name;
symbol = _symbol;
decimals = _decimals;
locked = true;
}
function transferFrom(address src, address dst, uint wad) public
unlocked
returns (bool)
{
return super.transferFrom(src, dst, wad);
}
function mint(uint wad) public auth {
mint(msg.sender, wad);
}
function burn(uint wad) public {
burn(msg.sender, wad);
}
function mint(address guy, uint wad) public auth {
_balances[guy] = add(_balances[guy], wad);
_supply = add(_supply, wad);
emit Mint(guy, wad);
emit Transfer(address(0x0), guy, wad);
}
function burn(address guy, uint wad) public {
if (guy != msg.sender) {
require(_approvals[guy][msg.sender] >= wad, "ds-token-insufficient-approval");
_approvals[guy][msg.sender] = sub(_approvals[guy][msg.sender], wad);
}
require(_balances[guy] >= wad, "ds-token-insufficient-balance");
_balances[guy] = sub(_balances[guy], wad);
_supply = sub(_supply, wad);
emit Burn(guy, wad);
}
function unlock() public
auth
{
locked = false;
}
}
pragma solidity 0.5.8;
/**
* @title Vesting
* Version of The Colony Network Vesting contract modified to include a
* deployer defined refund recipient.
* @author Val Mack - <val@quantfive.org>
* https://github.com/JoinColony/colonyToken/blob/master/contracts/Vesting.sol
*
* @notice See original GNU GPL license from The Colony Network below:
*
* > This file is part of The Colony Network.
*
* > The Colony Network is free software: you can redistribute it and/or modify
* > it under the terms of the GNU General Public License as published by
* > the Free Software Foundation, either version 3 of the License, or
* > (at your option) any later version.
*
* > The Colony Network is distributed in the hope that it will be useful,
* > but WITHOUT ANY WARRANTY; without even the implied warranty of
* > MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* > GNU General Public License for more details.
*
* > You should have received a copy of the GNU General Public License
* > along with The Colony Network. If not, see <http://www.gnu.org/licenses/>.
*
*/
contract Vesting is DSMath {
Token public token;
address public colonyMultiSig;
address public refundRecipient;
uint constant internal SECONDS_PER_MONTH = 2628000;
event GrantAdded(address recipient, uint256 startTime, uint128 amount, uint16 vestingDuration, uint16 vestingCliff);
event GrantRemoved(address recipient, uint128 amountVested, uint128 amountNotVested);
event GrantTokensClaimed(address recipient, uint128 amountClaimed);
struct Grant {
uint startTime;
uint128 amount;
uint16 vestingDuration;
uint16 vestingCliff;
uint16 monthsClaimed;
uint128 totalClaimed;
}
mapping (address => Grant) public tokenGrants;
modifier onlyColonyMultiSig {
require(msg.sender == colonyMultiSig, "colony-vesting-unauthorized");
_;
}
modifier onlyRefundRecipient {
require(msg.sender == refundRecipient, "colony-vesting-unauthorized");
_;
}
modifier nonZeroAddress(address x) {
require(x != address(0), "colony-token-zero-address");
_;
}
modifier noGrantExistsForUser(address _user) {
require(tokenGrants[_user].startTime == 0, "colony-token-user-grant-exists");
_;
}
constructor(address _token, address _colonyMultiSig, address _refundRecipient) public
nonZeroAddress(_token)
nonZeroAddress(_colonyMultiSig)
{
token = Token(_token);
colonyMultiSig = _colonyMultiSig;
refundRecipient = _refundRecipient;
}
/// @notice Add a new token grant for user `_recipient`. Only one grant per user is allowed
/// The amount of CLNY tokens here need to be preapproved for transfer by this `Vesting` contract before this call
/// Secured to the Colony MultiSig only
/// @param _recipient Address of the token grant recipient entitled to claim the grant funds
/// @param _startTime Grant start time as seconds since unix epoch
/// Allows backdating grants by passing time in the past. If `0` is passed here current blocktime is used.
/// @param _amount Total number of tokens in grant
/// @param _vestingDuration Number of months of the grant's duration
/// @param _vestingCliff Number of months of the grant's vesting cliff
function addTokenGrant(address _recipient, uint256 _startTime, uint128 _amount, uint16 _vestingDuration, uint16 _vestingCliff) public
onlyColonyMultiSig
noGrantExistsForUser(_recipient)
{
require(_vestingCliff > 0, "coony-token-zero-vesting-cliff");
require(_vestingDuration > _vestingCliff, "colony-token-cliff-longer-than-duration");
uint amountVestedPerMonth = _amount / _vestingDuration;
require(amountVestedPerMonth > 0, "colony-token-zero-amount-vested-per-month");
// Transfer the grant tokens under the control of the vesting contract
token.transferFrom(colonyMultiSig, address(this), _amount);
Grant memory grant = Grant({
startTime: _startTime == 0 ? now : _startTime,
amount: _amount,
vestingDuration: _vestingDuration,
vestingCliff: _vestingCliff,
monthsClaimed: 0,
totalClaimed: 0
});
tokenGrants[_recipient] = grant;
emit GrantAdded(_recipient, grant.startTime, _amount, _vestingDuration, _vestingCliff);
}
/// @notice Terminate token grant transferring all vested tokens to the `_recipient`
/// and returning all non-vested tokens to the Colony MultiSig
/// Secured to the Colony MultiSig only
/// @param _recipient Address of the token grant recipient
function removeTokenGrant(address _recipient) public
onlyRefundRecipient
{
Grant storage tokenGrant = tokenGrants[_recipient];
uint16 monthsVested;
uint128 amountVested;
(monthsVested, amountVested) = calculateGrantClaim(_recipient);
uint128 amountNotVested = uint128(sub(sub(tokenGrant.amount, tokenGrant.totalClaimed), amountVested));
require(token.transfer(_recipient, amountVested), "colony-token-recipient-transfer-failed");
require(token.transfer(refundRecipient, amountNotVested), "colony-token-refund-recipient-transfer-failed");
tokenGrant.startTime = 0;
tokenGrant.amount = 0;
tokenGrant.vestingDuration = 0;
tokenGrant.vestingCliff = 0;
tokenGrant.monthsClaimed = 0;
tokenGrant.totalClaimed = 0;
emit GrantRemoved(_recipient, amountVested, amountNotVested);
}
/// @notice Allows a grant recipient to claim their vested tokens. Errors if no tokens have vested
/// It is advised recipients check they are entitled to claim via `calculateGrantClaim` before calling this
function claimVestedTokens() public {
uint16 monthsVested;
uint128 amountVested;
(monthsVested, amountVested) = calculateGrantClaim(msg.sender);
require(amountVested > 0, "colony-token-zero-amount-vested");
Grant storage tokenGrant = tokenGrants[msg.sender];
tokenGrant.monthsClaimed = uint16(add(tokenGrant.monthsClaimed, monthsVested));
tokenGrant.totalClaimed = uint128(add(tokenGrant.totalClaimed, amountVested));
require(token.transfer(msg.sender, amountVested), "colony-token-sender-transfer-failed");
emit GrantTokensClaimed(msg.sender, amountVested);
}
/// @notice Calculate the vested and unclaimed months and tokens available for `_recepient` to claim
/// Due to rounding errors once grant duration is reached, returns the entire left grant amount
/// Returns (0, 0) if cliff has not been reached
function calculateGrantClaim(address _recipient) public view returns (uint16, uint128) {
Grant storage tokenGrant = tokenGrants[_recipient];
// For grants created with a future start date, that hasn't been reached, return 0, 0
if (now < tokenGrant.startTime) {
return (0, 0);
}
// Check cliff was reached
uint elapsedTime = sub(now, tokenGrant.startTime);
uint elapsedMonths = elapsedTime / SECONDS_PER_MONTH;
if (elapsedMonths < tokenGrant.vestingCliff) {
return (0, 0);
}
// If over vesting duration, all tokens vested
if (elapsedMonths >= tokenGrant.vestingDuration) {
uint128 remainingGrant = tokenGrant.amount - tokenGrant.totalClaimed;
return (tokenGrant.vestingDuration, remainingGrant);
} else {
uint16 monthsVested = uint16(sub(elapsedMonths, tokenGrant.monthsClaimed));
uint amountVestedPerMonth = tokenGrant.amount / tokenGrant.vestingDuration;
uint128 amountVested = uint128(mul(monthsVested, amountVestedPerMonth));
return (monthsVested, amountVested);
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"refundRecipient","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"colonyMultiSig","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address"}],"name":"removeTokenGrant","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenGrants","outputs":[{"name":"startTime","type":"uint256"},{"name":"amount","type":"uint128"},{"name":"vestingDuration","type":"uint16"},{"name":"vestingCliff","type":"uint16"},{"name":"monthsClaimed","type":"uint16"},{"name":"totalClaimed","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address"},{"name":"_startTime","type":"uint256"},{"name":"_amount","type":"uint128"},{"name":"_vestingDuration","type":"uint16"},{"name":"_vestingCliff","type":"uint16"}],"name":"addTokenGrant","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimVestedTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_recipient","type":"address"}],"name":"calculateGrantClaim","outputs":[{"name":"","type":"uint16"},{"name":"","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_token","type":"address"},{"name":"_colonyMultiSig","type":"address"},{"name":"_refundRecipient","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"recipient","type":"address"},{"indexed":false,"name":"startTime","type":"uint256"},{"indexed":false,"name":"amount","type":"uint128"},{"indexed":false,"name":"vestingDuration","type":"uint16"},{"indexed":false,"name":"vestingCliff","type":"uint16"}],"name":"GrantAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"recipient","type":"address"},{"indexed":false,"name":"amountVested","type":"uint128"},{"indexed":false,"name":"amountNotVested","type":"uint128"}],"name":"GrantRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"recipient","type":"address"},{"indexed":false,"name":"amountClaimed","type":"uint128"}],"name":"GrantTokensClaimed","type":"event"}]Contract Creation Code
608060405234801561001057600080fd5b50604051606080611c348339810180604052606081101561003057600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f636f6c6f6e792d746f6b656e2d7a65726f2d616464726573730000000000000081525060200191505060405180910390fd5b82600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561019d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f636f6c6f6e792d746f6b656e2d7a65726f2d616464726573730000000000000081525060200191505060405180910390fd5b846000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050506119c1806102736000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063da09118e1161005b578063da09118e14610240578063e74f3fbb146102c6578063fc0c546a146102d0578063fd75b8d41461031a57610088565b806301f5ad5a1461008d57806308ec6164146100d75780633023641d14610121578063b81a4d8f14610165575b600080fd5b6100956103a5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100df6103cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101636004803603602081101561013757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103f1565b005b6101a76004803603602081101561017b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109f2565b60405180878152602001866fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020018561ffff1661ffff1681526020018461ffff1661ffff1681526020018361ffff1661ffff168152602001826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001965050505050505060405180910390f35b6102c4600480360360a081101561025657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080356fffffffffffffffffffffffffffffffff169060200190929190803561ffff169060200190929190803561ffff169060200190929190505050610a90565b005b6102ce611132565b005b6102d86114b9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61035c6004803603602081101561033057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114de565b604051808361ffff1661ffff168152602001826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f636f6c6f6e792d76657374696e672d756e617574686f72697a6564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600080610503846114de565b8092508193505050600061059661057e8560010160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168660020160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166116ce565b836fffffffffffffffffffffffffffffffff166116ce565b90506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561065257600080fd5b505af1158015610666573d6000803e3d6000fd5b505050506040513d602081101561067c57600080fd5b81019080805190602001909291905050506106e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806119246026913960400191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156107be57600080fd5b505af11580156107d2573d6000803e3d6000fd5b505050506040513d60208110156107e857600080fd5b810190808051906020019092919050505061084e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001806118d0602d913960400191505060405180910390fd5b6000846000018190555060008460010160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060008460010160106101000a81548161ffff021916908361ffff16021790555060008460010160126101000a81548161ffff021916908361ffff16021790555060008460010160146101000a81548161ffff021916908361ffff16021790555060008460020160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507f340f6477ea48f04683f1f869a730e23ed8123e47f682b448d93174501e7aefdb858383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001935050505060405180910390a15050505050565b60036020528060005260406000206000915090508060000154908060010160009054906101000a90046fffffffffffffffffffffffffffffffff16908060010160109054906101000a900461ffff16908060010160129054906101000a900461ffff16908060010160149054906101000a900461ffff16908060020160009054906101000a90046fffffffffffffffffffffffffffffffff16905086565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f636f6c6f6e792d76657374696e672d756e617574686f72697a6564000000000081525060200191505060405180910390fd5b846000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414610c0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636f6c6f6e792d746f6b656e2d757365722d6772616e742d657869737473000081525060200191505060405180910390fd5b60008261ffff1611610c86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636f6f6e792d746f6b656e2d7a65726f2d76657374696e672d636c696666000081525060200191505060405180910390fd5b8161ffff168361ffff1611610ce6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806118fd6027913960400191505060405180910390fd5b60008361ffff16856fffffffffffffffffffffffffffffffff1681610d0757fe5b046fffffffffffffffffffffffffffffffff16905060008111610d75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061194a6029913960400191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630886040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b158015610e8557600080fd5b505af1158015610e99573d6000803e3d6000fd5b505050506040513d6020811015610eaf57600080fd5b810190808051906020019092919050505050610ec9611869565b6040518060c0016040528060008914610ee25788610ee4565b425b8152602001876fffffffffffffffffffffffffffffffff1681526020018661ffff1681526020018561ffff168152602001600061ffff16815260200160006fffffffffffffffffffffffffffffffff16815250905080600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060408201518160010160106101000a81548161ffff021916908361ffff16021790555060608201518160010160126101000a81548161ffff021916908361ffff16021790555060808201518160010160146101000a81548161ffff021916908361ffff16021790555060a08201518160020160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050507f4995f92ede8051f62ebd282d2097795d0569de63589fb49da0064f43cb47c8af888260000151888888604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001846fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020018361ffff1661ffff1681526020018261ffff1661ffff1681526020019550505050505060405180910390a15050505050505050565b60008061113e336114de565b80925081935050506000816fffffffffffffffffffffffffffffffff16116111ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f636f6c6f6e792d746f6b656e2d7a65726f2d616d6f756e742d7665737465640081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506112358160010160149054906101000a900461ffff1661ffff168461ffff16611751565b8160010160146101000a81548161ffff021916908361ffff1602179055506112a18160020160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff16611751565b8160020160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561139557600080fd5b505af11580156113a9573d6000803e3d6000fd5b505050506040513d60208110156113bf57600080fd5b8101908080519060200190929190505050611425576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806119736023913960400191505060405180910390fd5b7f2962855c62781b7b45ee6a244c72c6b1eaa1b883b9bbbe60fcff273aa480c8d23383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600001544210156115435760008081915080905092509250506116c9565b60006115534283600001546116ce565b90506000622819a0828161156357fe5b0490508260010160129054906101000a900461ffff1661ffff1681101561159957600080819150809050945094505050506116c9565b8260010160109054906101000a900461ffff1661ffff16811061161e5760008360020160009054906101000a90046fffffffffffffffffffffffffffffffff168460010160009054906101000a90046fffffffffffffffffffffffffffffffff160390508360010160109054906101000a900461ffff168195509550505050506116c9565b6000611640828560010160149054906101000a900461ffff1661ffff166116ce565b905060008460010160109054906101000a900461ffff1661ffff168560010160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168161169557fe5b046fffffffffffffffffffffffffffffffff16905060006116ba8361ffff16836117d4565b90508281975097505050505050505b915091565b600082828403915081111561174b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f64732d6d6174682d7375622d756e646572666c6f77000000000000000000000081525060200191505060405180910390fd5b92915050565b60008282840191508110156117ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6164642d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b92915050565b6000808214806117f157508282838502925082816117ee57fe5b04145b611863576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6d756c2d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b92915050565b6040518060c001604052806000815260200160006fffffffffffffffffffffffffffffffff168152602001600061ffff168152602001600061ffff168152602001600061ffff16815260200160006fffffffffffffffffffffffffffffffff168152509056fe636f6c6f6e792d746f6b656e2d726566756e642d726563697069656e742d7472616e736665722d6661696c6564636f6c6f6e792d746f6b656e2d636c6966662d6c6f6e6765722d7468616e2d6475726174696f6e636f6c6f6e792d746f6b656e2d726563697069656e742d7472616e736665722d6661696c6564636f6c6f6e792d746f6b656e2d7a65726f2d616d6f756e742d7665737465642d7065722d6d6f6e7468636f6c6f6e792d746f6b656e2d73656e6465722d7472616e736665722d6661696c6564a165627a7a72305820ccf406410a12201c40f6b207dcb50505abb97b7f5709fac03c31ec48e08fb5cd0029000000000000000000000000d101dcc414f310268c37eeb4cd376ccfa507f5710000000000000000000000001288d4d08c3e79b81c2db1ce459ae374fc978d34000000000000000000000000e3648e99b6e68a09e28428790d12b357f081dbe0
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063da09118e1161005b578063da09118e14610240578063e74f3fbb146102c6578063fc0c546a146102d0578063fd75b8d41461031a57610088565b806301f5ad5a1461008d57806308ec6164146100d75780633023641d14610121578063b81a4d8f14610165575b600080fd5b6100956103a5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100df6103cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101636004803603602081101561013757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103f1565b005b6101a76004803603602081101561017b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109f2565b60405180878152602001866fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020018561ffff1661ffff1681526020018461ffff1661ffff1681526020018361ffff1661ffff168152602001826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001965050505050505060405180910390f35b6102c4600480360360a081101561025657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080356fffffffffffffffffffffffffffffffff169060200190929190803561ffff169060200190929190803561ffff169060200190929190505050610a90565b005b6102ce611132565b005b6102d86114b9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61035c6004803603602081101561033057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114de565b604051808361ffff1661ffff168152602001826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f636f6c6f6e792d76657374696e672d756e617574686f72697a6564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600080610503846114de565b8092508193505050600061059661057e8560010160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168660020160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166116ce565b836fffffffffffffffffffffffffffffffff166116ce565b90506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561065257600080fd5b505af1158015610666573d6000803e3d6000fd5b505050506040513d602081101561067c57600080fd5b81019080805190602001909291905050506106e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806119246026913960400191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156107be57600080fd5b505af11580156107d2573d6000803e3d6000fd5b505050506040513d60208110156107e857600080fd5b810190808051906020019092919050505061084e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001806118d0602d913960400191505060405180910390fd5b6000846000018190555060008460010160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060008460010160106101000a81548161ffff021916908361ffff16021790555060008460010160126101000a81548161ffff021916908361ffff16021790555060008460010160146101000a81548161ffff021916908361ffff16021790555060008460020160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507f340f6477ea48f04683f1f869a730e23ed8123e47f682b448d93174501e7aefdb858383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001935050505060405180910390a15050505050565b60036020528060005260406000206000915090508060000154908060010160009054906101000a90046fffffffffffffffffffffffffffffffff16908060010160109054906101000a900461ffff16908060010160129054906101000a900461ffff16908060010160149054906101000a900461ffff16908060020160009054906101000a90046fffffffffffffffffffffffffffffffff16905086565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f636f6c6f6e792d76657374696e672d756e617574686f72697a6564000000000081525060200191505060405180910390fd5b846000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414610c0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636f6c6f6e792d746f6b656e2d757365722d6772616e742d657869737473000081525060200191505060405180910390fd5b60008261ffff1611610c86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636f6f6e792d746f6b656e2d7a65726f2d76657374696e672d636c696666000081525060200191505060405180910390fd5b8161ffff168361ffff1611610ce6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806118fd6027913960400191505060405180910390fd5b60008361ffff16856fffffffffffffffffffffffffffffffff1681610d0757fe5b046fffffffffffffffffffffffffffffffff16905060008111610d75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061194a6029913960400191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630886040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b158015610e8557600080fd5b505af1158015610e99573d6000803e3d6000fd5b505050506040513d6020811015610eaf57600080fd5b810190808051906020019092919050505050610ec9611869565b6040518060c0016040528060008914610ee25788610ee4565b425b8152602001876fffffffffffffffffffffffffffffffff1681526020018661ffff1681526020018561ffff168152602001600061ffff16815260200160006fffffffffffffffffffffffffffffffff16815250905080600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060408201518160010160106101000a81548161ffff021916908361ffff16021790555060608201518160010160126101000a81548161ffff021916908361ffff16021790555060808201518160010160146101000a81548161ffff021916908361ffff16021790555060a08201518160020160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050507f4995f92ede8051f62ebd282d2097795d0569de63589fb49da0064f43cb47c8af888260000151888888604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001846fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020018361ffff1661ffff1681526020018261ffff1661ffff1681526020019550505050505060405180910390a15050505050505050565b60008061113e336114de565b80925081935050506000816fffffffffffffffffffffffffffffffff16116111ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f636f6c6f6e792d746f6b656e2d7a65726f2d616d6f756e742d7665737465640081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506112358160010160149054906101000a900461ffff1661ffff168461ffff16611751565b8160010160146101000a81548161ffff021916908361ffff1602179055506112a18160020160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff16611751565b8160020160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561139557600080fd5b505af11580156113a9573d6000803e3d6000fd5b505050506040513d60208110156113bf57600080fd5b8101908080519060200190929190505050611425576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806119736023913960400191505060405180910390fd5b7f2962855c62781b7b45ee6a244c72c6b1eaa1b883b9bbbe60fcff273aa480c8d23383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600001544210156115435760008081915080905092509250506116c9565b60006115534283600001546116ce565b90506000622819a0828161156357fe5b0490508260010160129054906101000a900461ffff1661ffff1681101561159957600080819150809050945094505050506116c9565b8260010160109054906101000a900461ffff1661ffff16811061161e5760008360020160009054906101000a90046fffffffffffffffffffffffffffffffff168460010160009054906101000a90046fffffffffffffffffffffffffffffffff160390508360010160109054906101000a900461ffff168195509550505050506116c9565b6000611640828560010160149054906101000a900461ffff1661ffff166116ce565b905060008460010160109054906101000a900461ffff1661ffff168560010160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168161169557fe5b046fffffffffffffffffffffffffffffffff16905060006116ba8361ffff16836117d4565b90508281975097505050505050505b915091565b600082828403915081111561174b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f64732d6d6174682d7375622d756e646572666c6f77000000000000000000000081525060200191505060405180910390fd5b92915050565b60008282840191508110156117ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6164642d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b92915050565b6000808214806117f157508282838502925082816117ee57fe5b04145b611863576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6d756c2d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b92915050565b6040518060c001604052806000815260200160006fffffffffffffffffffffffffffffffff168152602001600061ffff168152602001600061ffff168152602001600061ffff16815260200160006fffffffffffffffffffffffffffffffff168152509056fe636f6c6f6e792d746f6b656e2d726566756e642d726563697069656e742d7472616e736665722d6661696c6564636f6c6f6e792d746f6b656e2d636c6966662d6c6f6e6765722d7468616e2d6475726174696f6e636f6c6f6e792d746f6b656e2d726563697069656e742d7472616e736665722d6661696c6564636f6c6f6e792d746f6b656e2d7a65726f2d616d6f756e742d7665737465642d7065722d6d6f6e7468636f6c6f6e792d746f6b656e2d73656e6465722d7472616e736665722d6661696c6564a165627a7a72305820ccf406410a12201c40f6b207dcb50505abb97b7f5709fac03c31ec48e08fb5cd0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d101dcc414f310268c37eeb4cd376ccfa507f5710000000000000000000000001288d4d08c3e79b81c2db1ce459ae374fc978d34000000000000000000000000e3648e99b6e68a09e28428790d12b357f081dbe0
-----Decoded View---------------
Arg [0] : _token (address): 0xD101dCC414F310268c37eEb4cD376CcFA507F571
Arg [1] : _colonyMultiSig (address): 0x1288d4d08C3e79b81C2DB1CE459AE374fC978D34
Arg [2] : _refundRecipient (address): 0xE3648e99B6E68A09e28428790D12B357f081dBe0
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000d101dcc414f310268c37eeb4cd376ccfa507f571
Arg [1] : 0000000000000000000000001288d4d08c3e79b81c2db1ce459ae374fc978d34
Arg [2] : 000000000000000000000000e3648e99b6e68a09e28428790d12b357f081dbe0
Deployed Bytecode Sourcemap
13372:6561:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13372:6561:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13461:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13427:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16873:856;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16873:856:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;14011:45;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14011:45:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15577:1031;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;15577:1031:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17948:616;;;:::i;:::-;;13404:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18825:1105;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18825:1105:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13461:30;;;;;;;;;;;;;:::o;13427:29::-;;;;;;;;;;;;;:::o;16873:856::-;14244:15;;;;;;;;;;;14230:29;;:10;:29;;;14222:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16960:24;16987:11;:23;16999:10;16987:23;;;;;;;;;;;;;;;16960:50;;17017:19;17043:20;17101:31;17121:10;17101:19;:31::i;:::-;17070:62;;;;;;;;17139:23;17173:66;17177:47;17181:10;:17;;;;;;;;;;;;17177:47;;17200:10;:23;;;;;;;;;;;;17177:47;;:3;:47::i;:::-;17226:12;17173:66;;:3;:66::i;:::-;17139:101;;17257:5;;;;;;;;;;;:14;;;17272:10;17284:12;17257:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17257:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17257:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17257:40:0;;;;;;;;;;;;;;;;17249:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17355:5;;;;;;;;;;;:14;;;17370:15;;;;;;;;;;;17387;17355:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17355:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17355:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17355:48:0;;;;;;;;;;;;;;;;17347:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17485:1;17462:10;:20;;:24;;;;17513:1;17493:10;:17;;;:21;;;;;;;;;;;;;;;;;;17550:1;17521:10;:26;;;:30;;;;;;;;;;;;;;;;;;17584:1;17558:10;:23;;;:27;;;;;;;;;;;;;;;;;;17619:1;17592:10;:24;;;:28;;;;;;;;;;;;;;;;;;17653:1;17627:10;:23;;;:27;;;;;;;;;;;;;;;;;;17668:55;17681:10;17693:12;17707:15;17668:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14298:1;;;;16873:856;:::o;14011:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15577:1031::-;14120:14;;;;;;;;;;;14106:28;;:10;:28;;;14098:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15758:10;14518:1;14486:11;:18;14498:5;14486:18;;;;;;;;;;;;;;;:28;;;:33;14478:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15804:1;15788:13;:17;;;15780:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15874:13;15855:32;;:16;:32;;;15847:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15938:25;15976:16;15966:26;;:7;:26;;;;;;;;15938:54;;;;16030:1;16007:20;:24;15999:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16162:5;;;;;;;;;;;:18;;;16181:14;;;;;;;;;;;16205:4;16212:7;16162:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16162:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16162:58:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16162:58:0;;;;;;;;;;;;;;;;;16229:18;;:::i;:::-;16250:219;;;;;;;;16290:1;16276:10;:15;:34;;16300:10;16276:34;;;16294:3;16276:34;16250:219;;;;16327:7;16250:219;;;;;;16360:16;16250:219;;;;;;16399:13;16250:219;;;;;;16436:1;16250:219;;;;;;16460:1;16250:219;;;;;16229:240;;16504:5;16478:11;:23;16490:10;16478:23;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16521:81;16532:10;16544:5;:15;;;16561:7;16570:16;16588:13;16521:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14561:1;;14173;15577:1031;;;;;:::o;17948:616::-;17991:19;18017:20;18075:31;18095:10;18075:19;:31::i;:::-;18044:62;;;;;;;;18136:1;18121:12;:16;;;18113:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18182:24;18209:11;:23;18221:10;18209:23;;;;;;;;;;;;;;;18182:50;;18273:43;18277:10;:24;;;;;;;;;;;;18273:43;;18303:12;18273:43;;:3;:43::i;:::-;18239:10;:24;;;:78;;;;;;;;;;;;;;;;;;18358:42;18362:10;:23;;;;;;;;;;;;18358:42;;18387:12;18358:42;;:3;:42::i;:::-;18324:10;:23;;;:77;;;;;;;;;;;;;;;;;;18422:5;;;;;;;;;;;:14;;;18437:10;18449:12;18422:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18422:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18422:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18422:40:0;;;;;;;;;;;;;;;;18414:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18514:44;18533:10;18545:12;18514:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17948:616;;;:::o;13404:18::-;;;;;;;;;;;;;:::o;18825:1105::-;18895:6;18903:7;18919:24;18946:11;:23;18958:10;18946:23;;;;;;;;;;;;;;;18919:50;;19079:10;:20;;;19073:3;:26;19069:62;;;19118:1;19121;19110:13;;;;;;;;;;;;;19069:62;19171:16;19190:30;19194:3;19199:10;:20;;;19190:3;:30::i;:::-;19171:49;;19227:18;13541:7;19248:11;:31;;;;;;19227:52;;19312:10;:23;;;;;;;;;;;;19296:39;;:13;:39;19292:75;;;19354:1;19357;19346:13;;;;;;;;;;;;;;;19292:75;19448:10;:26;;;;;;;;;;;;19431:43;;:13;:43;19427:498;;19485:22;19530:10;:23;;;;;;;;;;;;19510:10;:17;;;;;;;;;;;;:43;19485:68;;19570:10;:26;;;;;;;;;;;;19598:14;19562:51;;;;;;;;;;19427:498;19636:19;19665:44;19669:13;19684:10;:24;;;;;;;;;;;;19665:44;;:3;:44::i;:::-;19636:74;;19719:25;19767:10;:26;;;;;;;;;;;;19747:46;;:10;:17;;;;;;;;;;;;:46;;;;;;;;19719:74;;;;19802:20;19833:39;19837:12;19833:39;;19851:20;19833:3;:39::i;:::-;19802:71;;19890:12;19904;19882:35;;;;;;;;;;18825:1105;;;;:::o;4206:129::-;4258:6;4300:1;4294;4290;:5;4286:9;;;4285:16;;4277:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4206:129;;;;:::o;4072:128::-;4124:6;4166:1;4160;4156;:5;4152:9;;;4151:16;;4143:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4072:128;;;;:::o;4341:142::-;4393:6;4425:1;4420;:6;:30;;;;4449:1;4444;4439;4435;:5;4431:9;;;4430:15;;;;;;:20;4420:30;4412:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4341:142;;;;:::o;13372:6561::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
bzzr://ccf406410a12201c40f6b207dcb50505abb97b7f5709fac03c31ec48e08fb5cd
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 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.