ETH Price: $2,491.88 (-1.08%)

Token

Wrapped Whales (wWH)
 

Overview

Max Total Supply

914 wWH

Holders

154

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
scopey.eth
Balance
5 wWH

Value
$0.00
0x9c08432086DcC1b1Ce6701cF64209afdde433Bce
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

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

Contract Name:
WrappedToken

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-11
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;

interface Callable {
	function tokenCallback(address _from, uint256 _tokens, bytes calldata _data) external returns (bool);
}

interface Bridge {
	function depositFor(address _user, address _rootToken, bytes calldata _depositData) external;
}

interface Router {
	function WETH() external pure returns (address);
	function factory() external pure returns (address);
}

interface Factory {
	function createPair(address, address) external returns (address);
}

interface Pair {
	function token0() external view returns (address);
	function totalSupply() external view returns (uint256);
	function balanceOf(address) external view returns (uint256);
	function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
}

interface WhalesGame {
	function krillAddress() external view returns (address);
	function stakingRewardsAddress() external view returns (address);
	function getIsWhale(uint256) external view returns (bool);
	function balanceOf(address) external view returns (uint256);
	function ownerOf(uint256) external view returns (address);
	function fishermenOf(address) external view returns (uint256);
	function whalesOf(address) external view returns (uint256);
	function isApprovedForAll(address, address) external view returns (bool);
	function transferFrom(address, address, uint256) external;
	function claim() external;
}

interface KRILL {
	function allowance(address, address) external view returns (uint256);
	function balanceOf(address) external view returns (uint256);
	function approve(address, uint256) external returns (bool);
	function transfer(address, uint256) external returns (bool);
	function transferFrom(address, address, uint256) external returns (bool);
	function burn(uint256) external;
}

contract WrappedToken {

	uint256 constant private UINT_MAX = type(uint256).max;
	uint256 constant private FLOAT_SCALAR = 2**64;
	address constant private POLYGON_ERC20_BRIDGE = 0x40ec5B33f54e0E8A33A975908C5BA1c14e5BbbDf;

	uint8 constant public decimals = 18;

	struct User {
		uint256 balance;
		mapping(address => uint256) allowance;
		int256 scaledPayout;
	}

	struct Info {
		uint256 totalSupply;
		uint256 scaledRewardsPerToken;
		uint256 pendingRewards;
		mapping(address => User) users;
		mapping(address => bool) rewardBurn;
		address burnDestination;
		address owner;
		bool isBridged;
		Bridge bridge;
		Router router;
		Pair pair;
		bool weth0;
		bool isWhale;
		WhalesGame wg;
		KRILL krill;
	}
	Info private info;


	event Transfer(address indexed from, address indexed to, uint256 tokens);
	event Approval(address indexed owner, address indexed spender, uint256 tokens);
	event Claim(address indexed user, uint256 amount);
	event Reward(uint256 amount);


	modifier _onlyOwner() {
		require(msg.sender == owner());
		_;
	}


	constructor(WhalesGame _wg, bool _isWhale) {
		info.isBridged = false;
		info.bridge = Bridge(0xA0c68C638235ee32657e8f720a23ceC1bFc77C77);
		info.router = Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
		info.pair = Pair(Factory(info.router.factory()).createPair(info.router.WETH(), address(this)));
		info.weth0 = info.pair.token0() == info.router.WETH();
		info.wg = _wg;
		info.krill = KRILL(_wg.krillAddress());
		info.isWhale = _isWhale;
		info.owner = tx.origin;
		info.rewardBurn[address(this)] = true;
		info.rewardBurn[pairAddress()] = true;
		info.rewardBurn[POLYGON_ERC20_BRIDGE] = true;
		info.krill.approve(POLYGON_ERC20_BRIDGE, UINT_MAX);
		info.burnDestination = address(0x0);
	}

	function setOwner(address _owner) external _onlyOwner {
		info.owner = _owner;
	}

	function setIsBridged(bool _isBridged) external _onlyOwner {
		info.isBridged = _isBridged;
	}

	function setRewardBurn(address _user, bool _shouldBurn) external _onlyOwner {
		uint32 _size;
		assembly {
			_size := extcodesize(_user)
		}
		require(_size > 0);
		info.rewardBurn[_user] = _shouldBurn;
	}

	function setBurnDestination(address _destination) external _onlyOwner {
		info.burnDestination = _destination;
	}


	function disburse(uint256 _amount) external {
		if (_amount > 0) {
			address _this = address(this);
			uint256 _balanceBefore = info.krill.balanceOf(_this);
			info.krill.transferFrom(msg.sender, _this, _amount);
			_disburse(info.krill.balanceOf(_this) - _balanceBefore);
		}
	}

	function wrap(uint256[] calldata _tokenIds) external {
		uint256 _count = _tokenIds.length;
		require(_count > 0);
		_update();
		for (uint256 i = 0; i < _count; i++) {
			require(info.wg.getIsWhale(_tokenIds[i]) == info.isWhale);
			info.wg.transferFrom(msg.sender, address(this), _tokenIds[i]);
		}
		uint256 _amount = _count * 1e18;
		info.totalSupply += _amount;
		info.users[msg.sender].balance += _amount;
		info.users[msg.sender].scaledPayout += int256(_amount * info.scaledRewardsPerToken);
		emit Transfer(address(0x0), msg.sender, _amount);
	}

	function unwrap(uint256[] calldata _tokenIds) external returns (uint256 totalUnwrapped) {
		uint256 _count = _tokenIds.length;
		require(balanceOf(msg.sender) >= _count * 1e18);
		_update();
		totalUnwrapped = 0;
		for (uint256 i = 0; i < _count; i++) {
			if (info.wg.ownerOf(_tokenIds[i]) == address(this)) {
				require(info.wg.getIsWhale(_tokenIds[i]) == info.isWhale);
				info.wg.transferFrom(address(this), msg.sender, _tokenIds[i]);
				totalUnwrapped++;
			}
		}
		require(totalUnwrapped > 0);
		uint256 _cost = totalUnwrapped * 1e18;
		info.totalSupply -= _cost;
		info.users[msg.sender].balance -= _cost;
		info.users[msg.sender].scaledPayout -= int256(_cost * info.scaledRewardsPerToken);
		emit Transfer(msg.sender, address(0x0), _cost);
	}

	function claim() external {
		claimFor(msg.sender);
	}

	function claimFor(address _user) public {
		_update();
		uint256 _rewards = rewardsOf(_user);
		if (_rewards > 0) {
			info.users[_user].scaledPayout += int256(_rewards * FLOAT_SCALAR);
			if (rewardBurn(_user)) {
				address _destination = burnDestination();
				if (_destination == address(0x0)) {
					info.krill.burn(_rewards);
				} else {
					if (isBridged()) {
						info.bridge.depositFor(_destination, address(info.krill), abi.encodePacked(_rewards));
					} else {
						info.krill.transfer(_destination, _rewards);
					}
				}
			} else {
				info.krill.transfer(_user, _rewards);
			}
			emit Claim(_user, _rewards);
		}
	}

	function transfer(address _to, uint256 _tokens) external returns (bool) {
		return _transfer(msg.sender, _to, _tokens);
	}

	function approve(address _spender, uint256 _tokens) external returns (bool) {
		info.users[msg.sender].allowance[_spender] = _tokens;
		emit Approval(msg.sender, _spender, _tokens);
		return true;
	}

	function transferFrom(address _from, address _to, uint256 _tokens) external returns (bool) {
		uint256 _allowance = allowance(_from, msg.sender);
		require(_allowance >= _tokens);
		if (_allowance != UINT_MAX) {
			info.users[_from].allowance[msg.sender] -= _tokens;
		}
		return _transfer(_from, _to, _tokens);
	}

	function transferAndCall(address _to, uint256 _tokens, bytes calldata _data) external returns (bool) {
		_transfer(msg.sender, _to, _tokens);
		uint32 _size;
		assembly {
			_size := extcodesize(_to)
		}
		if (_size > 0) {
			require(Callable(_to).tokenCallback(msg.sender, _tokens, _data));
		}
		return true;
	}
	

	function name() external view returns (string memory) {
		return info.isWhale ? 'Wrapped Whales' : 'Wrapped Fishermen';
	}

	function symbol() external view returns (string memory) {
		return info.isWhale ? 'wWH' : 'wFM';
	}
	
	function owner() public view returns (address) {
		return info.owner;
	}
	
	function isBridged() public view returns (bool) {
		return info.isBridged;
	}
	
	function burnDestination() public view returns (address) {
		return info.burnDestination;
	}
	
	function rewardBurn(address _user) public view returns (bool) {
		return info.rewardBurn[_user];
	}
	
	function pairAddress() public view returns (address) {
		return address(info.pair);
	}
	
	function totalSupply() public view returns (uint256) {
		return info.totalSupply;
	}

	function balanceOf(address _user) public view returns (uint256) {
		return info.users[_user].balance;
	}
	
	function rewardsOf(address _user) public view returns (uint256) {
		return uint256(int256(info.scaledRewardsPerToken * balanceOf(_user)) - info.users[_user].scaledPayout) / FLOAT_SCALAR;
	}

	function allowance(address _user, address _spender) public view returns (uint256) {
		return info.users[_user].allowance[_spender];
	}

	function allInfoFor(address _user) external view returns (uint256 totalTokens, uint256 totalLPTokens, uint256 wethReserve, uint256 wrappedReserve, uint256 userTokens, bool userApproved, uint256 userBalance, uint256 userRewards, uint256 userLPBalance, uint256 contractFishermen, uint256 contractWhales) {
		totalTokens = totalSupply();
		totalLPTokens = info.pair.totalSupply();
		(uint256 _res0, uint256 _res1, ) = info.pair.getReserves();
		wethReserve = info.weth0 ? _res0 : _res1;
		wrappedReserve = info.weth0 ? _res1 : _res0;
		userTokens = info.wg.balanceOf(_user);
		userApproved = info.wg.isApprovedForAll(_user, address(this));
		userBalance = balanceOf(_user);
		userRewards = rewardsOf(_user);
		userLPBalance = info.pair.balanceOf(_user);
		contractFishermen = info.wg.fishermenOf(address(this));
		contractWhales = info.wg.whalesOf(address(this));
	}


	function _transfer(address _from, address _to, uint256 _tokens) internal returns (bool) {
		require(balanceOf(_from) >= _tokens);
		_update();
		info.users[_from].balance -= _tokens;
		info.users[_from].scaledPayout -= int256(_tokens * info.scaledRewardsPerToken);
		info.users[_to].balance += _tokens;
		info.users[_to].scaledPayout += int256(_tokens * info.scaledRewardsPerToken);
		emit Transfer(_from, _to, _tokens);
		return true;
	}

	function _update() internal {
		address _this = address(this);
		uint256 _balanceBefore = info.krill.balanceOf(_this);
		info.wg.claim();
		_disburse(info.krill.balanceOf(_this) - _balanceBefore);
	}

	function _disburse(uint256 _amount) internal {
		if (_amount > 0) {
			if (totalSupply() == 0) {
				info.pendingRewards += _amount;
			} else {
				info.scaledRewardsPerToken += (_amount + info.pendingRewards) * FLOAT_SCALAR / totalSupply();
				info.pendingRewards = 0;
			}
			emit Reward(_amount);
		}
	}
}

contract Islands {

	uint256 constant private UINT_MAX = type(uint256).max;
	uint256 constant private POLYGON_ISLANDS = 1000;
	uint256 constant private MINTABLE_ISLANDS = 1000;
	uint256 constant private MAX_ISLANDS = POLYGON_ISLANDS + MINTABLE_ISLANDS; // 2k
	uint256 constant private BASE_KRILL_COST = 1e23; // 100k
	uint256 constant private KRILL_COST_INCREMENT = 2e21; // 2k

	string constant public name = "Whales Game Islands";
	string constant public symbol = "ISLAND";
	uint8 constant public decimals = 18;

	struct User {
		uint256 balance;
		mapping(address => uint256) allowance;
	}

	struct Info {
		uint256 totalSupply;
		mapping(address => User) users;
		Router router;
		Pair pair;
		WhalesGame wg;
		KRILL krill;
		WrappedToken wfm;
		WrappedToken wwh;
		address owner;
		address feeRecipient;
		bool weth0;
		uint256 openingTime;
	}
	Info private info;


	event Transfer(address indexed from, address indexed to, uint256 tokens);
	event Approval(address indexed owner, address indexed spender, uint256 tokens);


	modifier _onlyOwner() {
		require(msg.sender == owner());
		_;
	}


	constructor(WhalesGame _wg, address _booster, uint256 _openingTime) {
		info.router = Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
		info.pair = Pair(Factory(info.router.factory()).createPair(info.router.WETH(), address(this)));
		info.weth0 = info.pair.token0() == info.router.WETH();
		info.wg = _wg;
		info.krill = KRILL(_wg.krillAddress());
		info.wfm = new WrappedToken(_wg, false);
		info.wwh = new WrappedToken(_wg, true);
		info.owner = msg.sender;
		info.feeRecipient = _booster;
		info.openingTime = _openingTime;

		uint256 _polygonIslands = POLYGON_ISLANDS * 1e18;
		info.totalSupply = _polygonIslands;
		info.users[msg.sender].balance = _polygonIslands;
		emit Transfer(address(0x0), msg.sender, _polygonIslands);
	}

	function setOwner(address _owner) external _onlyOwner {
		info.owner = _owner;
	}

	function setFeeRecipient(address _feeRecipient) external _onlyOwner {
		info.feeRecipient = _feeRecipient;
	}

	function buyIsland(uint256[4] memory _fishermenIds, uint256 _whaleId) external {
		require(block.timestamp >= info.openingTime);
		require(totalIslands() < MAX_ISLANDS);
		require(info.wg.getIsWhale(_whaleId));
		info.wg.transferFrom(msg.sender, wrappedWhalesAddress(), _whaleId);
		require(!info.wg.getIsWhale(_fishermenIds[0]));
		info.wg.transferFrom(msg.sender, wrappedFishermenAddress(), _fishermenIds[0]);
		require(!info.wg.getIsWhale(_fishermenIds[1]));
		info.wg.transferFrom(msg.sender, info.wg.stakingRewardsAddress(), _fishermenIds[1]);
		require(!info.wg.getIsWhale(_fishermenIds[2]));
		info.wg.transferFrom(msg.sender, info.wg.stakingRewardsAddress(), _fishermenIds[2]);
		require(!info.wg.getIsWhale(_fishermenIds[3]));
		info.wg.transferFrom(msg.sender, feeRecipient(), _fishermenIds[3]);
		info.krill.transferFrom(msg.sender, feeRecipient(), currentKrillCost());

		info.totalSupply += 1e18;
		info.users[msg.sender].balance += 1e18;
		emit Transfer(address(0x0), msg.sender, 1e18);
	}

	function transfer(address _to, uint256 _tokens) external returns (bool) {
		return _transfer(msg.sender, _to, _tokens);
	}

	function approve(address _spender, uint256 _tokens) external returns (bool) {
		info.users[msg.sender].allowance[_spender] = _tokens;
		emit Approval(msg.sender, _spender, _tokens);
		return true;
	}

	function transferFrom(address _from, address _to, uint256 _tokens) external returns (bool) {
		uint256 _allowance = allowance(_from, msg.sender);
		require(_allowance >= _tokens);
		if (_allowance != UINT_MAX) {
			info.users[_from].allowance[msg.sender] -= _tokens;
		}
		return _transfer(_from, _to, _tokens);
	}

	function transferAndCall(address _to, uint256 _tokens, bytes calldata _data) external returns (bool) {
		_transfer(msg.sender, _to, _tokens);
		uint32 _size;
		assembly {
			_size := extcodesize(_to)
		}
		if (_size > 0) {
			require(Callable(_to).tokenCallback(msg.sender, _tokens, _data));
		}
		return true;
	}
	
	
	function whalesGameAddress() external view returns (address) {
		return address(info.wg);
	}

	function wrappedFishermenAddress() public view returns (address) {
		return address(info.wfm);
	}

	function wrappedWhalesAddress() public view returns (address) {
		return address(info.wwh);
	}

	function owner() public view returns (address) {
		return info.owner;
	}

	function feeRecipient() public view returns (address) {
		return info.feeRecipient;
	}

	function totalSupply() public view returns (uint256) {
		return info.totalSupply;
	}

	function totalIslands() public view returns (uint256) {
		return totalSupply() / 1e18;
	}

	function currentKrillCost() public view returns (uint256) {
		return BASE_KRILL_COST + (totalIslands() - POLYGON_ISLANDS) * KRILL_COST_INCREMENT;
	}

	function balanceOf(address _user) public view returns (uint256) {
		return info.users[_user].balance;
	}

	function allowance(address _user, address _spender) public view returns (uint256) {
		return info.users[_user].allowance[_spender];
	}

	function allInfoFor(address _user) external view returns (uint256 openingTime, uint256 totalTokens, uint256 totalLPTokens, uint256 wethReserve, uint256 islandReserve, uint256 userTokens, bool userApproved, uint256 userAllowance, uint256 userKRILL, uint256 userBalance, uint256 userLPBalance) {
		openingTime = info.openingTime;
		totalTokens = totalSupply();
		totalLPTokens = info.pair.totalSupply();
		(uint256 _res0, uint256 _res1, ) = info.pair.getReserves();
		wethReserve = info.weth0 ? _res0 : _res1;
		islandReserve = info.weth0 ? _res1 : _res0;
		userTokens = info.wg.balanceOf(_user);
		userApproved = info.wg.isApprovedForAll(_user, address(this));
		userAllowance = info.krill.allowance(_user, address(this));
		userKRILL = info.krill.balanceOf(_user);
		userBalance = balanceOf(_user);
		userLPBalance = info.pair.balanceOf(_user);
	}


	function _transfer(address _from, address _to, uint256 _tokens) internal returns (bool) {
		require(balanceOf(_from) >= _tokens);
		info.users[_from].balance -= _tokens;
		info.users[_to].balance += _tokens;
		emit Transfer(_from, _to, _tokens);
		return true;
	}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract WhalesGame","name":"_wg","type":"address"},{"internalType":"bool","name":"_isWhale","type":"bool"}],"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":"tokens","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Reward","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":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"allInfoFor","outputs":[{"internalType":"uint256","name":"totalTokens","type":"uint256"},{"internalType":"uint256","name":"totalLPTokens","type":"uint256"},{"internalType":"uint256","name":"wethReserve","type":"uint256"},{"internalType":"uint256","name":"wrappedReserve","type":"uint256"},{"internalType":"uint256","name":"userTokens","type":"uint256"},{"internalType":"bool","name":"userApproved","type":"bool"},{"internalType":"uint256","name":"userBalance","type":"uint256"},{"internalType":"uint256","name":"userRewards","type":"uint256"},{"internalType":"uint256","name":"userLPBalance","type":"uint256"},{"internalType":"uint256","name":"contractFishermen","type":"uint256"},{"internalType":"uint256","name":"contractWhales","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnDestination","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"claimFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"disburse","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isBridged","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"rewardBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"rewardsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_destination","type":"address"}],"name":"setBurnDestination","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isBridged","type":"bool"}],"name":"setIsBridged","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"_shouldBurn","type":"bool"}],"name":"setRewardBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"_tokens","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"unwrap","outputs":[{"internalType":"uint256","name":"totalUnwrapped","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"wrap","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50604051620023b4380380620023b4833981016040819052620000349162000538565b6006805460ff60a01b191690556007805473a0c68c638235ee32657e8f720a23cec1bfc77c776001600160a01b03199182161790915560088054737a250d5630b4cf539739df2c5dacb4c659f2488d9216821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620000c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000eb919062000572565b600854604080516315ab88c960e31b815290516001600160a01b039384169363c9c6539693169163ad5c46489160048083019260209291908290030181865afa1580156200013d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000163919062000572565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620001b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d6919062000572565b600980546001600160a01b0319166001600160a01b03928316179055600854604080516315ab88c960e31b81529051919092169163ad5c46489160048083019260209291908290030181865afa15801562000235573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025b919062000572565b6001600160a01b0316600060090160009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e1919062000572565b6009805460ff60a01b19166001600160a01b0392831693909314600160a01b0292909217909155600a80546001600160a01b031916918416918217905560408051631dce3ec360e21b81529051637738fb0c916004808201926020929091908290030181865afa1580156200035a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000380919062000572565b600b80546001600160a01b03929092166001600160a01b031992831617905560098054831515600160a81b0260ff60a81b1990911617905560068054909116321790553060009081526004602081905260408220805460ff1916600190811790915591620003f66009546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790557340ec5b33f54e0e8a33a975908c5ba1c14e5bbbdf908190526004938490527f42c5b88ce7f8b1ed5de47f86ecd4fd0cdfb7e33aab549b140ba8148b622b89cb8054909516600117909455600b54915163095ea7b360e01b815291169263095ea7b392620004aa9260001991016001600160a01b03929092168252602082015260400190565b6020604051808303816000875af1158015620004ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004f0919062000599565b5050600580546001600160a01b031916905550620005b7565b6001600160a01b03811681146200051f57600080fd5b50565b805180151581146200053357600080fd5b919050565b600080604083850312156200054c57600080fd5b8251620005598162000509565b9150620005696020840162000522565b90509250929050565b6000602082840312156200058557600080fd5b8151620005928162000509565b9392505050565b600060208284031215620005ac57600080fd5b620005928262000522565b611ded80620005c76000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c9bd33b116100de578063a9059cbb11610097578063cc17a5bf11610071578063cc17a5bf146103b8578063dd62ed3e146103cb578063ddeae03314610408578063f10f1b031461041b57600080fd5b8063a9059cbb1461037f578063ae268ca714610392578063bd77ac2c146103a557600080fd5b80635c9bd33b1461030757806363ac2a4c1461031957806370a082311461032c5780638da5cb5b1461035557806395d89b4114610366578063a8b089821461036e57600080fd5b8063313ce5671161014b5780634e71d92d116101255780634e71d92d146102735780634ff9fd661461027b57806350ccb3021461028e57806357f6b812146102a157600080fd5b8063313ce567146102335780634000aea01461024d578063479ba7ae1461026057600080fd5b806306fdde0314610193578063095ea7b3146101b15780630fca9687146101d457806313af4035146101f957806318160ddd1461020e57806323b872dd14610220575b600080fd5b61019b610447565b6040516101a891906118f2565b60405180910390f35b6101c46101bf36600461191a565b6104b0565b60405190151581526020016101a8565b6005546001600160a01b03165b6040516001600160a01b0390911681526020016101a8565b61020c610207366004611946565b61051b565b005b6000545b6040519081526020016101a8565b6101c461022e366004611963565b610554565b61023b601281565b60405160ff90911681526020016101a8565b6101c461025b3660046119a4565b6105e1565b61021261026e366004611946565b610687565b61020c6106d3565b61020c610289366004611a3b565b6106de565b61020c61029c366004611a58565b610713565b6102b46102af366004611946565b610768565b604080519b8c5260208c019a909a52988a01979097526060890195909552608088019390935290151560a087015260c086015260e0850152610100840152610120830152610140820152610160016101a8565b600654600160a01b900460ff166101c4565b610212610327366004611a91565b610b8f565b61021261033a366004611946565b6001600160a01b031660009081526003602052604090205490565b6006546001600160a01b03166101e1565b61019b610ea0565b6009546001600160a01b03166101e1565b6101c461038d36600461191a565b610ef0565b61020c6103a0366004611946565b610f04565b61020c6103b3366004611b06565b610f3d565b61020c6103c6366004611a91565b6110be565b6102126103d9366004611b1f565b6001600160a01b0391821660009081526003602090815260408083209390941682526001909201909152205490565b61020c610416366004611946565b6112ef565b6101c4610429366004611946565b6001600160a01b031660009081526004602052604090205460ff1690565b600954606090600160a81b900460ff1661048757506040805180820190915260118152702bb930b83832b2102334b9b432b936b2b760791b602082015290565b5060408051808201909152600e81526d57726170706564205768616c657360901b602082015290565b3360008181526003602090815260408083206001600160a01b0387168085526001909101835281842086905590518581529293909290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350600192915050565b6006546001600160a01b0316331461053257600080fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831660009081526003602090815260408083203384526001019091528120548281101561058857600080fd5b60001981146105cd576001600160a01b0385166000908152600360209081526040808320338452600101909152812080548592906105c7908490611b63565b90915550505b6105d8858585611596565b95945050505050565b60006105ee338686611596565b50843b63ffffffff81161561067b57604051636be32e7360e01b81526001600160a01b03871690636be32e739061062f903390899089908990600401611b7a565b6020604051808303816000875af115801561064e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106729190611bc2565b61067b57600080fd5b50600195945050505050565b6001600160a01b038116600090815260036020526040812060028101549054600154600160401b92916106b991611bdf565b6106c39190611bfe565b6106cd9190611c3d565b92915050565b6106dc336112ef565b565b6006546001600160a01b031633146106f557600080fd5b60068054911515600160a01b0260ff60a01b19909216919091179055565b6006546001600160a01b0316331461072a57600080fd5b813b63ffffffff811661073c57600080fd5b506001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b600080600080600080600080600080600061078260005490565b600954604080516318160ddd60e01b81529051929d506001600160a01b03909116916318160ddd916004808201926020929091908290030181865afa1580156107cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f39190611c5f565b60095460408051630240bc6b60e21b81529051929c5060009283926001600160a01b031691630902f1ac9160048083019260609291908290030181865afa158015610842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108669190611c94565b506009546001600160701b03928316945091169150600160a01b900460ff1661088f5780610891565b815b600954909b50600160a01b900460ff166108ab57816108ad565b805b99506000600a0160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b815260040161090291906001600160a01b0391909116815260200190565b602060405180830381865afa15801561091f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109439190611c5f565b98506000600a0160009054906101000a90046001600160a01b03166001600160a01b031663e985e9c58f306040518363ffffffff1660e01b81526004016109a09291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa1580156109bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e19190611bc2565b9750610a028e6001600160a01b031660009081526003602052604090205490565b9650610a0d8e610687565b9550600060090160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b8152600401610a6291906001600160a01b0391909116815260200190565b602060405180830381865afa158015610a7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa39190611c5f565b600a546040516379400dc160e01b81523060048201529196506001600160a01b0316906379400dc190602401602060405180830381865afa158015610aec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b109190611c5f565b600a5460405162c4d0c360e51b81523060048201529195506001600160a01b03169063189a186090602401602060405180830381865afa158015610b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7c9190611c5f565b9250505091939597999b90929496989a50565b600081610ba481670de0b6b3a7640000611bdf565b336000908152600360205260409020541015610bbf57600080fd5b610bc76116f0565b6000915060005b81811015610dcb57600a5430906001600160a01b0316636352211e878785818110610bfb57610bfb611ce4565b905060200201356040518263ffffffff1660e01b8152600401610c2091815260200190565b602060405180830381865afa158015610c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c619190611cfa565b6001600160a01b03161415610db957600954600a54600160a81b90910460ff161515906001600160a01b031663a0ced6fd878785818110610ca457610ca4611ce4565b905060200201356040518263ffffffff1660e01b8152600401610cc991815260200190565b602060405180830381865afa158015610ce6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0a9190611bc2565b151514610d1657600080fd5b600a546001600160a01b03166323b872dd3033888886818110610d3b57610d3b611ce4565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b158015610d9257600080fd5b505af1158015610da6573d6000803e3d6000fd5b505050508280610db590611d17565b9350505b80610dc381611d17565b915050610bce565b5060008211610dd957600080fd5b6000610ded83670de0b6b3a7640000611bdf565b905080600080016000828254610e039190611b63565b90915550503360009081526003602052604081208054839290610e27908490611b63565b9091555050600154610e399082611bdf565b3360009081526003602052604081206002018054909190610e5b908490611bfe565b909155505060405181815260009033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505092915050565b600954606090600160a81b900460ff16610ed2575060408051808201909152600381526277464d60e81b602082015290565b506040805180820190915260038152620eeae960eb1b602082015290565b6000610efd338484611596565b9392505050565b6006546001600160a01b03163314610f1b57600080fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b80156110bb57600b546040516370a0823160e01b81523060048201819052916000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190611c5f565b600b546040516323b872dd60e01b81523360048201526001600160a01b038581166024830152604482018790529293509116906323b872dd906064016020604051808303816000875af1158015611010573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110349190611bc2565b50600b546040516370a0823160e01b81526001600160a01b0384811660048301526110b89284929116906370a08231906024015b602060405180830381865afa158015611085573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a99190611c5f565b6110b39190611b63565b6117fb565b50505b50565b80806110c957600080fd5b6110d16116f0565b60005b8181101561122957600954600a54600160a81b90910460ff161515906001600160a01b031663a0ced6fd86868581811061111057611110611ce4565b905060200201356040518263ffffffff1660e01b815260040161113591815260200190565b602060405180830381865afa158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190611bc2565b15151461118257600080fd5b600a546001600160a01b03166323b872dd33308787868181106111a7576111a7611ce4565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b1580156111fe57600080fd5b505af1158015611212573d6000803e3d6000fd5b50505050808061122190611d17565b9150506110d4565b50600061123e82670de0b6b3a7640000611bdf565b9050806000800160008282546112549190611d32565b90915550503360009081526003602052604081208054839290611278908490611d32565b909155505060015461128a9082611bdf565b33600090815260036020526040812060020180549091906112ac908490611d4a565b909155505060405181815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b6112f76116f0565b600061130282610687565b9050801561159257611318600160401b82611bdf565b6001600160a01b03831660009081526003602052604081206002018054909190611343908490611d4a565b90915550506001600160a01b03821660009081526004602052604090205460ff16156114d557600061137d6005546001600160a01b031690565b90506001600160a01b0381166113f157600b54604051630852cd8d60e31b8152600481018490526001600160a01b03909116906342966c68906024015b600060405180830381600087803b1580156113d457600080fd5b505af11580156113e8573d6000803e3d6000fd5b505050506114cf565b600654600160a01b900460ff161561145657600754600b54604080516020808201879052825180830390910181528183019283905263e3dec8fb60e01b9092526001600160a01b039384169363e3dec8fb936113ba9387939290911691604401611d8b565b600b5460405163a9059cbb60e01b81526001600160a01b038381166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af11580156114a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114cd9190611bc2565b505b5061154e565b600b5460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015611528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154c9190611bc2565b505b816001600160a01b03167f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d48260405161158991815260200190565b60405180910390a25b5050565b6001600160a01b0383166000908152600360205260408120548211156115bb57600080fd5b6115c36116f0565b6001600160a01b038416600090815260036020526040812080548492906115eb908490611b63565b90915550506001546115fd9083611bdf565b6001600160a01b03851660009081526003602052604081206002018054909190611628908490611bfe565b90915550506001600160a01b03831660009081526003602052604081208054849290611655908490611d32565b90915550506001546116679083611bdf565b6001600160a01b03841660009081526003602052604081206002018054909190611692908490611d4a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116de91815260200190565b60405180910390a35060019392505050565b600b546040516370a0823160e01b81523060048201819052916000916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561173e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117629190611c5f565b600a5460408051634e71d92d60e01b815290519293506001600160a01b0390911691634e71d92d9160048082019260009290919082900301818387803b1580156117ab57600080fd5b505af11580156117bf573d6000803e3d6000fd5b5050600b546040516370a0823160e01b81526001600160a01b0386811660048301526115929450859350909116906370a0823190602401611068565b80156110bb5760005461182857806000600201600082825461181d9190611d32565b9091555061186f9050565b600054600254600160401b9061183e9084611d32565b6118489190611bdf565b6118529190611c3d565b60018054600090611864908490611d32565b909155505060006002555b6040518181527f3ac0594a85a20354f9dc74f33728416d19ce00d04a406c108cc2dcf2cecea1349060200160405180910390a150565b6000815180845260005b818110156118cb576020818501810151868301820152016118af565b818111156118dd576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610efd60208301846118a5565b6001600160a01b03811681146110bb57600080fd5b6000806040838503121561192d57600080fd5b823561193881611905565b946020939093013593505050565b60006020828403121561195857600080fd5b8135610efd81611905565b60008060006060848603121561197857600080fd5b833561198381611905565b9250602084013561199381611905565b929592945050506040919091013590565b600080600080606085870312156119ba57600080fd5b84356119c581611905565b935060208501359250604085013567ffffffffffffffff808211156119e957600080fd5b818701915087601f8301126119fd57600080fd5b813581811115611a0c57600080fd5b886020828501011115611a1e57600080fd5b95989497505060200194505050565b80151581146110bb57600080fd5b600060208284031215611a4d57600080fd5b8135610efd81611a2d565b60008060408385031215611a6b57600080fd5b8235611a7681611905565b91506020830135611a8681611a2d565b809150509250929050565b60008060208385031215611aa457600080fd5b823567ffffffffffffffff80821115611abc57600080fd5b818501915085601f830112611ad057600080fd5b813581811115611adf57600080fd5b8660208260051b8501011115611af457600080fd5b60209290920196919550909350505050565b600060208284031215611b1857600080fd5b5035919050565b60008060408385031215611b3257600080fd5b8235611b3d81611905565b91506020830135611a8681611905565b634e487b7160e01b600052601160045260246000fd5b600082821015611b7557611b75611b4d565b500390565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301376000818301608090810191909152601f909201601f191601019392505050565b600060208284031215611bd457600080fd5b8151610efd81611a2d565b6000816000190483118215151615611bf957611bf9611b4d565b500290565b60008083128015600160ff1b850184121615611c1c57611c1c611b4d565b6001600160ff1b0384018313811615611c3757611c37611b4d565b50500390565b600082611c5a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611c7157600080fd5b5051919050565b80516001600160701b0381168114611c8f57600080fd5b919050565b600080600060608486031215611ca957600080fd5b611cb284611c78565b9250611cc060208501611c78565b9150604084015163ffffffff81168114611cd957600080fd5b809150509250925092565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611d0c57600080fd5b8151610efd81611905565b6000600019821415611d2b57611d2b611b4d565b5060010190565b60008219821115611d4557611d45611b4d565b500190565b600080821280156001600160ff1b0384900385131615611d6c57611d6c611b4d565b600160ff1b8390038412811615611d8557611d85611b4d565b50500190565b6001600160a01b038481168252831660208201526060604082018190526000906105d8908301846118a556fea2646970667358221220cd8a9eb3ac97d2581e7db9966bd2022ed3071b3e504d9c104ef955c4bf829ec864736f6c634300080a00330000000000000000000000001ebb218415b1f70aeff54041c743082f183318ce0000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c9bd33b116100de578063a9059cbb11610097578063cc17a5bf11610071578063cc17a5bf146103b8578063dd62ed3e146103cb578063ddeae03314610408578063f10f1b031461041b57600080fd5b8063a9059cbb1461037f578063ae268ca714610392578063bd77ac2c146103a557600080fd5b80635c9bd33b1461030757806363ac2a4c1461031957806370a082311461032c5780638da5cb5b1461035557806395d89b4114610366578063a8b089821461036e57600080fd5b8063313ce5671161014b5780634e71d92d116101255780634e71d92d146102735780634ff9fd661461027b57806350ccb3021461028e57806357f6b812146102a157600080fd5b8063313ce567146102335780634000aea01461024d578063479ba7ae1461026057600080fd5b806306fdde0314610193578063095ea7b3146101b15780630fca9687146101d457806313af4035146101f957806318160ddd1461020e57806323b872dd14610220575b600080fd5b61019b610447565b6040516101a891906118f2565b60405180910390f35b6101c46101bf36600461191a565b6104b0565b60405190151581526020016101a8565b6005546001600160a01b03165b6040516001600160a01b0390911681526020016101a8565b61020c610207366004611946565b61051b565b005b6000545b6040519081526020016101a8565b6101c461022e366004611963565b610554565b61023b601281565b60405160ff90911681526020016101a8565b6101c461025b3660046119a4565b6105e1565b61021261026e366004611946565b610687565b61020c6106d3565b61020c610289366004611a3b565b6106de565b61020c61029c366004611a58565b610713565b6102b46102af366004611946565b610768565b604080519b8c5260208c019a909a52988a01979097526060890195909552608088019390935290151560a087015260c086015260e0850152610100840152610120830152610140820152610160016101a8565b600654600160a01b900460ff166101c4565b610212610327366004611a91565b610b8f565b61021261033a366004611946565b6001600160a01b031660009081526003602052604090205490565b6006546001600160a01b03166101e1565b61019b610ea0565b6009546001600160a01b03166101e1565b6101c461038d36600461191a565b610ef0565b61020c6103a0366004611946565b610f04565b61020c6103b3366004611b06565b610f3d565b61020c6103c6366004611a91565b6110be565b6102126103d9366004611b1f565b6001600160a01b0391821660009081526003602090815260408083209390941682526001909201909152205490565b61020c610416366004611946565b6112ef565b6101c4610429366004611946565b6001600160a01b031660009081526004602052604090205460ff1690565b600954606090600160a81b900460ff1661048757506040805180820190915260118152702bb930b83832b2102334b9b432b936b2b760791b602082015290565b5060408051808201909152600e81526d57726170706564205768616c657360901b602082015290565b3360008181526003602090815260408083206001600160a01b0387168085526001909101835281842086905590518581529293909290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350600192915050565b6006546001600160a01b0316331461053257600080fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831660009081526003602090815260408083203384526001019091528120548281101561058857600080fd5b60001981146105cd576001600160a01b0385166000908152600360209081526040808320338452600101909152812080548592906105c7908490611b63565b90915550505b6105d8858585611596565b95945050505050565b60006105ee338686611596565b50843b63ffffffff81161561067b57604051636be32e7360e01b81526001600160a01b03871690636be32e739061062f903390899089908990600401611b7a565b6020604051808303816000875af115801561064e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106729190611bc2565b61067b57600080fd5b50600195945050505050565b6001600160a01b038116600090815260036020526040812060028101549054600154600160401b92916106b991611bdf565b6106c39190611bfe565b6106cd9190611c3d565b92915050565b6106dc336112ef565b565b6006546001600160a01b031633146106f557600080fd5b60068054911515600160a01b0260ff60a01b19909216919091179055565b6006546001600160a01b0316331461072a57600080fd5b813b63ffffffff811661073c57600080fd5b506001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b600080600080600080600080600080600061078260005490565b600954604080516318160ddd60e01b81529051929d506001600160a01b03909116916318160ddd916004808201926020929091908290030181865afa1580156107cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f39190611c5f565b60095460408051630240bc6b60e21b81529051929c5060009283926001600160a01b031691630902f1ac9160048083019260609291908290030181865afa158015610842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108669190611c94565b506009546001600160701b03928316945091169150600160a01b900460ff1661088f5780610891565b815b600954909b50600160a01b900460ff166108ab57816108ad565b805b99506000600a0160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b815260040161090291906001600160a01b0391909116815260200190565b602060405180830381865afa15801561091f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109439190611c5f565b98506000600a0160009054906101000a90046001600160a01b03166001600160a01b031663e985e9c58f306040518363ffffffff1660e01b81526004016109a09291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa1580156109bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e19190611bc2565b9750610a028e6001600160a01b031660009081526003602052604090205490565b9650610a0d8e610687565b9550600060090160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b8152600401610a6291906001600160a01b0391909116815260200190565b602060405180830381865afa158015610a7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa39190611c5f565b600a546040516379400dc160e01b81523060048201529196506001600160a01b0316906379400dc190602401602060405180830381865afa158015610aec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b109190611c5f565b600a5460405162c4d0c360e51b81523060048201529195506001600160a01b03169063189a186090602401602060405180830381865afa158015610b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7c9190611c5f565b9250505091939597999b90929496989a50565b600081610ba481670de0b6b3a7640000611bdf565b336000908152600360205260409020541015610bbf57600080fd5b610bc76116f0565b6000915060005b81811015610dcb57600a5430906001600160a01b0316636352211e878785818110610bfb57610bfb611ce4565b905060200201356040518263ffffffff1660e01b8152600401610c2091815260200190565b602060405180830381865afa158015610c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c619190611cfa565b6001600160a01b03161415610db957600954600a54600160a81b90910460ff161515906001600160a01b031663a0ced6fd878785818110610ca457610ca4611ce4565b905060200201356040518263ffffffff1660e01b8152600401610cc991815260200190565b602060405180830381865afa158015610ce6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0a9190611bc2565b151514610d1657600080fd5b600a546001600160a01b03166323b872dd3033888886818110610d3b57610d3b611ce4565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b158015610d9257600080fd5b505af1158015610da6573d6000803e3d6000fd5b505050508280610db590611d17565b9350505b80610dc381611d17565b915050610bce565b5060008211610dd957600080fd5b6000610ded83670de0b6b3a7640000611bdf565b905080600080016000828254610e039190611b63565b90915550503360009081526003602052604081208054839290610e27908490611b63565b9091555050600154610e399082611bdf565b3360009081526003602052604081206002018054909190610e5b908490611bfe565b909155505060405181815260009033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505092915050565b600954606090600160a81b900460ff16610ed2575060408051808201909152600381526277464d60e81b602082015290565b506040805180820190915260038152620eeae960eb1b602082015290565b6000610efd338484611596565b9392505050565b6006546001600160a01b03163314610f1b57600080fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b80156110bb57600b546040516370a0823160e01b81523060048201819052916000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190611c5f565b600b546040516323b872dd60e01b81523360048201526001600160a01b038581166024830152604482018790529293509116906323b872dd906064016020604051808303816000875af1158015611010573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110349190611bc2565b50600b546040516370a0823160e01b81526001600160a01b0384811660048301526110b89284929116906370a08231906024015b602060405180830381865afa158015611085573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a99190611c5f565b6110b39190611b63565b6117fb565b50505b50565b80806110c957600080fd5b6110d16116f0565b60005b8181101561122957600954600a54600160a81b90910460ff161515906001600160a01b031663a0ced6fd86868581811061111057611110611ce4565b905060200201356040518263ffffffff1660e01b815260040161113591815260200190565b602060405180830381865afa158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190611bc2565b15151461118257600080fd5b600a546001600160a01b03166323b872dd33308787868181106111a7576111a7611ce4565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b1580156111fe57600080fd5b505af1158015611212573d6000803e3d6000fd5b50505050808061122190611d17565b9150506110d4565b50600061123e82670de0b6b3a7640000611bdf565b9050806000800160008282546112549190611d32565b90915550503360009081526003602052604081208054839290611278908490611d32565b909155505060015461128a9082611bdf565b33600090815260036020526040812060020180549091906112ac908490611d4a565b909155505060405181815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b6112f76116f0565b600061130282610687565b9050801561159257611318600160401b82611bdf565b6001600160a01b03831660009081526003602052604081206002018054909190611343908490611d4a565b90915550506001600160a01b03821660009081526004602052604090205460ff16156114d557600061137d6005546001600160a01b031690565b90506001600160a01b0381166113f157600b54604051630852cd8d60e31b8152600481018490526001600160a01b03909116906342966c68906024015b600060405180830381600087803b1580156113d457600080fd5b505af11580156113e8573d6000803e3d6000fd5b505050506114cf565b600654600160a01b900460ff161561145657600754600b54604080516020808201879052825180830390910181528183019283905263e3dec8fb60e01b9092526001600160a01b039384169363e3dec8fb936113ba9387939290911691604401611d8b565b600b5460405163a9059cbb60e01b81526001600160a01b038381166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af11580156114a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114cd9190611bc2565b505b5061154e565b600b5460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015611528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154c9190611bc2565b505b816001600160a01b03167f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d48260405161158991815260200190565b60405180910390a25b5050565b6001600160a01b0383166000908152600360205260408120548211156115bb57600080fd5b6115c36116f0565b6001600160a01b038416600090815260036020526040812080548492906115eb908490611b63565b90915550506001546115fd9083611bdf565b6001600160a01b03851660009081526003602052604081206002018054909190611628908490611bfe565b90915550506001600160a01b03831660009081526003602052604081208054849290611655908490611d32565b90915550506001546116679083611bdf565b6001600160a01b03841660009081526003602052604081206002018054909190611692908490611d4a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116de91815260200190565b60405180910390a35060019392505050565b600b546040516370a0823160e01b81523060048201819052916000916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561173e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117629190611c5f565b600a5460408051634e71d92d60e01b815290519293506001600160a01b0390911691634e71d92d9160048082019260009290919082900301818387803b1580156117ab57600080fd5b505af11580156117bf573d6000803e3d6000fd5b5050600b546040516370a0823160e01b81526001600160a01b0386811660048301526115929450859350909116906370a0823190602401611068565b80156110bb5760005461182857806000600201600082825461181d9190611d32565b9091555061186f9050565b600054600254600160401b9061183e9084611d32565b6118489190611bdf565b6118529190611c3d565b60018054600090611864908490611d32565b909155505060006002555b6040518181527f3ac0594a85a20354f9dc74f33728416d19ce00d04a406c108cc2dcf2cecea1349060200160405180910390a150565b6000815180845260005b818110156118cb576020818501810151868301820152016118af565b818111156118dd576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610efd60208301846118a5565b6001600160a01b03811681146110bb57600080fd5b6000806040838503121561192d57600080fd5b823561193881611905565b946020939093013593505050565b60006020828403121561195857600080fd5b8135610efd81611905565b60008060006060848603121561197857600080fd5b833561198381611905565b9250602084013561199381611905565b929592945050506040919091013590565b600080600080606085870312156119ba57600080fd5b84356119c581611905565b935060208501359250604085013567ffffffffffffffff808211156119e957600080fd5b818701915087601f8301126119fd57600080fd5b813581811115611a0c57600080fd5b886020828501011115611a1e57600080fd5b95989497505060200194505050565b80151581146110bb57600080fd5b600060208284031215611a4d57600080fd5b8135610efd81611a2d565b60008060408385031215611a6b57600080fd5b8235611a7681611905565b91506020830135611a8681611a2d565b809150509250929050565b60008060208385031215611aa457600080fd5b823567ffffffffffffffff80821115611abc57600080fd5b818501915085601f830112611ad057600080fd5b813581811115611adf57600080fd5b8660208260051b8501011115611af457600080fd5b60209290920196919550909350505050565b600060208284031215611b1857600080fd5b5035919050565b60008060408385031215611b3257600080fd5b8235611b3d81611905565b91506020830135611a8681611905565b634e487b7160e01b600052601160045260246000fd5b600082821015611b7557611b75611b4d565b500390565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301376000818301608090810191909152601f909201601f191601019392505050565b600060208284031215611bd457600080fd5b8151610efd81611a2d565b6000816000190483118215151615611bf957611bf9611b4d565b500290565b60008083128015600160ff1b850184121615611c1c57611c1c611b4d565b6001600160ff1b0384018313811615611c3757611c37611b4d565b50500390565b600082611c5a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611c7157600080fd5b5051919050565b80516001600160701b0381168114611c8f57600080fd5b919050565b600080600060608486031215611ca957600080fd5b611cb284611c78565b9250611cc060208501611c78565b9150604084015163ffffffff81168114611cd957600080fd5b809150509250925092565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611d0c57600080fd5b8151610efd81611905565b6000600019821415611d2b57611d2b611b4d565b5060010190565b60008219821115611d4557611d45611b4d565b500190565b600080821280156001600160ff1b0384900385131615611d6c57611d6c611b4d565b600160ff1b8390038412811615611d8557611d85611b4d565b50500190565b6001600160a01b038481168252831660208201526060604082018190526000906105d8908301846118a556fea2646970667358221220cd8a9eb3ac97d2581e7db9966bd2022ed3071b3e504d9c104ef955c4bf829ec864736f6c634300080a0033

Deployed Bytecode Sourcemap

1875:8799:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7567:124;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6702:203;;;;;;:::i;:::-;;:::i;:::-;;;1337:14:1;;1330:22;1312:41;;1300:2;1285:18;6702:203:0;1172:187:1;7968:94:0;8037:20;;-1:-1:-1;;;;;8037:20:0;7968:94;;;-1:-1:-1;;;;;1528:32:1;;;1510:51;;1498:2;1483:18;7968:94:0;1364:203:1;3681:83:0;;;;;;:::i;:::-;;:::i;:::-;;8269:86;8313:7;8334:16;8269:86;;;1970:25:1;;;1958:2;1943:18;8269:86:0;1824:177:1;6910:321:0;;;;;;:::i;:::-;;:::i;2105:35::-;;2138:2;2105:35;;;;;2639:4:1;2627:17;;;2609:36;;2597:2;2582:18;2105:35:0;2467:184:1;7236:323:0;;;;;;:::i;:::-;;:::i;8472:191::-;;;;;;:::i;:::-;;:::i;5849:56::-;;;:::i;3769:96::-;;;;;;:::i;:::-;;:::i;3870:213::-;;;;;;:::i;:::-;;:::i;8809:876::-;;;;;;:::i;:::-;;:::i;:::-;;;;4633:25:1;;;4689:2;4674:18;;4667:34;;;;4717:18;;;4710:34;;;;4775:2;4760:18;;4753:34;;;;4818:3;4803:19;;4796:35;;;;4875:14;;4868:22;4862:3;4847:19;;4840:51;4922:3;4907:19;;4900:35;4966:3;4951:19;;4944:35;5010:3;4995:19;;4988:35;5054:3;5039:19;;5032:35;5098:3;5083:19;;5076:36;4620:3;4605:19;8809:876:0;4211:907:1;7883:79:0;7943:14;;-1:-1:-1;;;7943:14:0;;;;7883:79;;5073:771;;;;;;:::i;:::-;;:::i;8360:106::-;;;;;;:::i;:::-;-1:-1:-1;;;;;8436:17:0;8415:7;8436:17;;;:10;:17;;;;;:25;;8360:106;7803:74;7862:10;;-1:-1:-1;;;;;7862:10:0;7803:74;;7696:101;;;:::i;8175:88::-;8248:9;;-1:-1:-1;;;;;8248:9:0;8175:88;;6573:124;;;;;;:::i;:::-;;:::i;4088:115::-;;;;;;:::i;:::-;;:::i;4210:287::-;;;;;;:::i;:::-;;:::i;4502:566::-;;;;;;:::i;:::-;;:::i;8668:136::-;;;;;;:::i;:::-;-1:-1:-1;;;;;8762:17:0;;;8741:7;8762:17;;;:10;:17;;;;;;;;:37;;;;;;:27;;;;:37;;;;;;8668:136;5910:658;;;;;;:::i;:::-;;:::i;8068:101::-;;;;;;:::i;:::-;-1:-1:-1;;;;;8142:22:0;8124:4;8142:22;;;:15;:22;;;;;;;;;8068:101;7567:124;7633:12;;7606:13;;-1:-1:-1;;;7633:12:0;;;;:53;;-1:-1:-1;7633:53:0;;;;;;;;;;;;-1:-1:-1;;;7633:53:0;;;;;7567:124::o;7633:53::-;-1:-1:-1;7633:53:0;;;;;;;;;;;;-1:-1:-1;;;7633:53:0;;;;;7567:124::o;6702:203::-;6794:10;6772:4;6783:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;6783:42:0;;;;;:32;;;;:42;;;;;:52;;;6845:39;;1970:25:1;;;6772:4:0;;6783:42;;6794:10;;6845:39;;1943:18:1;6845:39:0;;;;;;;-1:-1:-1;6896:4:0;6702:203;;;;:::o;3681:83::-;7862:10;;-1:-1:-1;;;;;7862:10:0;2922;:21;2914:30;;;;;;3740:10:::1;:19:::0;;-1:-1:-1;;;;;;3740:19:0::1;-1:-1:-1::0;;;;;3740:19:0;;;::::1;::::0;;;::::1;::::0;;3681:83::o;6910:321::-;-1:-1:-1;;;;;8762:17:0;;6995:4;8762:17;;;:10;:17;;;;;;;;7044:10;8762:37;;:27;;:37;;;;;;7082:7;7068:10;:21;;7060:30;;;;;;-1:-1:-1;;7099:10:0;:22;7095:90;;-1:-1:-1;;;;;7129:17:0;;:4;:17;;;:10;:17;;;;;;;;7157:10;7129:39;;:27;;:39;;;;;:50;;7172:7;;7129:4;:50;;7172:7;;7129:50;:::i;:::-;;;;-1:-1:-1;;7095:90:0;7196:30;7206:5;7213:3;7218:7;7196:9;:30::i;:::-;7189:37;6910:321;-1:-1:-1;;;;;6910:321:0:o;7236:323::-;7331:4;7342:35;7352:10;7364:3;7369:7;7342:9;:35::i;:::-;-1:-1:-1;7423:16:0;;7452:9;;;;7448:91;;7477:55;;-1:-1:-1;;;7477:55:0;;-1:-1:-1;;;;;7477:27:0;;;;;:55;;7505:10;;7517:7;;7526:5;;;;7477:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7469:64;;;;;;-1:-1:-1;7550:4:0;;7236:323;-1:-1:-1;;;;;7236:323:0:o;8472:191::-;-1:-1:-1;;;;;8612:17:0;;8527:7;8612:17;;;:10;:17;;;;;:30;;;;8436:25;;8563:26;;-1:-1:-1;;;2000:5:0;8612:30;8563:45;;;:::i;:::-;8556:86;;;;:::i;:::-;8548:110;;;;:::i;:::-;8541:117;8472:191;-1:-1:-1;;8472:191:0:o;5849:56::-;5880:20;5889:10;5880:8;:20::i;:::-;5849:56::o;3769:96::-;7862:10;;-1:-1:-1;;;;;7862:10:0;2922;:21;2914:30;;;;;;3833:14:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;3833:27:0::1;-1:-1:-1::0;;;;3833:27:0;;::::1;::::0;;;::::1;::::0;;3769:96::o;3870:213::-;7862:10;;-1:-1:-1;;;;;7862:10:0;2922;:21;2914:30;;;;;;3992:18;::::1;4027:9;::::0;::::1;4019:18;;;::::0;::::1;;-1:-1:-1::0;;;;;;4042:22:0;;;::::1;:4;:22:::0;;;:15:::1;:22;::::0;;;;:36;;-1:-1:-1;;4042:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;3870:213::o;8809:876::-;8867:19;8888:21;8911:19;8932:22;8956:18;8976:17;8995:19;9016;9037:21;9060:25;9087:22;9130:13;8313:7;8334:16;;8269:86;9130:13;9164:9;;:23;;;-1:-1:-1;;;9164:23:0;;;;9116:27;;-1:-1:-1;;;;;;9164:9:0;;;;:21;;:23;;;;;;;;;;;;;;;:9;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9227:9;;:23;;;-1:-1:-1;;;9227:23:0;;;;9148:39;;-1:-1:-1;9193:13:0;;;;-1:-1:-1;;;;;9227:9:0;;:21;;:23;;;;;;;;;;;;;;:9;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9269:10:0;;-1:-1:-1;;;;;9192:58:0;;;;-1:-1:-1;9192:58:0;;;-1:-1:-1;;;;9269:10:0;;;;:26;;9290:5;9269:26;;;9282:5;9269:26;9317:10;;9255:40;;-1:-1:-1;;;;9317:10:0;;;;:26;;9338:5;9317:26;;;9330:5;9317:26;9300:43;;9361:4;:7;;;;;;;;;;-1:-1:-1;;;;;9361:7:0;-1:-1:-1;;;;;9361:17:0;;9379:5;9361:24;;;;;;;;;;;;;;-1:-1:-1;;;;;1528:32:1;;;;1510:51;;1498:2;1483:18;;1364:203;9361:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9348:37;;9405:4;:7;;;;;;;;;;-1:-1:-1;;;;;9405:7:0;-1:-1:-1;;;;;9405:24:0;;9430:5;9445:4;9405:46;;;;;;;;;;;;;;;-1:-1:-1;;;;;9131:15:1;;;9113:34;;9183:15;;9178:2;9163:18;;9156:43;9063:2;9048:18;;8901:304;9405:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9390:61;;9470:16;9480:5;-1:-1:-1;;;;;8436:17:0;8415:7;8436:17;;;:10;:17;;;;;:25;;8360:106;9470:16;9456:30;;9505:16;9515:5;9505:9;:16::i;:::-;9491:30;;9542:4;:9;;;;;;;;;;-1:-1:-1;;;;;9542:9:0;-1:-1:-1;;;;;9542:19:0;;9562:5;9542:26;;;;;;;;;;;;;;-1:-1:-1;;;;;1528:32:1;;;;1510:51;;1498:2;1483:18;;1364:203;9542:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9593:7;;:34;;-1:-1:-1;;;9593:34:0;;9621:4;9593:34;;;1510:51:1;9526:42:0;;-1:-1:-1;;;;;;9593:7:0;;:19;;1483:18:1;;9593:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9649:7;;:31;;-1:-1:-1;;;9649:31:0;;9674:4;9649:31;;;1510:51:1;9573:54:0;;-1:-1:-1;;;;;;9649:7:0;;:16;;1483:18:1;;9649:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9632:48;;9111:574;;8809:876;;;;;;;;;;;;;:::o;5073:771::-;5137:22;5183:9;5237:13;5183:9;5246:4;5237:13;:::i;:::-;5222:10;8415:7;8436:17;;;:10;:17;;;;;:25;5212:38;;5204:47;;;;;;5256:9;:7;:9::i;:::-;5287:1;5270:18;;5298:9;5293:262;5317:6;5313:1;:10;5293:262;;;5340:7;;5381:4;;-1:-1:-1;;;;;5340:7:0;:15;5356:9;;5366:1;5356:12;;;;;;;:::i;:::-;;;;;;;5340:29;;;;;;;;;;;;;1970:25:1;;1958:2;1943:18;;1824:177;5340:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5340:46:0;;5336:214;;;5439:12;;5403:7;;-1:-1:-1;;;5439:12:0;;;;;5403:48;;;-1:-1:-1;;;;;5403:7:0;:18;5422:9;;5432:1;5422:12;;;;;;;:::i;:::-;;;;;;;5403:32;;;;;;;;;;;;;1970:25:1;;1958:2;1943:18;;1824:177;5403:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;;5395:57;;;;;;5459:7;;-1:-1:-1;;;;;5459:7:0;:20;5488:4;5495:10;5507:9;;5517:1;5507:12;;;;;;;:::i;:::-;5459:61;;-1:-1:-1;;;;;;5459:61:0;;;;;;;-1:-1:-1;;;;;9856:15:1;;;5459:61:0;;;9838:34:1;9908:15;;;;9888:18;;;9881:43;-1:-1:-1;5507:12:0;;;;;;9940:18:1;;;9933:34;9773:18;;5459:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5527:16;;;;;:::i;:::-;;;;5336:214;5325:3;;;;:::i;:::-;;;;5293:262;;;;5584:1;5567:14;:18;5559:27;;;;;;5591:13;5607:21;:14;5624:4;5607:21;:::i;:::-;5591:37;;5653:5;5633:4;:16;;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;5674:10:0;5663:4;:22;;;:10;:22;;;;;:39;;5697:5;;5663:4;:39;;5697:5;;5663:39;:::i;:::-;;;;-1:-1:-1;;5761:26:0;;5753:34;;:5;:34;:::i;:::-;5718:10;5707:4;:22;;;:10;:22;;;;;:35;;:81;;:35;;:4;:81;;;;;:::i;:::-;;;;-1:-1:-1;;5798:41:0;;1970:25:1;;;5827:3:0;;5807:10;;5798:41;;1958:2:1;1943:18;5798:41:0;;;;;;;5161:683;;5073:771;;;;:::o;7696:101::-;7764:12;;7737:13;;-1:-1:-1;;;7764:12:0;;;;:28;;-1:-1:-1;7764:28:0;;;;;;;;;;;;-1:-1:-1;;;7764:28:0;;;;;7567:124::o;7764:28::-;-1:-1:-1;7764:28:0;;;;;;;;;;;;-1:-1:-1;;;7764:28:0;;;;;7696:101::o;6573:124::-;6639:4;6657:35;6667:10;6679:3;6684:7;6657:9;:35::i;:::-;6650:42;6573:124;-1:-1:-1;;;6573:124:0:o;4088:115::-;7862:10;;-1:-1:-1;;;;;7862:10:0;2922;:21;2914:30;;;;;;4163:20:::1;:35:::0;;-1:-1:-1;;;;;;4163:35:0::1;-1:-1:-1::0;;;;;4163:35:0;;;::::1;::::0;;;::::1;::::0;;4088:115::o;4210:287::-;4263:11;;4259:234;;4342:10;;:27;;-1:-1:-1;;;4342:27:0;;4306:4;4342:27;;;1510:51:1;;;4306:4:0;4282:13;;-1:-1:-1;;;;;4342:10:0;;;;:20;;1483:18:1;;4342:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4375:10;;:51;;-1:-1:-1;;;4375:51:0;;4399:10;4375:51;;;9838:34:1;-1:-1:-1;;;;;9908:15:1;;;9888:18;;;9881:43;9940:18;;;9933:34;;;4317:52:0;;-1:-1:-1;4375:10:0;;;:23;;9773:18:1;;4375:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4442:10:0;;:27;;-1:-1:-1;;;4442:27:0;;-1:-1:-1;;;;;1528:32:1;;;4442:27:0;;;1510:51:1;4432:55:0;;4472:14;;4442:10;;;:20;;1483:18:1;;4442:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;;;:::i;:::-;4432:9;:55::i;:::-;4276:217;;4259:234;4210:287;:::o;4502:566::-;4577:9;4606:10;4598:19;;;;;;4622:9;:7;:9::i;:::-;4641;4636:173;4660:6;4656:1;:10;4636:173;;;4723:12;;4687:7;;-1:-1:-1;;;4723:12:0;;;;;4687:48;;;-1:-1:-1;;;;;4687:7:0;:18;4706:9;;4716:1;4706:12;;;;;;;:::i;:::-;;;;;;;4687:32;;;;;;;;;;;;;1970:25:1;;1958:2;1943:18;;1824:177;4687:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;;4679:57;;;;;;4742:7;;-1:-1:-1;;;;;4742:7:0;:20;4763:10;4783:4;4790:9;;4800:1;4790:12;;;;;;;:::i;:::-;4742:61;;-1:-1:-1;;;;;;4742:61:0;;;;;;;-1:-1:-1;;;;;9856:15:1;;;4742:61:0;;;9838:34:1;9908:15;;;;9888:18;;;9881:43;-1:-1:-1;4790:12:0;;;;;;9940:18:1;;;9933:34;9773:18;;4742:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4668:3;;;;;:::i;:::-;;;;4636:173;;;-1:-1:-1;4813:15:0;4831:13;:6;4840:4;4831:13;:::i;:::-;4813:31;;4869:7;4849:4;:16;;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;4892:10:0;4881:4;:22;;;:10;:22;;;;;:41;;4915:7;;4881:4;:41;;4915:7;;4881:41;:::i;:::-;;;;-1:-1:-1;;4983:26:0;;4973:36;;:7;:36;:::i;:::-;4938:10;4927:4;:22;;;:10;:22;;;;;:35;;:83;;:35;;:4;:83;;;;;:::i;:::-;;;;-1:-1:-1;;5020:43:0;;1970:25:1;;;5043:10:0;;5037:3;;5020:43;;1958:2:1;1943:18;5020:43:0;;;;;;;4555:513;;4502:566;;:::o;5910:658::-;5955:9;:7;:9::i;:::-;5969:16;5988;5998:5;5988:9;:16::i;:::-;5969:35;-1:-1:-1;6013:12:0;;6009:555;;6074:23;-1:-1:-1;;;6074:8:0;:23;:::i;:::-;-1:-1:-1;;;;;6033:17:0;;:4;:17;;;:10;:17;;;;;:30;;:65;;:30;;:4;:65;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8142:22:0;;8124:4;8142:22;;;:15;:22;;;;;;;;6104:422;;;6134:20;6157:17;8037:20;;-1:-1:-1;;;;;8037:20:0;;7968:94;6157:17;6134:40;-1:-1:-1;;;;;;6185:28:0;;6181:283;;6223:10;;:25;;-1:-1:-1;;;6223:25:0;;;;;1970::1;;;-1:-1:-1;;;;;6223:10:0;;;;:15;;1943:18:1;;6223:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6181:283;;;7943:14;;-1:-1:-1;;;7943:14:0;;;;6270:187;;;6296:11;;6341:10;;6354:26;;;;;;;10650:19:1;;;6354:26:0;;;;;;;;;;10685:12:1;;;6354:26:0;;;;-1:-1:-1;;;6296:85:0;;;-1:-1:-1;;;;;6296:11:0;;;;:22;;:85;;6319:12;;6341:10;;;;;6296:85;;;:::i;6270:187::-;6405:10;;:43;;-1:-1:-1;;;6405:43:0;;-1:-1:-1;;;;;11321:32:1;;;6405:43:0;;;11303:51:1;11370:18;;;11363:34;;;6405:10:0;;;;:19;;11276:18:1;;6405:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6270:187;6127:343;6104:422;;;6483:10;;:36;;-1:-1:-1;;;6483:36:0;;-1:-1:-1;;;;;11321:32:1;;;6483:36:0;;;11303:51:1;11370:18;;;11363:34;;;6483:10:0;;;;:19;;11276:18:1;;6483:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6104:422;6542:5;-1:-1:-1;;;;;6536:22:0;;6549:8;6536:22;;;;1970:25:1;;1958:2;1943:18;;1824:177;6536:22:0;;;;;;;;6009:555;5950:618;5910:658;:::o;9692:447::-;-1:-1:-1;;;;;8436:17:0;;9774:4;8436:17;;;:10;:17;;;;;:25;9813:7;-1:-1:-1;9793:27:0;9785:36;;;;;;9826:9;:7;:9::i;:::-;-1:-1:-1;;;;;9840:17:0;;:4;:17;;;:10;:17;;;;;:36;;9869:7;;9840:4;:36;;9869:7;;9840:36;:::i;:::-;;;;-1:-1:-1;;9932:26:0;;9922:36;;:7;:36;:::i;:::-;-1:-1:-1;;;;;9881:17:0;;:4;:17;;;:10;:17;;;;;:30;;:78;;:30;;:4;:78;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;9964:15:0;;:4;:15;;;:10;:15;;;;;:34;;9991:7;;9964:4;:34;;9991:7;;9964:34;:::i;:::-;;;;-1:-1:-1;;10052:26:0;;10042:36;;:7;:36;:::i;:::-;-1:-1:-1;;;;;10003:15:0;;:4;:15;;;:10;:15;;;;;:28;;:76;;:28;;:4;:76;;;;;:::i;:::-;;;;;;;;10105:3;-1:-1:-1;;;;;10089:29:0;10098:5;-1:-1:-1;;;;;10089:29:0;;10110:7;10089:29;;;;1970:25:1;;1958:2;1943:18;;1824:177;10089:29:0;;;;;;;;-1:-1:-1;10130:4:0;9692:447;;;;;:::o;10144:204::-;10236:10;;:27;;-1:-1:-1;;;10236:27:0;;10201:4;10236:27;;;1510:51:1;;;10201:4:0;10177:13;;-1:-1:-1;;;;;10236:10:0;;;;:20;;1483:18:1;;10236:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10268:7;;:15;;;-1:-1:-1;;;10268:15:0;;;;10211:52;;-1:-1:-1;;;;;;10268:7:0;;;;:13;;:15;;;;;:4;;:15;;;;;;;;:4;:7;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10298:10:0;;:27;;-1:-1:-1;;;10298:27:0;;-1:-1:-1;;;;;1528:32:1;;;10298:27:0;;;1510:51:1;10288:55:0;;-1:-1:-1;10328:14:0;;-1:-1:-1;10298:10:0;;;;:20;;1483:18:1;;10298:27:0;1364:203:1;10353:318:0;10407:11;;10403:264;;8313:7;8334:16;10426:210;;10480:7;10457:4;:19;;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;10426:210:0;;-1:-1:-1;10426:210:0;;8313:7;8334:16;10548:19;;-1:-1:-1;;;2000:5:0;10538:29;;:7;:29;:::i;:::-;10537:46;;;;:::i;:::-;:62;;;;:::i;:::-;10507:26;:92;;:4;;:92;;;;;:::i;:::-;;;;-1:-1:-1;;10628:1:0;10606:19;:23;10426:210;10646:15;;1970:25:1;;;10646:15:0;;1958:2:1;1943:18;10646:15:0;;;;;;;10353:318;:::o;14:472:1:-;56:3;94:5;88:12;121:6;116:3;109:19;146:1;156:162;170:6;167:1;164:13;156:162;;;232:4;288:13;;;284:22;;278:29;260:11;;;256:20;;249:59;185:12;156:162;;;336:6;333:1;330:13;327:87;;;402:1;395:4;386:6;381:3;377:16;373:27;366:38;327:87;-1:-1:-1;468:2:1;447:15;-1:-1:-1;;443:29:1;434:39;;;;475:4;430:50;;14:472;-1:-1:-1;;14:472:1:o;491:220::-;640:2;629:9;622:21;603:4;660:45;701:2;690:9;686:18;678:6;660:45;:::i;716:131::-;-1:-1:-1;;;;;791:31:1;;781:42;;771:70;;837:1;834;827:12;852:315;920:6;928;981:2;969:9;960:7;956:23;952:32;949:52;;;997:1;994;987:12;949:52;1036:9;1023:23;1055:31;1080:5;1055:31;:::i;:::-;1105:5;1157:2;1142:18;;;;1129:32;;-1:-1:-1;;;852:315:1:o;1572:247::-;1631:6;1684:2;1672:9;1663:7;1659:23;1655:32;1652:52;;;1700:1;1697;1690:12;1652:52;1739:9;1726:23;1758:31;1783:5;1758:31;:::i;2006:456::-;2083:6;2091;2099;2152:2;2140:9;2131:7;2127:23;2123:32;2120:52;;;2168:1;2165;2158:12;2120:52;2207:9;2194:23;2226:31;2251:5;2226:31;:::i;:::-;2276:5;-1:-1:-1;2333:2:1;2318:18;;2305:32;2346:33;2305:32;2346:33;:::i;:::-;2006:456;;2398:7;;-1:-1:-1;;;2452:2:1;2437:18;;;;2424:32;;2006:456::o;2656:794::-;2744:6;2752;2760;2768;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;2876:9;2863:23;2895:31;2920:5;2895:31;:::i;:::-;2945:5;-1:-1:-1;2997:2:1;2982:18;;2969:32;;-1:-1:-1;3052:2:1;3037:18;;3024:32;3075:18;3105:14;;;3102:34;;;3132:1;3129;3122:12;3102:34;3170:6;3159:9;3155:22;3145:32;;3215:7;3208:4;3204:2;3200:13;3196:27;3186:55;;3237:1;3234;3227:12;3186:55;3277:2;3264:16;3303:2;3295:6;3292:14;3289:34;;;3319:1;3316;3309:12;3289:34;3364:7;3359:2;3350:6;3346:2;3342:15;3338:24;3335:37;3332:57;;;3385:1;3382;3375:12;3332:57;2656:794;;;;-1:-1:-1;;3416:2:1;3408:11;;-1:-1:-1;;;2656:794:1:o;3455:118::-;3541:5;3534:13;3527:21;3520:5;3517:32;3507:60;;3563:1;3560;3553:12;3578:241;3634:6;3687:2;3675:9;3666:7;3662:23;3658:32;3655:52;;;3703:1;3700;3693:12;3655:52;3742:9;3729:23;3761:28;3783:5;3761:28;:::i;3824:382::-;3889:6;3897;3950:2;3938:9;3929:7;3925:23;3921:32;3918:52;;;3966:1;3963;3956:12;3918:52;4005:9;3992:23;4024:31;4049:5;4024:31;:::i;:::-;4074:5;-1:-1:-1;4131:2:1;4116:18;;4103:32;4144:30;4103:32;4144:30;:::i;:::-;4193:7;4183:17;;;3824:382;;;;;:::o;5123:615::-;5209:6;5217;5270:2;5258:9;5249:7;5245:23;5241:32;5238:52;;;5286:1;5283;5276:12;5238:52;5326:9;5313:23;5355:18;5396:2;5388:6;5385:14;5382:34;;;5412:1;5409;5402:12;5382:34;5450:6;5439:9;5435:22;5425:32;;5495:7;5488:4;5484:2;5480:13;5476:27;5466:55;;5517:1;5514;5507:12;5466:55;5557:2;5544:16;5583:2;5575:6;5572:14;5569:34;;;5599:1;5596;5589:12;5569:34;5652:7;5647:2;5637:6;5634:1;5630:14;5626:2;5622:23;5618:32;5615:45;5612:65;;;5673:1;5670;5663:12;5612:65;5704:2;5696:11;;;;;5726:6;;-1:-1:-1;5123:615:1;;-1:-1:-1;;;;5123:615:1:o;5743:180::-;5802:6;5855:2;5843:9;5834:7;5830:23;5826:32;5823:52;;;5871:1;5868;5861:12;5823:52;-1:-1:-1;5894:23:1;;5743:180;-1:-1:-1;5743:180:1:o;5928:388::-;5996:6;6004;6057:2;6045:9;6036:7;6032:23;6028:32;6025:52;;;6073:1;6070;6063:12;6025:52;6112:9;6099:23;6131:31;6156:5;6131:31;:::i;:::-;6181:5;-1:-1:-1;6238:2:1;6223:18;;6210:32;6251:33;6210:32;6251:33;:::i;6321:127::-;6382:10;6377:3;6373:20;6370:1;6363:31;6413:4;6410:1;6403:15;6437:4;6434:1;6427:15;6453:125;6493:4;6521:1;6518;6515:8;6512:34;;;6526:18;;:::i;:::-;-1:-1:-1;6563:9:1;;6453:125::o;6583:559::-;-1:-1:-1;;;;;6796:32:1;;6778:51;;6860:2;6845:18;;6838:34;;;6908:2;6903;6888:18;;6881:30;;;6927:18;;6920:34;;;6947:6;6997;6991:3;6976:19;;6963:49;7062:1;7032:22;;;7056:3;7028:32;;;7021:43;;;;7125:2;7104:15;;;-1:-1:-1;;7100:29:1;7085:45;7081:55;;6583:559;-1:-1:-1;;;6583:559:1:o;7147:245::-;7214:6;7267:2;7255:9;7246:7;7242:23;7238:32;7235:52;;;7283:1;7280;7273:12;7235:52;7315:9;7309:16;7334:28;7356:5;7334:28;:::i;7397:168::-;7437:7;7503:1;7499;7495:6;7491:14;7488:1;7485:21;7480:1;7473:9;7466:17;7462:45;7459:71;;;7510:18;;:::i;:::-;-1:-1:-1;7550:9:1;;7397:168::o;7570:267::-;7609:4;7638:9;;;7663:10;;-1:-1:-1;;;7682:19:1;;7675:27;;7659:44;7656:70;;;7706:18;;:::i;:::-;-1:-1:-1;;;;;7753:27:1;;7746:35;;7738:44;;7735:70;;;7785:18;;:::i;:::-;-1:-1:-1;;7822:9:1;;7570:267::o;7842:217::-;7882:1;7908;7898:132;;7952:10;7947:3;7943:20;7940:1;7933:31;7987:4;7984:1;7977:15;8015:4;8012:1;8005:15;7898:132;-1:-1:-1;8044:9:1;;7842:217::o;8064:184::-;8134:6;8187:2;8175:9;8166:7;8162:23;8158:32;8155:52;;;8203:1;8200;8193:12;8155:52;-1:-1:-1;8226:16:1;;8064:184;-1:-1:-1;8064:184:1:o;8253:188::-;8332:13;;-1:-1:-1;;;;;8374:42:1;;8364:53;;8354:81;;8431:1;8428;8421:12;8354:81;8253:188;;;:::o;8446:450::-;8533:6;8541;8549;8602:2;8590:9;8581:7;8577:23;8573:32;8570:52;;;8618:1;8615;8608:12;8570:52;8641:40;8671:9;8641:40;:::i;:::-;8631:50;;8700:49;8745:2;8734:9;8730:18;8700:49;:::i;:::-;8690:59;;8792:2;8781:9;8777:18;8771:25;8836:10;8829:5;8825:22;8818:5;8815:33;8805:61;;8862:1;8859;8852:12;8805:61;8885:5;8875:15;;;8446:450;;;;;:::o;9210:127::-;9271:10;9266:3;9262:20;9259:1;9252:31;9302:4;9299:1;9292:15;9326:4;9323:1;9316:15;9342:251;9412:6;9465:2;9453:9;9444:7;9440:23;9436:32;9433:52;;;9481:1;9478;9471:12;9433:52;9513:9;9507:16;9532:31;9557:5;9532:31;:::i;9978:135::-;10017:3;-1:-1:-1;;10038:17:1;;10035:43;;;10058:18;;:::i;:::-;-1:-1:-1;10105:1:1;10094:13;;9978:135::o;10118:128::-;10158:3;10189:1;10185:6;10182:1;10179:13;10176:39;;;10195:18;;:::i;:::-;-1:-1:-1;10231:9:1;;10118:128::o;10251:265::-;10290:3;10318:9;;;10343:10;;-1:-1:-1;;;;;10362:27:1;;;10355:35;;10339:52;10336:78;;;10394:18;;:::i;:::-;-1:-1:-1;;;10441:19:1;;;10434:27;;10426:36;;10423:62;;;10465:18;;:::i;:::-;-1:-1:-1;;10501:9:1;;10251:265::o;10708:416::-;-1:-1:-1;;;;;10949:15:1;;;10931:34;;11001:15;;10996:2;10981:18;;10974:43;11053:2;11048;11033:18;;11026:30;;;10874:4;;11073:45;;11099:18;;11091:6;11073:45;:::i

Swarm Source

ipfs://cd8a9eb3ac97d2581e7db9966bd2022ed3071b3e504d9c104ef955c4bf829ec8
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.