ETH Price: $1,939.07 (-2.64%)
 

Overview

Max Total Supply

18,817,605.539925439788031325 xWALLET

Holders

457 ( -0.875%)

Transfers

-
10 ( -33.33%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Ambire is a secure, self-custodial Web3 wallet built for EVM networks. It allows users to send, receive, and swap assets across chains while maintaining full control of their keys.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
StakingPool

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2022-02-13
*/

// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.8.7;

interface ISupplyController {
	function mintableVesting(address addr, uint end, uint amountPerSecond) external view returns (uint);
	function mintVesting(address recipient, uint end, uint amountPerSecond) external;
}

interface IWALLETToken {
	function transfer(address to, uint256 amount) external returns (bool);
	function transferFrom(address from, address to, uint256 amount) external returns (bool);
	function approve(address spender, uint256 amount) external returns (bool);
	function balanceOf(address spender) external view returns (uint);
	function allowance(address owner, address spender) external view returns (uint);
	function totalSupply() external returns (uint);
	function supplyController() external view returns (ISupplyController);
	// function changeSupplyController(address newSupplyController) external;
}

contract StakingPool {
	// ERC20 stuff
	// Constants
	string public constant name = "Ambire Wallet Staking Token";
	uint8 public constant decimals = 18;
	string public constant symbol = "xWALLET";

	// Mutable variables
	uint public totalSupply;
	mapping(address => uint) private balances;
	mapping(address => mapping(address => uint)) private allowed;

	// EIP 2612
	bytes32 public DOMAIN_SEPARATOR;
	// keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
	bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;
	mapping(address => uint) public nonces;

	// ERC20 events
	event Approval(address indexed owner, address indexed spender, uint amount);
	event Transfer(address indexed from, address indexed to, uint amount);

	// ERC20 methods
	function balanceOf(address owner) external view returns (uint balance) {
		return balances[owner];
	}

	function transfer(address to, uint amount) external returns (bool success) {
		require(to != address(this), "BAD_ADDRESS");
		balances[msg.sender] = balances[msg.sender] - amount;
		balances[to] = balances[to] + amount;
		emit Transfer(msg.sender, to, amount);
		return true;
	}

	function transferFrom(address from, address to, uint amount) external returns (bool success) {
		balances[from] = balances[from] - amount;
		allowed[from][msg.sender] = allowed[from][msg.sender] - amount;
		balances[to] = balances[to] + amount;
		emit Transfer(from, to, amount);
		return true;
	}

	function approve(address spender, uint amount) external returns (bool success) {
		allowed[msg.sender][spender] = amount;
		emit Approval(msg.sender, spender, amount);
		return true;
	}

	function allowance(address owner, address spender) external view returns (uint remaining) {
		return allowed[owner][spender];
	}

	// EIP 2612
	function permit(address owner, address spender, uint amount, uint deadline, uint8 v, bytes32 r, bytes32 s) external {
		require(deadline >= block.timestamp, "DEADLINE_EXPIRED");
		bytes32 digest = keccak256(abi.encodePacked(
			"\x19\x01",
			DOMAIN_SEPARATOR,
			keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, amount, nonces[owner]++, deadline))
		));
		address recoveredAddress = ecrecover(digest, v, r, s);
		require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNATURE");
		allowed[owner][spender] = amount;
		emit Approval(owner, spender, amount);
	}

	// Inner
	function innerMint(address owner, uint amount) internal {
		totalSupply = totalSupply + amount;
		balances[owner] = balances[owner] + amount;
		// Because of https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md#transfer-1
		emit Transfer(address(0), owner, amount);
	}
	function innerBurn(address owner, uint amount) internal {
		totalSupply = totalSupply - amount;
		balances[owner] = balances[owner] - amount;
		emit Transfer(owner, address(0), amount);
	}

	// Pool functionality
	uint public timeToUnbond = 20 days;
	uint public rageReceivedPromilles = 700;
	// Vesting parameters
	// we call .mintVesting to get the additional incentive tokens for this pool
	uint public vestingEnd = 1675576800;
	uint public vestingAmountPerSec = 1268391679350580000;

	IWALLETToken public immutable WALLET;
	address public governance;

	// Commitment ID against the max amount of tokens it will pay out
	mapping (bytes32 => uint) public commitments;
	// How many of a user's shares are locked
	mapping (address => uint) public lockedShares;
	// Unbonding commitment from a staker
	struct UnbondCommitment {
		address owner;
		uint shares;
		uint unlocksAt;
	}

	// Staking pool events
	// LogLeave/LogWithdraw must begin with the UnbondCommitment struct
	event LogLeave(address indexed owner, uint shares, uint unlocksAt, uint maxTokens);
	event LogWithdraw(address indexed owner, uint shares, uint unlocksAt, uint maxTokens, uint receivedTokens);
	event LogRageLeave(address indexed owner, uint shares, uint maxTokens, uint receivedTokens);

	constructor(IWALLETToken token, address governanceAddr) {
		WALLET = token;
		governance = governanceAddr;

		// EIP 2612
		uint chainId;
		assembly {
			chainId := chainid()
		}
		DOMAIN_SEPARATOR = keccak256(
			abi.encode(
				keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
				keccak256(bytes(name)),
				keccak256(bytes("1")),
				chainId,
				address(this)
			)
		);
	}

	// Governance functions
	function setGovernance(address addr) external {
		require(governance == msg.sender, "NOT_GOVERNANCE");
		governance = addr;
	}
	function setRageReceived(uint rageReceived) external {
		require(governance == msg.sender, "NOT_GOVERNANCE");
		// AUDIT: should there be a minimum here?
		require(rageReceived <= 1000, "TOO_LARGE");
		rageReceivedPromilles = rageReceived;
	}
	function setTimeToUnbond(uint time) external {
		require(governance == msg.sender, "NOT_GOVERNANCE");
		require(time >= 1 days && time <= 30 days, "BOUNDS");
		timeToUnbond = time;
	}
	function setVestingParams(uint end, uint amountPerSecond) external {
		require(governance == msg.sender, "NOT_GOVERNANCE");
		vestingEnd = end;
		vestingAmountPerSec = amountPerSecond;
	}

	// Pool stuff
	function shareValue() external view returns (uint) {
		if (totalSupply == 0) return 0;
		return ((WALLET.balanceOf(address(this)) + WALLET.supplyController().mintableVesting(address(this), vestingEnd, vestingAmountPerSec))
			* 1e18)
			/ totalSupply;
	}

	function innerEnter(address recipient, uint amount) internal {
		// Please note that minting has to be in the beginning so that we take it into account
		// when using IWALLETToken.balanceOf()
		// Minting makes an external call but it"s to a trusted contract (IIWALLETToken)
		WALLET.supplyController().mintVesting(address(this), vestingEnd, vestingAmountPerSec);

		uint totalWALLET = WALLET.balanceOf(address(this));

		// The totalWALLET == 0 check here should be redudnant; the only way to get totalSupply to a nonzero val is by adding WALLET
		if (totalSupply == 0 || totalWALLET == 0) {
			innerMint(recipient, amount);
		} else {
			uint256 newShares = (amount * totalSupply) / totalWALLET;
			innerMint(recipient, newShares);
		}
		// AUDIT: no need to check return value cause WALLET throws
		WALLET.transferFrom(msg.sender, address(this), amount);
		// no events, as innerMint already emits enough to know the shares amount and price
	}

	function enter(uint amount) external {
		innerEnter(msg.sender, amount);
	}

	function enterTo(address recipient, uint amount) external {
		innerEnter(recipient, amount);
	}

	function unbondingCommitmentWorth(address owner, uint shares, uint unlocksAt) external view returns (uint) {
		if (totalSupply == 0) return 0;
		bytes32 commitmentId = keccak256(abi.encode(UnbondCommitment({ owner: owner, shares: shares, unlocksAt: unlocksAt })));
		uint maxTokens = commitments[commitmentId];
		uint totalWALLET = WALLET.balanceOf(address(this));
		uint currentTokens = (shares * totalWALLET) / totalSupply;
		return currentTokens > maxTokens ? maxTokens : currentTokens;
	}

	function leave(uint shares, bool skipMint) external {
		if (!skipMint) WALLET.supplyController().mintVesting(address(this), vestingEnd, vestingAmountPerSec);

		require(shares <= balances[msg.sender] - lockedShares[msg.sender], "INSUFFICIENT_SHARES");
		uint totalWALLET = WALLET.balanceOf(address(this));
		uint maxTokens = (shares * totalWALLET) / totalSupply;
		uint unlocksAt = block.timestamp + timeToUnbond;
		bytes32 commitmentId = keccak256(abi.encode(UnbondCommitment({ owner: msg.sender, shares: shares, unlocksAt: unlocksAt })));
		require(commitments[commitmentId] == 0, "COMMITMENT_EXISTS");

		commitments[commitmentId] = maxTokens;
		lockedShares[msg.sender] += shares;

		emit LogLeave(msg.sender, shares, unlocksAt, maxTokens);
	}

	function withdraw(uint shares, uint unlocksAt, bool skipMint) external {
		if (!skipMint) WALLET.supplyController().mintVesting(address(this), vestingEnd, vestingAmountPerSec);

		require(block.timestamp > unlocksAt, "UNLOCK_TOO_EARLY");
		bytes32 commitmentId = keccak256(abi.encode(UnbondCommitment({ owner: msg.sender, shares: shares, unlocksAt: unlocksAt })));
		uint maxTokens = commitments[commitmentId];
		require(maxTokens > 0, "NO_COMMITMENT");
		uint totalWALLET = WALLET.balanceOf(address(this));
		uint currentTokens = (shares * totalWALLET) / totalSupply;
		uint receivedTokens = currentTokens > maxTokens ? maxTokens : currentTokens;

		commitments[commitmentId] = 0;
		lockedShares[msg.sender] -= shares;

		innerBurn(msg.sender, shares);
		// AUDIT: no need to check return value cause WALLET throws
		WALLET.transfer(msg.sender, receivedTokens);

		emit LogWithdraw(msg.sender, shares, unlocksAt, maxTokens, receivedTokens);
	}

	function rageLeave(uint shares, bool skipMint) external {
		if (!skipMint) WALLET.supplyController().mintVesting(address(this), vestingEnd, vestingAmountPerSec);

		uint totalWALLET = WALLET.balanceOf(address(this));
		uint walletAmount = (shares * totalWALLET) / totalSupply;
		uint receivedTokens = (walletAmount * rageReceivedPromilles) / 1000;
		innerBurn(msg.sender, shares);
		// AUDIT: no need to check return value cause WALLET throws
		WALLET.transfer(msg.sender, receivedTokens);

		emit LogRageLeave(msg.sender, shares, walletAmount, receivedTokens);
	}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"contract IWALLETToken","name":"token","type":"address"},{"internalType":"address","name":"governanceAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unlocksAt","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTokens","type":"uint256"}],"name":"LogLeave","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"receivedTokens","type":"uint256"}],"name":"LogRageLeave","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unlocksAt","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"receivedTokens","type":"uint256"}],"name":"LogWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WALLET","outputs":[{"internalType":"contract IWALLETToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"commitments","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"enter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"enterTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"bool","name":"skipMint","type":"bool"}],"name":"leave","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lockedShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"bool","name":"skipMint","type":"bool"}],"name":"rageLeave","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rageReceivedPromilles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rageReceived","type":"uint256"}],"name":"setRageReceived","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"setTimeToUnbond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"uint256","name":"amountPerSecond","type":"uint256"}],"name":"setVestingParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shareValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeToUnbond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"unlocksAt","type":"uint256"}],"name":"unbondingCommitmentWorth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vestingAmountPerSec","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vestingEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"unlocksAt","type":"uint256"},{"internalType":"bool","name":"skipMint","type":"bool"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a0604052621a5e006005556102bc6006556363df45e060075567119a3b831bc0a3206008553480156200003257600080fd5b506040516200225e3803806200225e83398101604081905262000055916200017c565b606082811b6001600160601b0319166080908152600980546001600160a01b0319166001600160a01b038516179055604080518082018252601b81527f416d626972652057616c6c6574205374616b696e6720546f6b656e00000000006020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f917bafd591101eaf638aaa78d29b251132e8984c5547524872e0084d8be158fd918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc692810192909252469082018190523060a08301529060c00160405160208183030381529060405280519060200120600381905550505050620001d4565b600080604083850312156200019057600080fd5b82516200019d81620001bb565b6020840151909250620001b081620001bb565b809150509250929050565b6001600160a01b0381168114620001d157600080fd5b50565b60805160601c612009620002556000396000818161034701528181610703015281816108ee015281816109fe01528181610aea01528181610c1201528181610cc601528181610dd401528181610eb90152818161100b015281816110cd01528181611246015281816118d0015281816119dc0152611acf01526120096000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c8063839df9451161010f578063ab033ea9116100a2578063dd62ed3e11610071578063dd62ed3e146104ab578063e336ac44146104e4578063eb65887814610504578063f893d3461461051757600080fd5b8063ab033ea914610469578063adec4a501461047c578063c4911ee014610485578063d505accf1461049857600080fd5b806395d89b41116100de57806395d89b411461040a5780639b4ee06414610430578063a59f3e0c14610443578063a9059cbb1461045657600080fd5b8063839df945146103bb57806384a1931f146103db5780638a07b419146103e45780638ec0a9eb146103f757600080fd5b806333cfcd3b116101875780636d9cdbc6116101565780636d9cdbc6146103425780636e6eff3e1461036957806370a08231146103725780637ecebe001461039b57600080fd5b806333cfcd3b146102f35780633644e51514610306578063447b15f41461030f5780635aa6e6751461031757600080fd5b806320c33386116101c357806320c333861461029657806323b872dd1461029f57806330adf81f146102b2578063313ce567146102d957600080fd5b806306fdde03146101f5578063070141c114610247578063095ea7b31461025c57806318160ddd1461027f575b600080fd5b6102316040518060400160405280601b81526020017f416d626972652057616c6c6574205374616b696e6720546f6b656e000000000081525081565b60405161023e9190611e48565b60405180910390f35b61025a610255366004611d58565b61052a565b005b61026f61026a366004611cda565b6105a0565b604051901515815260200161023e565b61028860005481565b60405190815260200161023e565b61028860085481565b61026f6102ad366004611c22565b61060c565b6102887f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6102e1601281565b60405160ff909116815260200161023e565b61025a610301366004611dee565b6106fc565b61028860035481565b610288610ad7565b60095461032a906001600160a01b031681565b6040516001600160a01b03909116815260200161023e565b61032a7f000000000000000000000000000000000000000000000000000000000000000081565b61028860065481565b610288610380366004611bcc565b6001600160a01b031660009081526001602052604090205490565b6102886103a9366004611bcc565b60046020526000908152604090205481565b6102886103c9366004611d58565b600a6020526000908152604090205481565b61028860075481565b61025a6103f2366004611da7565b610cbf565b610288610405366004611d06565b610f88565b610231604051806040016040528060078152602001661e15d05313115560ca1b81525081565b61025a61043e366004611da7565b6110c6565b61025a610451366004611d58565b611415565b61026f610464366004611cda565b611422565b61025a610477366004611bcc565b6114f2565b61028860055481565b61025a610493366004611d58565b61153e565b61025a6104a6366004611c63565b6115b8565b6102886104b9366004611be9565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6102886104f2366004611bcc565b600b6020526000908152604090205481565b61025a610512366004611dcc565b61180f565b61025a610525366004611cda565b611844565b6009546001600160a01b0316331461055d5760405162461bcd60e51b815260040161055490611e9d565b60405180910390fd5b6103e881111561059b5760405162461bcd60e51b8152602060048201526009602482015268544f4f5f4c4152474560b81b6044820152606401610554565b600655565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105fb9086815260200190565b60405180910390a350600192915050565b6001600160a01b038316600090815260016020526040812054610630908390611f48565b6001600160a01b0385166000908152600160209081526040808320939093556002815282822033835290522054610668908390611f48565b6001600160a01b0380861660009081526002602090815260408083203384528252808320949094559186168152600190915220546106a7908390611eef565b6001600160a01b038085166000818152600160205260409081902093909355915190861690600080516020611fb4833981519152906106e99086815260200190565b60405180910390a35060015b9392505050565b806107f9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b15801561075a57600080fd5b505afa15801561076e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107929190611d71565b6007546008546040516302e464e560e21b81526001600160a01b039390931692630b919394926107c6923092600401611e27565b600060405180830381600087803b1580156107e057600080fd5b505af11580156107f4573d6000803e3d6000fd5b505050505b81421161083b5760405162461bcd60e51b815260206004820152601060248201526f554e4c4f434b5f544f4f5f4541524c5960801b6044820152606401610554565b60006040518060600160405280336001600160a01b03168152602001858152602001848152506040516020016108719190611ec5565b60408051601f1981840301815291815281516020928301206000818152600a909352912054909150806108d65760405162461bcd60e51b815260206004820152600d60248201526c1393d7d0d3d353525513515395609a1b6044820152606401610554565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b15801561093857600080fd5b505afa15801561094c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109709190611d8e565b90506000805482886109829190611f29565b61098c9190611f07565b9050600083821161099d578161099f565b835b6000868152600a60209081526040808320839055338352600b909152812080549293508a929091906109d2908490611f48565b909155506109e290503389611852565b60405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb90604401602060405180830381600087803b158015610a4a57600080fd5b505af1158015610a5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a829190611d3b565b5060408051898152602081018990529081018590526060810182905233907f71ec6330779eb13064fdcb040e03c78e2f9e68fb56bcf3ad120223fd1bcd42189060800160405180910390a25050505050505050565b60008054610ae55750600090565b6000547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b158015610b4157600080fd5b505afa158015610b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b799190611d71565b60075460085460405163d071821f60e01b81526001600160a01b03939093169263d071821f92610bad923092600401611e27565b60206040518083038186803b158015610bc557600080fd5b505afa158015610bd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfd9190611d8e565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015610c5c57600080fd5b505afa158015610c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c949190611d8e565b610c9e9190611eef565b610cb090670de0b6b3a7640000611f29565b610cba9190611f07565b905090565b80610dbc577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b158015610d1d57600080fd5b505afa158015610d31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d559190611d71565b6007546008546040516302e464e560e21b81526001600160a01b039390931692630b91939492610d89923092600401611e27565b600060405180830381600087803b158015610da357600080fd5b505af1158015610db7573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015610e1e57600080fd5b505afa158015610e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e569190611d8e565b9050600080548285610e689190611f29565b610e729190611f07565b905060006103e860065483610e879190611f29565b610e919190611f07565b9050610e9d3386611852565b60405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb90604401602060405180830381600087803b158015610f0557600080fd5b505af1158015610f19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3d9190611d3b565b50604080518681526020810184905290810182905233907ff401020088a10cade8fca19ce1c014addc7dd08d911cdd8a9de214dbfafbbe759060600160405180910390a25050505050565b60008054610f98575060006106f5565b60006040518060600160405280866001600160a01b0316815260200185815260200184815250604051602001610fce9190611ec5565b60408051808303601f1901815282825280516020918201206000818152600a909252918120546370a0823160e01b845230600485015291935090917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b15801561105557600080fd5b505afa158015611069573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108d9190611d8e565b905060008054828861109f9190611f29565b6110a99190611f07565b90508281116110b857806110ba565b825b98975050505050505050565b806111c3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b15801561112457600080fd5b505afa158015611138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115c9190611d71565b6007546008546040516302e464e560e21b81526001600160a01b039390931692630b91939492611190923092600401611e27565b600060405180830381600087803b1580156111aa57600080fd5b505af11580156111be573d6000803e3d6000fd5b505050505b336000908152600b60209081526040808320546001909252909120546111e99190611f48565b82111561122e5760405162461bcd60e51b8152602060048201526013602482015272494e53554646494349454e545f53484152455360681b6044820152606401610554565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b15801561129057600080fd5b505afa1580156112a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c89190611d8e565b90506000805482856112da9190611f29565b6112e49190611f07565b90506000600554426112f69190611eef565b905060006040518060600160405280336001600160a01b031681526020018781526020018381525060405160200161132e9190611ec5565b60408051601f1981840301815291815281516020928301206000818152600a909352912054909150156113975760405162461bcd60e51b8152602060048201526011602482015270434f4d4d49544d454e545f45584953545360781b6044820152606401610554565b6000818152600a60209081526040808320869055338352600b909152812080548892906113c5908490611eef565b9091555050604080518781526020810184905290810184905233907f99e851f3e691e421e8cb75d61f7ecfa09423e645915271a1813ed6c148c2a0a99060600160405180910390a2505050505050565b61141f33826118ce565b50565b60006001600160a01b03831630141561146b5760405162461bcd60e51b815260206004820152600b60248201526a4241445f4144445245535360a81b6044820152606401610554565b33600090815260016020526040902054611486908390611f48565b33600090815260016020526040808220929092556001600160a01b038516815220546114b3908390611eef565b6001600160a01b038416600081815260016020526040908190209290925590513390600080516020611fb4833981519152906105fb9086815260200190565b6009546001600160a01b0316331461151c5760405162461bcd60e51b815260040161055490611e9d565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6009546001600160a01b031633146115685760405162461bcd60e51b815260040161055490611e9d565b62015180811015801561157e575062278d008111155b6115b35760405162461bcd60e51b8152602060048201526006602482015265424f554e445360d01b6044820152606401610554565b600555565b428410156115fb5760405162461bcd60e51b815260206004820152601060248201526f111150511312539157d156141254915160821b6044820152606401610554565b6003546001600160a01b038816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91908761164e83611f5f565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016116c792919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611732573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906117685750886001600160a01b0316816001600160a01b0316145b6117a85760405162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b6044820152606401610554565b6001600160a01b038981166000818152600260209081526040808320948d16808452948252918290208b905590518a81527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b6009546001600160a01b031633146118395760405162461bcd60e51b815260040161055490611e9d565b600791909155600855565b61184e82826118ce565b5050565b806000546118609190611f48565b60009081556001600160a01b038316815260016020526040902054611886908290611f48565b6001600160a01b038316600081815260016020526040808220939093559151600080516020611fb4833981519152906118c29085815260200190565b60405180910390a35050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b15801561192757600080fd5b505afa15801561193b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195f9190611d71565b6007546008546040516302e464e560e21b81526001600160a01b039390931692630b91939492611993923092600401611e27565b600060405180830381600087803b1580156119ad57600080fd5b505af11580156119c1573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691506370a082319060240160206040518083038186803b158015611a2757600080fd5b505afa158015611a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5f9190611d8e565b905060005460001480611a70575080155b15611a8457611a7f8383611b59565b611aad565b60008160005484611a959190611f29565b611a9f9190611f07565b9050611aab8482611b59565b505b6040516323b872dd60e01b8152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd90606401602060405180830381600087803b158015611b1b57600080fd5b505af1158015611b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b539190611d3b565b50505050565b80600054611b679190611eef565b60009081556001600160a01b038316815260016020526040902054611b8d908290611eef565b6001600160a01b038316600081815260016020526040808220939093559151909190600080516020611fb4833981519152906118c29085815260200190565b600060208284031215611bde57600080fd5b81356106f581611f90565b60008060408385031215611bfc57600080fd5b8235611c0781611f90565b91506020830135611c1781611f90565b809150509250929050565b600080600060608486031215611c3757600080fd5b8335611c4281611f90565b92506020840135611c5281611f90565b929592945050506040919091013590565b600080600080600080600060e0888a031215611c7e57600080fd5b8735611c8981611f90565b96506020880135611c9981611f90565b95506040880135945060608801359350608088013560ff81168114611cbd57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611ced57600080fd5b8235611cf881611f90565b946020939093013593505050565b600080600060608486031215611d1b57600080fd5b8335611d2681611f90565b95602085013595506040909401359392505050565b600060208284031215611d4d57600080fd5b81516106f581611fa5565b600060208284031215611d6a57600080fd5b5035919050565b600060208284031215611d8357600080fd5b81516106f581611f90565b600060208284031215611da057600080fd5b5051919050565b60008060408385031215611dba57600080fd5b823591506020830135611c1781611fa5565b60008060408385031215611ddf57600080fd5b50508035926020909101359150565b600080600060608486031215611e0357600080fd5b83359250602084013591506040840135611e1c81611fa5565b809150509250925092565b6001600160a01b039390931683526020830191909152604082015260600190565b600060208083528351808285015260005b81811015611e7557858101830151858201604001528201611e59565b81811115611e87576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252600e908201526d4e4f545f474f5645524e414e434560901b604082015260600190565b81516001600160a01b03168152602080830151908201526040918201519181019190915260600190565b60008219821115611f0257611f02611f7a565b500190565b600082611f2457634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611f4357611f43611f7a565b500290565b600082821015611f5a57611f5a611f7a565b500390565b6000600019821415611f7357611f73611f7a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461141f57600080fd5b801515811461141f57600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220192b614c5e30cea5d75dfac12ba14851b6bd18631decd0a117c18f1520a9b22f64736f6c6343000807003300000000000000000000000088800092ff476844f74dc2fc427974bbee2794ae0000000000000000000000002f83c84d36cb8139e4e5d55248d6255c508aaced

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101f05760003560e01c8063839df9451161010f578063ab033ea9116100a2578063dd62ed3e11610071578063dd62ed3e146104ab578063e336ac44146104e4578063eb65887814610504578063f893d3461461051757600080fd5b8063ab033ea914610469578063adec4a501461047c578063c4911ee014610485578063d505accf1461049857600080fd5b806395d89b41116100de57806395d89b411461040a5780639b4ee06414610430578063a59f3e0c14610443578063a9059cbb1461045657600080fd5b8063839df945146103bb57806384a1931f146103db5780638a07b419146103e45780638ec0a9eb146103f757600080fd5b806333cfcd3b116101875780636d9cdbc6116101565780636d9cdbc6146103425780636e6eff3e1461036957806370a08231146103725780637ecebe001461039b57600080fd5b806333cfcd3b146102f35780633644e51514610306578063447b15f41461030f5780635aa6e6751461031757600080fd5b806320c33386116101c357806320c333861461029657806323b872dd1461029f57806330adf81f146102b2578063313ce567146102d957600080fd5b806306fdde03146101f5578063070141c114610247578063095ea7b31461025c57806318160ddd1461027f575b600080fd5b6102316040518060400160405280601b81526020017f416d626972652057616c6c6574205374616b696e6720546f6b656e000000000081525081565b60405161023e9190611e48565b60405180910390f35b61025a610255366004611d58565b61052a565b005b61026f61026a366004611cda565b6105a0565b604051901515815260200161023e565b61028860005481565b60405190815260200161023e565b61028860085481565b61026f6102ad366004611c22565b61060c565b6102887f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6102e1601281565b60405160ff909116815260200161023e565b61025a610301366004611dee565b6106fc565b61028860035481565b610288610ad7565b60095461032a906001600160a01b031681565b6040516001600160a01b03909116815260200161023e565b61032a7f00000000000000000000000088800092ff476844f74dc2fc427974bbee2794ae81565b61028860065481565b610288610380366004611bcc565b6001600160a01b031660009081526001602052604090205490565b6102886103a9366004611bcc565b60046020526000908152604090205481565b6102886103c9366004611d58565b600a6020526000908152604090205481565b61028860075481565b61025a6103f2366004611da7565b610cbf565b610288610405366004611d06565b610f88565b610231604051806040016040528060078152602001661e15d05313115560ca1b81525081565b61025a61043e366004611da7565b6110c6565b61025a610451366004611d58565b611415565b61026f610464366004611cda565b611422565b61025a610477366004611bcc565b6114f2565b61028860055481565b61025a610493366004611d58565b61153e565b61025a6104a6366004611c63565b6115b8565b6102886104b9366004611be9565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6102886104f2366004611bcc565b600b6020526000908152604090205481565b61025a610512366004611dcc565b61180f565b61025a610525366004611cda565b611844565b6009546001600160a01b0316331461055d5760405162461bcd60e51b815260040161055490611e9d565b60405180910390fd5b6103e881111561059b5760405162461bcd60e51b8152602060048201526009602482015268544f4f5f4c4152474560b81b6044820152606401610554565b600655565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105fb9086815260200190565b60405180910390a350600192915050565b6001600160a01b038316600090815260016020526040812054610630908390611f48565b6001600160a01b0385166000908152600160209081526040808320939093556002815282822033835290522054610668908390611f48565b6001600160a01b0380861660009081526002602090815260408083203384528252808320949094559186168152600190915220546106a7908390611eef565b6001600160a01b038085166000818152600160205260409081902093909355915190861690600080516020611fb4833981519152906106e99086815260200190565b60405180910390a35060015b9392505050565b806107f9577f00000000000000000000000088800092ff476844f74dc2fc427974bbee2794ae6001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b15801561075a57600080fd5b505afa15801561076e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107929190611d71565b6007546008546040516302e464e560e21b81526001600160a01b039390931692630b919394926107c6923092600401611e27565b600060405180830381600087803b1580156107e057600080fd5b505af11580156107f4573d6000803e3d6000fd5b505050505b81421161083b5760405162461bcd60e51b815260206004820152601060248201526f554e4c4f434b5f544f4f5f4541524c5960801b6044820152606401610554565b60006040518060600160405280336001600160a01b03168152602001858152602001848152506040516020016108719190611ec5565b60408051601f1981840301815291815281516020928301206000818152600a909352912054909150806108d65760405162461bcd60e51b815260206004820152600d60248201526c1393d7d0d3d353525513515395609a1b6044820152606401610554565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000088800092ff476844f74dc2fc427974bbee2794ae6001600160a01b0316906370a082319060240160206040518083038186803b15801561093857600080fd5b505afa15801561094c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109709190611d8e565b90506000805482886109829190611f29565b61098c9190611f07565b9050600083821161099d578161099f565b835b6000868152600a60209081526040808320839055338352600b909152812080549293508a929091906109d2908490611f48565b909155506109e290503389611852565b60405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000088800092ff476844f74dc2fc427974bbee2794ae6001600160a01b03169063a9059cbb90604401602060405180830381600087803b158015610a4a57600080fd5b505af1158015610a5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a829190611d3b565b5060408051898152602081018990529081018590526060810182905233907f71ec6330779eb13064fdcb040e03c78e2f9e68fb56bcf3ad120223fd1bcd42189060800160405180910390a25050505050505050565b60008054610ae55750600090565b6000547f00000000000000000000000088800092ff476844f74dc2fc427974bbee2794ae6001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b158015610b4157600080fd5b505afa158015610b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b799190611d71565b60075460085460405163d071821f60e01b81526001600160a01b03939093169263d071821f92610bad923092600401611e27565b60206040518083038186803b158015610bc557600080fd5b505afa158015610bd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfd9190611d8e565b6040516370a0823160e01b81523060048201527f00000000000000000000000088800092ff476844f74dc2fc427974bbee2794ae6001600160a01b0316906370a082319060240160206040518083038186803b158015610c5c57600080fd5b505afa158015610c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c949190611d8e565b610c9e9190611eef565b610cb090670de0b6b3a7640000611f29565b610cba9190611f07565b905090565b80610dbc577f00000000000000000000000088800092ff476844f74dc2fc427974bbee2794ae6001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b158015610d1d57600080fd5b505afa158015610d31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d559190611d71565b6007546008546040516302e464e560e21b81526001600160a01b039390931692630b91939492610d89923092600401611e27565b600060405180830381600087803b158015610da357600080fd5b505af1158015610db7573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81523060048201526000907f00000000000000000000000088800092ff476844f74dc2fc427974bbee2794ae6001600160a01b0316906370a082319060240160206040518083038186803b158015610e1e57600080fd5b505afa158015610e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e569190611d8e565b9050600080548285610e689190611f29565b610e729190611f07565b905060006103e860065483610e879190611f29565b610e919190611f07565b9050610e9d3386611852565b60405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000088800092ff476844f74dc2fc427974bbee2794ae6001600160a01b03169063a9059cbb90604401602060405180830381600087803b158015610f0557600080fd5b505af1158015610f19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3d9190611d3b565b50604080518681526020810184905290810182905233907ff401020088a10cade8fca19ce1c014addc7dd08d911cdd8a9de214dbfafbbe759060600160405180910390a25050505050565b60008054610f98575060006106f5565b60006040518060600160405280866001600160a01b0316815260200185815260200184815250604051602001610fce9190611ec5565b60408051808303601f1901815282825280516020918201206000818152600a909252918120546370a0823160e01b845230600485015291935090917f00000000000000000000000088800092ff476844f74dc2fc427974bbee2794ae6001600160a01b0316906370a082319060240160206040518083038186803b15801561105557600080fd5b505afa158015611069573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108d9190611d8e565b905060008054828861109f9190611f29565b6110a99190611f07565b90508281116110b857806110ba565b825b98975050505050505050565b806111c3577f00000000000000000000000088800092ff476844f74dc2fc427974bbee2794ae6001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b15801561112457600080fd5b505afa158015611138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115c9190611d71565b6007546008546040516302e464e560e21b81526001600160a01b039390931692630b91939492611190923092600401611e27565b600060405180830381600087803b1580156111aa57600080fd5b505af11580156111be573d6000803e3d6000fd5b505050505b336000908152600b60209081526040808320546001909252909120546111e99190611f48565b82111561122e5760405162461bcd60e51b8152602060048201526013602482015272494e53554646494349454e545f53484152455360681b6044820152606401610554565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000088800092ff476844f74dc2fc427974bbee2794ae6001600160a01b0316906370a082319060240160206040518083038186803b15801561129057600080fd5b505afa1580156112a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c89190611d8e565b90506000805482856112da9190611f29565b6112e49190611f07565b90506000600554426112f69190611eef565b905060006040518060600160405280336001600160a01b031681526020018781526020018381525060405160200161132e9190611ec5565b60408051601f1981840301815291815281516020928301206000818152600a909352912054909150156113975760405162461bcd60e51b8152602060048201526011602482015270434f4d4d49544d454e545f45584953545360781b6044820152606401610554565b6000818152600a60209081526040808320869055338352600b909152812080548892906113c5908490611eef565b9091555050604080518781526020810184905290810184905233907f99e851f3e691e421e8cb75d61f7ecfa09423e645915271a1813ed6c148c2a0a99060600160405180910390a2505050505050565b61141f33826118ce565b50565b60006001600160a01b03831630141561146b5760405162461bcd60e51b815260206004820152600b60248201526a4241445f4144445245535360a81b6044820152606401610554565b33600090815260016020526040902054611486908390611f48565b33600090815260016020526040808220929092556001600160a01b038516815220546114b3908390611eef565b6001600160a01b038416600081815260016020526040908190209290925590513390600080516020611fb4833981519152906105fb9086815260200190565b6009546001600160a01b0316331461151c5760405162461bcd60e51b815260040161055490611e9d565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6009546001600160a01b031633146115685760405162461bcd60e51b815260040161055490611e9d565b62015180811015801561157e575062278d008111155b6115b35760405162461bcd60e51b8152602060048201526006602482015265424f554e445360d01b6044820152606401610554565b600555565b428410156115fb5760405162461bcd60e51b815260206004820152601060248201526f111150511312539157d156141254915160821b6044820152606401610554565b6003546001600160a01b038816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91908761164e83611f5f565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016116c792919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611732573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906117685750886001600160a01b0316816001600160a01b0316145b6117a85760405162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b6044820152606401610554565b6001600160a01b038981166000818152600260209081526040808320948d16808452948252918290208b905590518a81527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b6009546001600160a01b031633146118395760405162461bcd60e51b815260040161055490611e9d565b600791909155600855565b61184e82826118ce565b5050565b806000546118609190611f48565b60009081556001600160a01b038316815260016020526040902054611886908290611f48565b6001600160a01b038316600081815260016020526040808220939093559151600080516020611fb4833981519152906118c29085815260200190565b60405180910390a35050565b7f00000000000000000000000088800092ff476844f74dc2fc427974bbee2794ae6001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b15801561192757600080fd5b505afa15801561193b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195f9190611d71565b6007546008546040516302e464e560e21b81526001600160a01b039390931692630b91939492611993923092600401611e27565b600060405180830381600087803b1580156119ad57600080fd5b505af11580156119c1573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092507f00000000000000000000000088800092ff476844f74dc2fc427974bbee2794ae6001600160a01b031691506370a082319060240160206040518083038186803b158015611a2757600080fd5b505afa158015611a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5f9190611d8e565b905060005460001480611a70575080155b15611a8457611a7f8383611b59565b611aad565b60008160005484611a959190611f29565b611a9f9190611f07565b9050611aab8482611b59565b505b6040516323b872dd60e01b8152336004820152306024820152604481018390527f00000000000000000000000088800092ff476844f74dc2fc427974bbee2794ae6001600160a01b0316906323b872dd90606401602060405180830381600087803b158015611b1b57600080fd5b505af1158015611b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b539190611d3b565b50505050565b80600054611b679190611eef565b60009081556001600160a01b038316815260016020526040902054611b8d908290611eef565b6001600160a01b038316600081815260016020526040808220939093559151909190600080516020611fb4833981519152906118c29085815260200190565b600060208284031215611bde57600080fd5b81356106f581611f90565b60008060408385031215611bfc57600080fd5b8235611c0781611f90565b91506020830135611c1781611f90565b809150509250929050565b600080600060608486031215611c3757600080fd5b8335611c4281611f90565b92506020840135611c5281611f90565b929592945050506040919091013590565b600080600080600080600060e0888a031215611c7e57600080fd5b8735611c8981611f90565b96506020880135611c9981611f90565b95506040880135945060608801359350608088013560ff81168114611cbd57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611ced57600080fd5b8235611cf881611f90565b946020939093013593505050565b600080600060608486031215611d1b57600080fd5b8335611d2681611f90565b95602085013595506040909401359392505050565b600060208284031215611d4d57600080fd5b81516106f581611fa5565b600060208284031215611d6a57600080fd5b5035919050565b600060208284031215611d8357600080fd5b81516106f581611f90565b600060208284031215611da057600080fd5b5051919050565b60008060408385031215611dba57600080fd5b823591506020830135611c1781611fa5565b60008060408385031215611ddf57600080fd5b50508035926020909101359150565b600080600060608486031215611e0357600080fd5b83359250602084013591506040840135611e1c81611fa5565b809150509250925092565b6001600160a01b039390931683526020830191909152604082015260600190565b600060208083528351808285015260005b81811015611e7557858101830151858201604001528201611e59565b81811115611e87576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252600e908201526d4e4f545f474f5645524e414e434560901b604082015260600190565b81516001600160a01b03168152602080830151908201526040918201519181019190915260600190565b60008219821115611f0257611f02611f7a565b500190565b600082611f2457634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611f4357611f43611f7a565b500290565b600082821015611f5a57611f5a611f7a565b500390565b6000600019821415611f7357611f73611f7a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461141f57600080fd5b801515811461141f57600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220192b614c5e30cea5d75dfac12ba14851b6bd18631decd0a117c18f1520a9b22f64736f6c63430008070033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000088800092ff476844f74dc2fc427974bbee2794ae0000000000000000000000002f83c84d36cb8139e4e5d55248d6255c508aaced

-----Decoded View---------------
Arg [0] : token (address): 0x88800092fF476844f74dC2FC427974BBee2794Ae
Arg [1] : governanceAddr (address): 0x2f83c84d36Cb8139E4e5D55248d6255C508AaCeD

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000088800092ff476844f74dc2fc427974bbee2794ae
Arg [1] : 0000000000000000000000002f83c84d36cb8139e4e5d55248d6255c508aaced


Deployed Bytecode Sourcemap

909:9602:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;966:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;5625:247;;;;;;:::i;:::-;;:::i;:::-;;2479:189;;;;;;:::i;:::-;;:::i;:::-;;;6479:14:1;;6472:22;6454:41;;6442:2;6427:18;2479:189:0;6314:187:1;1138:23:0;;;;;;;;;6652:25:1;;;6640:2;6625:18;1138:23:0;6506:177:1;4165:53:0;;;;;;2171:303;;;;;;:::i;:::-;;:::i;1427:108::-;;1469:66;1427:108;;1029:35;;1062:2;1029:35;;;;;13423:4:1;13411:17;;;13393:36;;13381:2;13366:18;1029:35:0;13251:184:1;8965:963:0;;;;;;:::i;:::-;;:::i;1290:31::-;;;;;;6277:259;;;:::i;4264:25::-;;;;;-1:-1:-1;;;;;4264:25:0;;;;;;-1:-1:-1;;;;;5261:32:1;;;5243:51;;5231:2;5216:18;4264:25:0;5097:203:1;4224:36:0;;;;;3980:39;;;;;;1774:103;;;;;;:::i;:::-;-1:-1:-1;;;;;1857:15:0;1831:12;1857:15;;;:8;:15;;;;;;;1774:103;1539:38;;;;;;:::i;:::-;;;;;;;;;;;;;;4363:44;;;;;;:::i;:::-;;;;;;;;;;;;;;4126:35;;;;;;9933:575;;;;;;:::i;:::-;;:::i;7695:499::-;;;;;;:::i;:::-;;:::i;1068:41::-;;;;;;;;;;;;;;;-1:-1:-1;;;1068:41:0;;;;;8199:761;;;;;;:::i;:::-;;:::i;7511:77::-;;;;;;:::i;:::-;;:::i;1882:284::-;;;;;;:::i;:::-;;:::i;5493:129::-;;;;;;:::i;:::-;;:::i;3942:34::-;;;;;;5875:187;;;;;;:::i;:::-;;:::i;2822:600::-;;;;;;:::i;:::-;;:::i;2673:130::-;;;;;;:::i;:::-;-1:-1:-1;;;;;2775:14:0;;;2747;2775;;;:7;:14;;;;;;;;:23;;;;;;;;;;;;;2673:130;4455:45;;;;;;:::i;:::-;;;;;;;;;;;;;;6065:191;;;;;;:::i;:::-;;:::i;7593:97::-;;;;;;:::i;:::-;;:::i;5625:247::-;5691:10;;-1:-1:-1;;;;;5691:10:0;5705;5691:24;5683:51;;;;-1:-1:-1;;;5683:51:0;;;;;;;:::i;:::-;;;;;;;;;5808:4;5792:12;:20;;5784:42;;;;-1:-1:-1;;;5784:42:0;;11461:2:1;5784:42:0;;;11443:21:1;11500:1;11480:18;;;11473:29;-1:-1:-1;;;11518:18:1;;;11511:39;11567:18;;5784:42:0;11259:332:1;5784:42:0;5831:21;:36;5625:247::o;2479:189::-;2571:10;2544:12;2563:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;2563:28:0;;;;;;;;;;:37;;;2610;2544:12;;2563:28;;2610:37;;;;2594:6;6652:25:1;;6640:2;6625:18;;6506:177;2610:37:0;;;;;;;;-1:-1:-1;2659:4:0;2479:189;;;;:::o;2171:303::-;-1:-1:-1;;;;;2286:14:0;;2250:12;2286:14;;;:8;:14;;;;;;:23;;2303:6;;2286:23;:::i;:::-;-1:-1:-1;;;;;2269:14:0;;;;;;:8;:14;;;;;;;;:40;;;;2342:7;:13;;;;;2356:10;2342:25;;;;;;:34;;2370:6;;2342:34;:::i;:::-;-1:-1:-1;;;;;2314:13:0;;;;;;;:7;:13;;;;;;;;2328:10;2314:25;;;;;;;:62;;;;2396:12;;;;;:8;:12;;;;;:21;;2411:6;;2396:21;:::i;:::-;-1:-1:-1;;;;;2381:12:0;;;;;;;:8;:12;;;;;;;:36;;;;2427:26;;;;;;-1:-1:-1;;;;;;;;;;;2427:26:0;;;2446:6;6652:25:1;;6640:2;6625:18;;6506:177;2427:26:0;;;;;;;;-1:-1:-1;2465:4:0;2171:303;;;;;;:::o;8965:963::-;9046:8;9041:100;;9056:6;-1:-1:-1;;;;;9056:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9109:10;;9121:19;;9056:85;;-1:-1:-1;;;9056:85:0;;-1:-1:-1;;;;;9056:37:0;;;;;;;:85;;9102:4;;9056:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9041:100;9174:9;9156:15;:27;9148:56;;;;-1:-1:-1;;;9148:56:0;;9066:2:1;9148:56:0;;;9048:21:1;9105:2;9085:18;;;9078:30;-1:-1:-1;;;9124:18:1;;;9117:46;9180:18;;9148:56:0;8864:340:1;9148:56:0;9209:20;9253:77;;;;;;;;9279:10;-1:-1:-1;;;;;9253:77:0;;;;;9299:6;9253:77;;;;9318:9;9253:77;;;9242:89;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9242:89:0;;;;;;;;;9232:100;;9242:89;9232:100;;;;9337:14;9354:25;;;:11;:25;;;;;;9232:100;;-1:-1:-1;9392:13:0;9384:39;;;;-1:-1:-1;;;9384:39:0;;10434:2:1;9384:39:0;;;10416:21:1;10473:2;10453:18;;;10446:30;-1:-1:-1;;;10492:18:1;;;10485:43;10545:18;;9384:39:0;10232:337:1;9384:39:0;9447:31;;-1:-1:-1;;;9447:31:0;;9472:4;9447:31;;;5243:51:1;9428:16:0;;9447:6;-1:-1:-1;;;;;9447:16:0;;;;5216:18:1;;9447:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9428:50;;9483:18;9529:11;;9514;9505:6;:20;;;;:::i;:::-;9504:36;;;;:::i;:::-;9483:57;;9545:19;9583:9;9567:13;:25;:53;;9607:13;9567:53;;;9595:9;9567:53;9655:1;9627:25;;;:11;:25;;;;;;;;:29;;;9674:10;9661:24;;:12;:24;;;;;:34;;9545:75;;-1:-1:-1;9689:6:0;;9661:24;;9655:1;9661:34;;9689:6;;9661:34;:::i;:::-;;;;-1:-1:-1;9702:29:0;;-1:-1:-1;9712:10:0;9724:6;9702:9;:29::i;:::-;9799:43;;-1:-1:-1;;;9799:43:0;;9815:10;9799:43;;;5859:51:1;5926:18;;;5919:34;;;9799:6:0;-1:-1:-1;;;;;9799:15:0;;;;5832:18:1;;9799:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9854:69:0;;;13086:25:1;;;13142:2;13127:18;;13120:34;;;13170:18;;;13163:34;;;13228:2;13213:18;;13206:34;;;9866:10:0;;9854:69;;13073:3:1;13058:19;9854:69:0;;;;;;;9036:892;;;;;8965:963;;;:::o;6277:259::-;6322:4;6337:11;;6333:30;;-1:-1:-1;6362:1:0;;6277:259::o;6333:30::-;6520:11;;6411:6;-1:-1:-1;;;;;6411:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6468:10;;6480:19;;6411:89;;-1:-1:-1;;;6411:89:0;;-1:-1:-1;;;;;6411:41:0;;;;;;;:89;;6461:4;;6411:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6377:31;;-1:-1:-1;;;6377:31:0;;6402:4;6377:31;;;5243:51:1;6377:6:0;-1:-1:-1;;;;;6377:16:0;;;;5216:18:1;;6377:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:123;;;;:::i;:::-;6376:136;;6508:4;6376:136;:::i;:::-;6375:156;;;;:::i;:::-;6368:163;;6277:259;:::o;9933:575::-;9999:8;9994:100;;10009:6;-1:-1:-1;;;;;10009:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10062:10;;10074:19;;10009:85;;-1:-1:-1;;;10009:85:0;;-1:-1:-1;;;;;10009:37:0;;;;;;;:85;;10055:4;;10009:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9994:100;10120:31;;-1:-1:-1;;;10120:31:0;;10145:4;10120:31;;;5243:51:1;10101:16:0;;10120:6;-1:-1:-1;;;;;10120:16:0;;;;5216:18:1;;10120:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10101:50;;10156:17;10201:11;;10186;10177:6;:20;;;;:::i;:::-;10176:36;;;;:::i;:::-;10156:56;;10217:19;10280:4;10255:21;;10240:12;:36;;;;:::i;:::-;10239:45;;;;:::i;:::-;10217:67;;10289:29;10299:10;10311:6;10289:9;:29::i;:::-;10386:43;;-1:-1:-1;;;10386:43:0;;10402:10;10386:43;;;5859:51:1;5926:18;;;5919:34;;;10386:6:0;-1:-1:-1;;;;;10386:15:0;;;;5832:18:1;;10386:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10441:62:0;;;12733:25:1;;;12789:2;12774:18;;12767:34;;;12817:18;;;12810:34;;;10454:10:0;;10441:62;;12721:2:1;12706:18;10441:62:0;;;;;;;9989:519;;;9933:575;;:::o;7695:499::-;7796:4;7811:11;;7807:30;;-1:-1:-1;7836:1:0;7829:8;;7807:30;7842:20;7886:72;;;;;;;;7912:5;-1:-1:-1;;;;;7886:72:0;;;;;7927:6;7886:72;;;;7946:9;7886:72;;;7875:84;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;7875:84:0;;;;;;7865:95;;7875:84;7865:95;;;;7965:14;7982:25;;;:11;:25;;;;;;;-1:-1:-1;;;8031:31:0;;8056:4;8031:31;;;5243:51:1;7865:95:0;;-1:-1:-1;7982:25:0;;8031:6;-1:-1:-1;;;;;8031:16:0;;;;5216:18:1;;8031:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8012:50;;8067:18;8113:11;;8098;8089:6;:20;;;;:::i;:::-;8088:36;;;;:::i;:::-;8067:57;;8152:9;8136:13;:25;:53;;8176:13;8136:53;;;8164:9;8136:53;8129:60;7695:499;-1:-1:-1;;;;;;;;7695:499:0:o;8199:761::-;8261:8;8256:100;;8271:6;-1:-1:-1;;;;;8271:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8324:10;;8336:19;;8271:85;;-1:-1:-1;;;8271:85:0;;-1:-1:-1;;;;;8271:37:0;;;;;;;:85;;8317:4;;8271:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8256:100;8417:10;8404:24;;;;:12;:24;;;;;;;;;8381:8;:20;;;;;;;:47;;8404:24;8381:47;:::i;:::-;8371:6;:57;;8363:89;;;;-1:-1:-1;;;8363:89:0;;8718:2:1;8363:89:0;;;8700:21:1;8757:2;8737:18;;;8730:30;-1:-1:-1;;;8776:18:1;;;8769:49;8835:18;;8363:89:0;8516:343:1;8363:89:0;8476:31;;-1:-1:-1;;;8476:31:0;;8501:4;8476:31;;;5243:51:1;8457:16:0;;8476:6;-1:-1:-1;;;;;8476:16:0;;;;5216:18:1;;8476:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8457:50;;8512:14;8554:11;;8539;8530:6;:20;;;;:::i;:::-;8529:36;;;;:::i;:::-;8512:53;;8570:14;8605:12;;8587:15;:30;;;;:::i;:::-;8570:47;;8622:20;8666:77;;;;;;;;8692:10;-1:-1:-1;;;;;8666:77:0;;;;;8712:6;8666:77;;;;8731:9;8666:77;;;8655:89;;;;;;;;:::i;:::-;;;;-1:-1:-1;;8655:89:0;;;;;;;;;8645:100;;8655:89;8645:100;;;;8758:25;;;;:11;:25;;;;;;8645:100;;-1:-1:-1;8758:30:0;8750:60;;;;-1:-1:-1;;;8750:60:0;;11798:2:1;8750:60:0;;;11780:21:1;11837:2;11817:18;;;11810:30;-1:-1:-1;;;11856:18:1;;;11849:47;11913:18;;8750:60:0;11596:341:1;8750:60:0;8817:25;;;;:11;:25;;;;;;;;:37;;;8872:10;8859:24;;:12;:24;;;;;:34;;8887:6;;8817:25;8859:34;;8887:6;;8859:34;:::i;:::-;;;;-1:-1:-1;;8905:50:0;;;12733:25:1;;;12789:2;12774:18;;12767:34;;;12817:18;;;12810:34;;;8914:10:0;;8905:50;;12721:2:1;12706:18;8905:50:0;;;;;;;8251:709;;;;8199:761;;:::o;7511:77::-;7553:30;7564:10;7576:6;7553:10;:30::i;:::-;7511:77;:::o;1882:284::-;1943:12;-1:-1:-1;;;;;1970:19:0;;1984:4;1970:19;;1962:43;;;;-1:-1:-1;;;1962:43:0;;10776:2:1;1962:43:0;;;10758:21:1;10815:2;10795:18;;;10788:30;-1:-1:-1;;;10834:18:1;;;10827:41;10885:18;;1962:43:0;10574:335:1;1962:43:0;2042:10;2033:20;;;;:8;:20;;;;;;:29;;2056:6;;2033:29;:::i;:::-;2019:10;2010:20;;;;:8;:20;;;;;;:52;;;;-1:-1:-1;;;;;2082:12:0;;;;;;:21;;2097:6;;2082:21;:::i;:::-;-1:-1:-1;;;;;2067:12:0;;;;;;:8;:12;;;;;;;:36;;;;2113:32;;2122:10;;-1:-1:-1;;;;;;;;;;;2113:32:0;;;2138:6;6652:25:1;;6640:2;6625:18;;6506:177;5493:129:0;5552:10;;-1:-1:-1;;;;;5552:10:0;5566;5552:24;5544:51;;;;-1:-1:-1;;;5544:51:0;;;;;;;:::i;:::-;5600:10;:17;;-1:-1:-1;;;;;;5600:17:0;-1:-1:-1;;;;;5600:17:0;;;;;;;;;;5493:129::o;5875:187::-;5933:10;;-1:-1:-1;;;;;5933:10:0;5947;5933:24;5925:51;;;;-1:-1:-1;;;5925:51:0;;;;;;;:::i;:::-;5997:6;5989:4;:14;;:33;;;;;6015:7;6007:4;:15;;5989:33;5981:52;;;;-1:-1:-1;;;5981:52:0;;9411:2:1;5981:52:0;;;9393:21:1;9450:1;9430:18;;;9423:29;-1:-1:-1;;;9468:18:1;;;9461:36;9514:18;;5981:52:0;9209:329:1;5981:52:0;6038:12;:19;5875:187::o;2822:600::-;2963:15;2951:8;:27;;2943:56;;;;-1:-1:-1;;;2943:56:0;;11116:2:1;2943:56:0;;;11098:21:1;11155:2;11135:18;;;11128:30;-1:-1:-1;;;11174:18:1;;;11167:46;11230:18;;2943:56:0;10914:340:1;2943:56:0;3069:16;;-1:-1:-1;;;;;3153:13:0;;3004:14;3153:13;;;:6;:13;;;;;:15;;3004:14;;3069:16;1469:66;;3129:5;;3136:7;;3145:6;;3153:15;3004:14;3153:15;;;:::i;:::-;;;;-1:-1:-1;3101:78:0;;;;;;6975:25:1;;;;-1:-1:-1;;;;;7074:15:1;;;7054:18;;;7047:43;7126:15;;;;7106:18;;;7099:43;7158:18;;;7151:34;7201:19;;;7194:35;7245:19;;;7238:35;;;6947:19;;3101:78:0;;;;;;;;;;;;3091:89;;;;;;3031:154;;;;;;;;-1:-1:-1;;;4958:27:1;;5010:1;5001:11;;4994:27;;;;5046:2;5037:12;;5030:28;5083:2;5074:12;;4700:392;3031:154:0;;;;-1:-1:-1;;3031:154:0;;;;;;;;;3021:165;;3031:154;3021:165;;;;3191:24;3218:26;;;;;;;;;7511:25:1;;;7584:4;7572:17;;7552:18;;;7545:45;;;;7606:18;;;7599:34;;;7649:18;;;7642:34;;;3021:165:0;;-1:-1:-1;3191:24:0;3218:26;;7483:19:1;;3218:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3218:26:0;;-1:-1:-1;;3218:26:0;;;-1:-1:-1;;;;;;;3257:30:0;;;;;;:59;;;3311:5;-1:-1:-1;;;;;3291:25:0;:16;-1:-1:-1;;;;;3291:25:0;;3257:59;3249:89;;;;-1:-1:-1;;;3249:89:0;;10088:2:1;3249:89:0;;;10070:21:1;10127:2;10107:18;;;10100:30;-1:-1:-1;;;10146:18:1;;;10139:47;10203:18;;3249:89:0;9886:341:1;3249:89:0;-1:-1:-1;;;;;3343:14:0;;;;;;;:7;:14;;;;;;;;:23;;;;;;;;;;;;;:32;;;3385;;6652:25:1;;;3385:32:0;;6625:18:1;3385:32:0;;;;;;;2938:484;;2822:600;;;;;;;:::o;6065:191::-;6145:10;;-1:-1:-1;;;;;6145:10:0;6159;6145:24;6137:51;;;;-1:-1:-1;;;6137:51:0;;;;;;;:::i;:::-;6193:10;:16;;;;6214:19;:37;6065:191::o;7593:97::-;7656:29;7667:9;7678:6;7656:10;:29::i;:::-;7593:97;;:::o;3721:192::-;3810:6;3796:11;;:20;;;;:::i;:::-;3782:11;:34;;;-1:-1:-1;;;;;3839:15:0;;;;:8;:15;;;;;;:24;;3857:6;;3839:24;:::i;:::-;-1:-1:-1;;;;;3821:15:0;;;;;;:8;:15;;;;;;:42;;;;3873:35;;-1:-1:-1;;;;;;;;;;;3873:35:0;;;3901:6;6652:25:1;;6640:2;6625:18;;6506:177;3873:35:0;;;;;;;;3721:192;;:::o;6541:965::-;6823:6;-1:-1:-1;;;;;6823:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6876:10;;6888:19;;6823:85;;-1:-1:-1;;;6823:85:0;;-1:-1:-1;;;;;6823:37:0;;;;;;;:85;;6869:4;;6823:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6934:31:0;;-1:-1:-1;;;6934:31:0;;6959:4;6934:31;;;5243:51:1;6915:16:0;;-1:-1:-1;6934:6:0;-1:-1:-1;;;;;6934:16:0;;-1:-1:-1;6934:16:0;;5216:18:1;;6934:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6915:50;;7104:11;;7119:1;7104:16;:36;;;-1:-1:-1;7124:16:0;;7104:36;7100:193;;;7148:28;7158:9;7169:6;7148:9;:28::i;:::-;7100:193;;;7194:17;7239:11;7224;;7215:6;:20;;;;:::i;:::-;7214:36;;;;:::i;:::-;7194:56;;7256:31;7266:9;7277;7256;:31::i;:::-;7188:105;7100:193;7360:54;;-1:-1:-1;;;7360:54:0;;7380:10;7360:54;;;5545:34:1;7400:4:0;5595:18:1;;;5588:43;5647:18;;;5640:34;;;7360:6:0;-1:-1:-1;;;;;7360:19:0;;;;5480:18:1;;7360:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6602:904;6541:965;;:::o;3438:280::-;3527:6;3513:11;;:20;;;;:::i;:::-;3499:11;:34;;;-1:-1:-1;;;;;3556:15:0;;;;:8;:15;;;;;;:24;;3574:6;;3556:24;:::i;:::-;-1:-1:-1;;;;;3538:15:0;;;;;;:8;:15;;;;;;:42;;;;3678:35;;3538:15;;;-1:-1:-1;;;;;;;;;;;3678:35:0;;;3706:6;6652:25:1;;6640:2;6625:18;;6506:177;14:247;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;266:388::-;334:6;342;395:2;383:9;374:7;370:23;366:32;363:52;;;411:1;408;401:12;363:52;450:9;437:23;469:31;494:5;469:31;:::i;:::-;519:5;-1:-1:-1;576:2:1;561:18;;548:32;589:33;548:32;589:33;:::i;:::-;641:7;631:17;;;266:388;;;;;:::o;659:456::-;736:6;744;752;805:2;793:9;784:7;780:23;776:32;773:52;;;821:1;818;811:12;773:52;860:9;847:23;879:31;904:5;879:31;:::i;:::-;929:5;-1:-1:-1;986:2:1;971:18;;958:32;999:33;958:32;999:33;:::i;:::-;659:456;;1051:7;;-1:-1:-1;;;1105:2:1;1090:18;;;;1077:32;;659:456::o;1120:829::-;1231:6;1239;1247;1255;1263;1271;1279;1332:3;1320:9;1311:7;1307:23;1303:33;1300:53;;;1349:1;1346;1339:12;1300:53;1388:9;1375:23;1407:31;1432:5;1407:31;:::i;:::-;1457:5;-1:-1:-1;1514:2:1;1499:18;;1486:32;1527:33;1486:32;1527:33;:::i;:::-;1579:7;-1:-1:-1;1633:2:1;1618:18;;1605:32;;-1:-1:-1;1684:2:1;1669:18;;1656:32;;-1:-1:-1;1740:3:1;1725:19;;1712:33;1789:4;1776:18;;1764:31;;1754:59;;1809:1;1806;1799:12;1754:59;1120:829;;;;-1:-1:-1;1120:829:1;;;;1832:7;1886:3;1871:19;;1858:33;;-1:-1:-1;1938:3:1;1923:19;;;1910:33;;1120:829;-1:-1:-1;;1120:829:1:o;1954:315::-;2022:6;2030;2083:2;2071:9;2062:7;2058:23;2054:32;2051:52;;;2099:1;2096;2089:12;2051:52;2138:9;2125:23;2157:31;2182:5;2157:31;:::i;:::-;2207:5;2259:2;2244:18;;;;2231:32;;-1:-1:-1;;;1954:315:1:o;2274:383::-;2351:6;2359;2367;2420:2;2408:9;2399:7;2395:23;2391:32;2388:52;;;2436:1;2433;2426:12;2388:52;2475:9;2462:23;2494:31;2519:5;2494:31;:::i;:::-;2544:5;2596:2;2581:18;;2568:32;;-1:-1:-1;2647:2:1;2632:18;;;2619:32;;2274:383;-1:-1:-1;;;2274:383:1:o;2662:245::-;2729:6;2782:2;2770:9;2761:7;2757:23;2753:32;2750:52;;;2798:1;2795;2788:12;2750:52;2830:9;2824:16;2849:28;2871:5;2849:28;:::i;2912:180::-;2971:6;3024:2;3012:9;3003:7;2999:23;2995:32;2992:52;;;3040:1;3037;3030:12;2992:52;-1:-1:-1;3063:23:1;;2912:180;-1:-1:-1;2912:180:1:o;3097:275::-;3191:6;3244:2;3232:9;3223:7;3219:23;3215:32;3212:52;;;3260:1;3257;3250:12;3212:52;3292:9;3286:16;3311:31;3336:5;3311:31;:::i;3562:184::-;3632:6;3685:2;3673:9;3664:7;3660:23;3656:32;3653:52;;;3701:1;3698;3691:12;3653:52;-1:-1:-1;3724:16:1;;3562:184;-1:-1:-1;3562:184:1:o;3751:309::-;3816:6;3824;3877:2;3865:9;3856:7;3852:23;3848:32;3845:52;;;3893:1;3890;3883:12;3845:52;3929:9;3916:23;3906:33;;3989:2;3978:9;3974:18;3961:32;4002:28;4024:5;4002:28;:::i;4065:248::-;4133:6;4141;4194:2;4182:9;4173:7;4169:23;4165:32;4162:52;;;4210:1;4207;4200:12;4162:52;-1:-1:-1;;4233:23:1;;;4303:2;4288:18;;;4275:32;;-1:-1:-1;4065:248:1:o;4318:377::-;4392:6;4400;4408;4461:2;4449:9;4440:7;4436:23;4432:32;4429:52;;;4477:1;4474;4467:12;4429:52;4513:9;4500:23;4490:33;;4570:2;4559:9;4555:18;4542:32;4532:42;;4624:2;4613:9;4609:18;4596:32;4637:28;4659:5;4637:28;:::i;:::-;4684:5;4674:15;;;4318:377;;;;;:::o;5964:345::-;-1:-1:-1;;;;;6184:32:1;;;;6166:51;;6248:2;6233:18;;6226:34;;;;6291:2;6276:18;;6269:34;6154:2;6139:18;;5964:345::o;7914:597::-;8026:4;8055:2;8084;8073:9;8066:21;8116:6;8110:13;8159:6;8154:2;8143:9;8139:18;8132:34;8184:1;8194:140;8208:6;8205:1;8202:13;8194:140;;;8303:14;;;8299:23;;8293:30;8269:17;;;8288:2;8265:26;8258:66;8223:10;;8194:140;;;8352:6;8349:1;8346:13;8343:91;;;8422:1;8417:2;8408:6;8397:9;8393:22;8389:31;8382:42;8343:91;-1:-1:-1;8495:2:1;8474:15;-1:-1:-1;;8470:29:1;8455:45;;;;8502:2;8451:54;;7914:597;-1:-1:-1;;;7914:597:1:o;9543:338::-;9745:2;9727:21;;;9784:2;9764:18;;;9757:30;-1:-1:-1;;;9818:2:1;9803:18;;9796:44;9872:2;9857:18;;9543:338::o;11942:402::-;12176:13;;-1:-1:-1;;;;;12172:39:1;12154:58;;12268:4;12256:17;;;12250:24;12228:20;;;12221:54;12331:4;12319:17;;;12313:24;12291:20;;;12284:54;;;;12142:2;12127:18;;11942:402::o;13440:128::-;13480:3;13511:1;13507:6;13504:1;13501:13;13498:39;;;13517:18;;:::i;:::-;-1:-1:-1;13553:9:1;;13440:128::o;13573:217::-;13613:1;13639;13629:132;;13683:10;13678:3;13674:20;13671:1;13664:31;13718:4;13715:1;13708:15;13746:4;13743:1;13736:15;13629:132;-1:-1:-1;13775:9:1;;13573:217::o;13795:168::-;13835:7;13901:1;13897;13893:6;13889:14;13886:1;13883:21;13878:1;13871:9;13864:17;13860:45;13857:71;;;13908:18;;:::i;:::-;-1:-1:-1;13948:9:1;;13795:168::o;13968:125::-;14008:4;14036:1;14033;14030:8;14027:34;;;14041:18;;:::i;:::-;-1:-1:-1;14078:9:1;;13968:125::o;14098:135::-;14137:3;-1:-1:-1;;14158:17:1;;14155:43;;;14178:18;;:::i;:::-;-1:-1:-1;14225:1:1;14214:13;;14098:135::o;14238:127::-;14299:10;14294:3;14290:20;14287:1;14280:31;14330:4;14327:1;14320:15;14354:4;14351:1;14344:15;14370:131;-1:-1:-1;;;;;14445:31:1;;14435:42;;14425:70;;14491:1;14488;14481:12;14506:118;14592:5;14585:13;14578:21;14571:5;14568:32;14558:60;;14614:1;14611;14604:12

Swarm Source

ipfs://192b614c5e30cea5d75dfac12ba14851b6bd18631decd0a117c18f1520a9b22f
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.