ERC-20
Overview
Max Total Supply
21,000,000 Gold
Holders
86
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 8 Decimals)
Balance
0.20206352 GoldValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Goldzilla
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-09-21 */ /* Website : https://goldzilla.vip/ Twitter : https://twitter.com/Goldzilla_Eth Telegram : https://t.me/goldzillaishere */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.10; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address _account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any _account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } interface IDexSwapFactory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function getPair(address tokenA, address tokenB) external view returns (address pair); function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDexSwapRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract Goldzilla is Context, IERC20, Ownable { using SafeMath for uint256; string private _name = "Goldzilla"; string private _symbol = "Gold"; uint8 private _decimals = 8; address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; address public immutable zeroAddress = 0x0000000000000000000000000000000000000000; uint public buyTax = 2; uint public sellTax = 2; address public developmentWallet; uint256 feedenominator = 100; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public isExcludedFromFee; mapping (address => bool) public isMarketPair; mapping (address => bool) public isWalletLimitExempt; mapping (address => bool) public isTxLimitExempt; uint256 private _totalSupply = 21_000_000 * 10**_decimals; uint256 public _maxTxAmount = _totalSupply.mul(2).div(100); // 2% uint256 public _walletMax = _totalSupply.mul(2).div(100); // 2% uint256 public swapThreshold = _totalSupply.mul(5).div(100); bool public swapEnabled = true; bool public swapbylimit = true; bool public EnableTxLimit = true; bool public checkWalletLimit = true; IDexSwapRouter public dexRouter; address public dexPair; bool public trading; uint256 public launchedAt; bool inSwap; modifier onlyGuard() { require(msg.sender == developmentWallet,"Invalid Caller"); _; } modifier swapping() { inSwap = true; _; inSwap = false; } event SwapTokensForETH( uint256 amountIn, address[] path ); constructor() { developmentWallet = msg.sender; IDexSwapRouter _dexRouter = IDexSwapRouter( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); dexPair = IDexSwapFactory(_dexRouter.factory()) .createPair(address(this), _dexRouter.WETH()); dexRouter = _dexRouter; isExcludedFromFee[address(this)] = true; isExcludedFromFee[msg.sender] = true; isExcludedFromFee[address(dexRouter)] = true; isWalletLimitExempt[msg.sender] = true; isWalletLimitExempt[address(dexRouter)] = true; isWalletLimitExempt[address(this)] = true; isWalletLimitExempt[deadAddress] = true; isWalletLimitExempt[zeroAddress] = true; isWalletLimitExempt[address(dexPair)] = true; isTxLimitExempt[deadAddress] = true; isTxLimitExempt[zeroAddress] = true; isTxLimitExempt[msg.sender] = true; isTxLimitExempt[address(this)] = true; isTxLimitExempt[address(dexRouter)] = true; isMarketPair[address(dexPair)] = true; _allowances[address(this)][address(dexPair)] = ~uint256(0); _allowances[address(this)][address(dexRouter)] = ~uint256(0); buyTax = 25; sellTax = 30; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress)); } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } //to recieve ETH from Router when swaping receive() external payable {} function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: Exceeds allowance")); return true; } function _transfer(address sender, address recipient, uint256 amount) private returns (bool) { require(sender != address(0)); require(recipient != address(0)); require(amount > 0); if (inSwap) { return _basicTransfer(sender, recipient, amount); } else { if(!trading) { require(isExcludedFromFee[sender] || isExcludedFromFee[recipient],"Trade not Enable Yet!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= swapThreshold; if ( overMinimumTokenBalance && !inSwap && !isMarketPair[sender] && swapEnabled && !isExcludedFromFee[sender] && !isExcludedFromFee[recipient] ) { swapBack(contractTokenBalance); } if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTxLimit) { require(amount <= _maxTxAmount, "Exceeds maxTxAmount"); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 finalAmount = shouldNotTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount); if(checkWalletLimit && !isWalletLimitExempt[recipient]) { require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Exceeds Wallet"); } _balances[recipient] = _balances[recipient].add(finalAmount); emit Transfer(sender, recipient, finalAmount); return true; } } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function shouldNotTakeFee(address sender, address recipient) internal view returns (bool) { if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) { return true; } else if (isMarketPair[sender] || isMarketPair[recipient]) { return false; } else { return false; } } function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) { uint feeAmount; unchecked { if(isMarketPair[sender]) { feeAmount = amount.mul(buyTax).div(feedenominator); } else if(isMarketPair[recipient]) { feeAmount = amount.mul(sellTax).div(feedenominator); } if(feeAmount > 0) { _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); } return amount.sub(feeAmount); } } function swapBack(uint contractBalance) internal swapping { if(swapbylimit) contractBalance = swapThreshold; uint256 initialBalance = address(this).balance; swapTokensForEth(contractBalance); uint256 amountReceived = address(this).balance.sub(initialBalance); if(amountReceived > 0) payable(developmentWallet).transfer(amountReceived); } function enableTrading() external onlyOwner { require(!trading, "Trade Enabled!"); trading = true; launchedAt = block.timestamp; } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); _approve(address(this), address(dexRouter), tokenAmount); // make the swap dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function rescueFunds() external onlyGuard { (bool os,) = payable(msg.sender).call{value: address(this).balance}(""); require(os,"Transaction Failed!!"); } function rescueTokens(address _token,address recipient,uint _amount) external onlyGuard { (bool success, ) = address(_token).call(abi.encodeWithSignature('transfer(address,uint256)', recipient, _amount)); require(success, 'Token payment failed'); } function setBuyFee(uint _buySide, uint _sellSide) external onlyOwner { buyTax = _buySide; sellTax = _sellSide; } function removeLimits() external onlyGuard { EnableTxLimit = false; checkWalletLimit = false; } function enableTxLimit(bool _status) external onlyOwner { EnableTxLimit = _status; } function enableWalletLimit(bool _status) external onlyOwner { checkWalletLimit = _status; } function excludeFromFee(address _adr,bool _status) external onlyOwner { isExcludedFromFee[_adr] = _status; } function excludeWalletLimit(address _adr,bool _status) external onlyOwner { isWalletLimitExempt[_adr] = _status; } function excludeTxLimit(address _adr,bool _status) external onlyOwner { isTxLimitExempt[_adr] = _status; } function setMaxWalletLimit(uint256 newLimit) external onlyOwner() { _walletMax = newLimit; } function setTxLimit(uint256 newLimit) external onlyOwner() { _maxTxAmount = newLimit; } function setDevelopmentWallet(address _newWallet) external onlyOwner { developmentWallet = _newWallet; } function setMarketPair(address _pair, bool _status) external onlyOwner { isMarketPair[_pair] = _status; if(_status) { isWalletLimitExempt[_pair] = _status; } } function setSwapBackSettings(uint _threshold, bool _enabled, bool _limited) external onlyGuard { swapEnabled = _enabled; swapbylimit = _limited; swapThreshold = _threshold; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"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":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"EnableTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","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":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buySide","type":"uint256"},{"internalType":"uint256","name":"_sellSide","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"},{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"_limited","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapbylimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"trading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
610100604052600960c090815268476f6c647a696c6c6160b81b60e0526001906200002b908262000669565b5060408051808201909152600481526311dbdb1960e21b602082015260029062000056908262000669565b506003805460ff1916600890811790915561dead6080525f60a0526002600481905560055560646007556200008d90600a6200083e565b6200009d906301406f406200084e565b600e819055620000be90606490620000b790600262000464565b90620004f7565b600f55600e54620000d990606490620000b790600262000464565b601055600e54620000f490606490620000b790600562000464565b6011556012805463ffffffff1916630101010117905534801562000116575f80fd5b50620001223362000540565b600680546001600160a01b031916331790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a0155916004808201926020929091908290030181865afa15801562000186573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ac919062000868565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200021e919062000868565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000269573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200028f919062000868565b601380546001600160a01b0319166001600160a01b0392831617815560128054600160201b600160c01b0319166401000000008585168102919091178255305f818152600a60209081526040808320805460ff19908116600190811790925533808652838620805483168417905588548890048b1686528386208054831684179055808652600c8552838620805483168417905588548890048b168652838620805483168417905586865283862080548316841790556080518b16808752848720805484168517905560a0518c1680885285882080548516861790558b548d1688528588208054851686179055908752600d86528487208054841685179055865283862080548316841790558086528386208054831684179055868652838620805483168417905588548890048b168652838620805483168417905589548b168652600b855283862080549092169092179055938352600982528083209654881683529581528582205f19908190559454939093049095168552838520929092556019600455601e600555600e548285526008825283852081905592519283529092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620008fd565b5f825f036200047557505f620004f1565b5f6200048283856200084e565b90508262000491858362000890565b14620004ee5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f620004ee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200058f60201b60201c565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f8183620005b25760405162461bcd60e51b8152600401620004e59190620008b0565b505f620005c0848662000890565b95945050505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620005f257607f821691505b6020821081036200061157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000664575f81815260208120601f850160051c810160208610156200063f5750805b601f850160051c820191505b8181101562000660578281556001016200064b565b5050505b505050565b81516001600160401b03811115620006855762000685620005c9565b6200069d81620006968454620005dd565b8462000617565b602080601f831160018114620006d3575f8415620006bb5750858301515b5f19600386901b1c1916600185901b17855562000660565b5f85815260208120601f198616915b828110156200070357888601518255948401946001909101908401620006e2565b50858210156200072157878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200078557815f190482111562000769576200076962000731565b808516156200077757918102915b93841c93908002906200074a565b509250929050565b5f826200079d57506001620004f1565b81620007ab57505f620004f1565b8160018114620007c45760028114620007cf57620007ef565b6001915050620004f1565b60ff841115620007e357620007e362000731565b50506001821b620004f1565b5060208310610133831016604e8410600b841016171562000814575081810a620004f1565b62000820838362000745565b805f190482111562000836576200083662000731565b029392505050565b5f620004ee60ff8416836200078d565b8082028115828204841417620004f157620004f162000731565b5f6020828403121562000879575f80fd5b81516001600160a01b0381168114620004ee575f80fd5b5f82620008ab57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020808352835180828501525f5b81811015620008dd57858101830151858201604001528201620008bf565b505f604082860101526040601f19601f8301168501019250505092915050565b60805160a0516130036200092d5f395f81816103da0152610b8201525f818161046f0152610bbc01526130035ff3fe60806040526004361061031c575f3560e01c8063807c2d9c1161019c578063c867d60b116100e7578063e9fd339411610092578063f242ab411161006d578063f242ab411461096d578063f2fde38b14610999578063f872858a146109b8578063fb0ecfa4146109d8575f80fd5b8063e9fd3394146108ff578063ec44acf21461091d578063ee828db31461094e575f80fd5b8063dd62ed3e116100c2578063dd62ed3e1461087b578063df8408fe146108cc578063e6b2603b146108eb575f80fd5b8063c867d60b14610819578063cc1776d314610847578063cea9d26f1461085c575f80fd5b8063a9059cbb11610147578063bf56b37111610122578063bf56b371146107b9578063c04a5414146107ce578063c16dd4a4146107fa575f80fd5b8063a9059cbb1461075c578063ae85ade61461077b578063b94b0aef1461079a575f80fd5b80638da5cb5b116101775780638da5cb5b1461070057806395d89b4114610729578063a457c2d71461073d575f80fd5b8063807c2d9c146106a95780638a8c523c146106be5780638b42507f146106d2575f80fd5b80634974d88f116102675780636ddd171311610212578063728d41c9116101ed578063728d41c91461064257806372ac248614610661578063751039fc146106805780637d1db4a514610694575f80fd5b80636ddd1713146105d457806370a08231146105ed578063715018a61461062e575f80fd5b80635c85974f116102425780635c85974f146105775780635e42358c14610596578063651a8987146105b5575f80fd5b80634974d88f146105135780634f7041a5146105345780635342acb414610549575f80fd5b806323b872dd116102c7578063313ce567116102a2578063313ce567146104a557806339509351146104c65780633ecad271146104e5575f80fd5b806323b872dd1461043f57806327c8f8351461045e5780632b112e4914610491575f80fd5b80630930907b116102f75780630930907b146103c9578063095ea7b3146103fc57806318160ddd1461042b575f80fd5b80630445b6671461032757806306fdde031461034f5780630758d92414610370575f80fd5b3661032357005b5f80fd5b348015610332575f80fd5b5061033c60115481565b6040519081526020015b60405180910390f35b34801561035a575f80fd5b506103636109f7565b6040516103469190612ba0565b34801561037b575f80fd5b506012546103a490640100000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610346565b3480156103d4575f80fd5b506103a47f000000000000000000000000000000000000000000000000000000000000000081565b348015610407575f80fd5b5061041b610416366004612c11565b610a87565b6040519015158152602001610346565b348015610436575f80fd5b50600e5461033c565b34801561044a575f80fd5b5061041b610459366004612c3b565b610a9d565b348015610469575f80fd5b506103a47f000000000000000000000000000000000000000000000000000000000000000081565b34801561049c575f80fd5b5061033c610b6b565b3480156104b0575f80fd5b5060035460405160ff9091168152602001610346565b3480156104d1575f80fd5b5061041b6104e0366004612c11565b610c16565b3480156104f0575f80fd5b5061041b6104ff366004612c79565b600b6020525f908152604090205460ff1681565b34801561051e575f80fd5b5061053261052d366004612ca8565b610c58565b005b34801561053f575f80fd5b5061033c60045481565b348015610554575f80fd5b5061041b610563366004612c79565b600a6020525f908152604090205460ff1681565b348015610582575f80fd5b50610532610591366004612cc1565b610d16565b3480156105a1575f80fd5b5060125461041b9062010000900460ff1681565b3480156105c0575f80fd5b506105326105cf366004612cd8565b610d9b565b3480156105df575f80fd5b5060125461041b9060ff1681565b3480156105f8575f80fd5b5061033c610607366004612c79565b73ffffffffffffffffffffffffffffffffffffffff165f9081526008602052604090205490565b348015610639575f80fd5b50610532610e70565b34801561064d575f80fd5b5061053261065c366004612cc1565b610efb565b34801561066c575f80fd5b5061053261067b366004612c79565b610f80565b34801561068b575f80fd5b50610532611047565b34801561069f575f80fd5b5061033c600f5481565b3480156106b4575f80fd5b5061033c60105481565b3480156106c9575f80fd5b506105326110f2565b3480156106dd575f80fd5b5061041b6106ec366004612c79565b600d6020525f908152604090205460ff1681565b34801561070b575f80fd5b505f5473ffffffffffffffffffffffffffffffffffffffff166103a4565b348015610734575f80fd5b5061036361123c565b348015610748575f80fd5b5061041b610757366004612c11565b61124b565b348015610767575f80fd5b5061041b610776366004612c11565b6112a5565b348015610786575f80fd5b50610532610795366004612cd8565b6112b1565b3480156107a5575f80fd5b506105326107b4366004612d0b565b611386565b3480156107c4575f80fd5b5061033c60145481565b3480156107d9575f80fd5b506006546103a49073ffffffffffffffffffffffffffffffffffffffff1681565b348015610805575f80fd5b50610532610814366004612cd8565b611468565b348015610824575f80fd5b5061041b610833366004612c79565b600c6020525f908152604090205460ff1681565b348015610852575f80fd5b5061033c60055481565b348015610867575f80fd5b50610532610876366004612c3b565b611592565b348015610886575f80fd5b5061033c610895366004612d44565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260096020908152604080832093909416825291909152205490565b3480156108d7575f80fd5b506105326108e6366004612cd8565b611773565b3480156108f6575f80fd5b50610532611848565b34801561090a575f80fd5b5060125461041b90610100900460ff1681565b348015610928575f80fd5b5060135461041b9074010000000000000000000000000000000000000000900460ff1681565b348015610959575f80fd5b50610532610968366004612ca8565b61197b565b348015610978575f80fd5b506013546103a49073ffffffffffffffffffffffffffffffffffffffff1681565b3480156109a4575f80fd5b506105326109b3366004612c79565b611a33565b3480156109c3575f80fd5b5060125461041b906301000000900460ff1681565b3480156109e3575f80fd5b506105326109f2366004612d7b565b611b5f565b606060018054610a0690612d9b565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3290612d9b565b8015610a7d5780601f10610a5457610100808354040283529160200191610a7d565b820191905f5260205f20905b815481529060010190602001808311610a6057829003601f168201915b5050505050905090565b5f610a93338484611bea565b5060015b92915050565b5f610aa9848484611d9c565b50610b608433610b5b856040518060400160405280601881526020017f45524332303a204578636565647320616c6c6f77616e6365000000000000000081525060095f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b2e3390565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205491906122ce565b611bea565b5060015b9392505050565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165f90815260086020526040812054610c1190610c0b610c027f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff165f9081526008602052604090205490565b600e5490612320565b90612320565b905090565b335f81815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091610a93918590610b5b9086612361565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610cdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b601280549115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610d96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd4565b600f55565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610e1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd4565b73ffffffffffffffffffffffffffffffffffffffff919091165f908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610ef0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd4565b610ef95f6123d9565b565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610f7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd4565b601055565b5f5473ffffffffffffffffffffffffffffffffffffffff163314611000576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd4565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60065473ffffffffffffffffffffffffffffffffffffffff1633146110c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f496e76616c69642043616c6c65720000000000000000000000000000000000006044820152606401610cd4565b601280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff169055565b5f5473ffffffffffffffffffffffffffffffffffffffff163314611172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd4565b60135474010000000000000000000000000000000000000000900460ff16156111f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f547261646520456e61626c6564210000000000000000000000000000000000006044820152606401610cd4565b601380547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905542601455565b606060028054610a0690612d9b565b5f610a933384610b5b85604051806060016040528060258152602001612fa960259139335f90815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d16845290915290205491906122ce565b5f610b60338484611d9c565b5f5473ffffffffffffffffffffffffffffffffffffffff163314611331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd4565b73ffffffffffffffffffffffffffffffffffffffff919091165f908152600d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60065473ffffffffffffffffffffffffffffffffffffffff163314611407576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f496e76616c69642043616c6c65720000000000000000000000000000000000006044820152606401610cd4565b601280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169215157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921761010091151591909102179055601155565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146114e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd4565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600b6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821580159190911790915561158e5773ffffffffffffffffffffffffffffffffffffffff82165f908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215151790555b5050565b60065473ffffffffffffffffffffffffffffffffffffffff163314611613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f496e76616c69642043616c6c65720000000000000000000000000000000000006044820152606401610cd4565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390525f9190851690606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052516116c49190612dec565b5f604051808303815f865af19150503d805f81146116fd576040519150601f19603f3d011682016040523d82523d5f602084013e611702565b606091505b505090508061176d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f546f6b656e207061796d656e74206661696c65640000000000000000000000006044820152606401610cd4565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146117f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd4565b73ffffffffffffffffffffffffffffffffffffffff919091165f908152600a6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60065473ffffffffffffffffffffffffffffffffffffffff1633146118c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f496e76616c69642043616c6c65720000000000000000000000000000000000006044820152606401610cd4565b6040515f90339047908381818185875af1925050503d805f8114611908576040519150601f19603f3d011682016040523d82523d5f602084013e61190d565b606091505b5050905080611978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5472616e73616374696f6e204661696c656421210000000000000000000000006044820152606401610cd4565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146119fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd4565b6012805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b5f5473ffffffffffffffffffffffffffffffffffffffff163314611ab3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd4565b73ffffffffffffffffffffffffffffffffffffffff8116611b56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610cd4565b611978816123d9565b5f5473ffffffffffffffffffffffffffffffffffffffff163314611bdf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd4565b600491909155600555565b73ffffffffffffffffffffffffffffffffffffffff8316611c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610cd4565b73ffffffffffffffffffffffffffffffffffffffff8216611d2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610cd4565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff8416611dbc575f80fd5b73ffffffffffffffffffffffffffffffffffffffff8316611ddb575f80fd5b5f8211611de6575f80fd5b60155460ff1615611e0357611dfc84848461244d565b9050610b64565b60135474010000000000000000000000000000000000000000900460ff16611ee25773ffffffffffffffffffffffffffffffffffffffff84165f908152600a602052604090205460ff1680611e7c575073ffffffffffffffffffffffffffffffffffffffff83165f908152600a602052604090205460ff165b611ee2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5472616465206e6f7420456e61626c65205965742100000000000000000000006044820152606401610cd4565b305f9081526008602052604090205460115481108015908190611f08575060155460ff16155b8015611f39575073ffffffffffffffffffffffffffffffffffffffff86165f908152600b602052604090205460ff16155b8015611f47575060125460ff165b8015611f78575073ffffffffffffffffffffffffffffffffffffffff86165f908152600a602052604090205460ff16155b8015611fa9575073ffffffffffffffffffffffffffffffffffffffff85165f908152600a602052604090205460ff16155b15611fb757611fb782612560565b73ffffffffffffffffffffffffffffffffffffffff86165f908152600d602052604090205460ff16158015612011575073ffffffffffffffffffffffffffffffffffffffff85165f908152600d602052604090205460ff16155b8015612025575060125462010000900460ff165b1561209657600f54841115612096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f45786365656473206d61785478416d6f756e74000000000000000000000000006044820152606401610cd4565b604080518082018252601481527f496e73756666696369656e742042616c616e636500000000000000000000000060208083019190915273ffffffffffffffffffffffffffffffffffffffff89165f908152600890915291909120546120fd9186906122ce565b73ffffffffffffffffffffffffffffffffffffffff87165f9081526008602052604081209190915561212f8787612630565b6121435761213e8787876126fe565b612145565b845b6012549091506301000000900460ff168015612186575073ffffffffffffffffffffffffffffffffffffffff86165f908152600c602052604090205460ff16155b1561222b576010546121c3826121bd8973ffffffffffffffffffffffffffffffffffffffff165f9081526008602052604090205490565b90612361565b111561222b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f457863656564732057616c6c65740000000000000000000000000000000000006044820152606401610cd4565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526008602052604090205461225a9082612361565b73ffffffffffffffffffffffffffffffffffffffff8088165f8181526008602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906122ba9085815260200190565b60405180910390a360019350505050610b64565b5f818484111561230b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd49190612ba0565b505f6123178486612e34565b95945050505050565b5f610b6483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122ce565b5f8061236d8385612e47565b905083811015610b64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610cd4565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080518082018252601481527f496e73756666696369656e742042616c616e636500000000000000000000000060208083019190915273ffffffffffffffffffffffffffffffffffffffff86165f9081526008909152918220546124b39184906122ce565b73ffffffffffffffffffffffffffffffffffffffff8086165f9081526008602052604080822093909355908516815220546124ee9083612361565b73ffffffffffffffffffffffffffffffffffffffff8085165f8181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061254e9086815260200190565b60405180910390a35060019392505050565b601580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055601254610100900460ff16156125a057506011545b476125aa8261282f565b5f6125b54783612320565b905080156126035760065460405173ffffffffffffffffffffffffffffffffffffffff9091169082156108fc029083905f818181858888f19350505050158015612601573d5f803e3d5ffd5b505b5050601580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905550565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600a602052604081205460ff1680612687575073ffffffffffffffffffffffffffffffffffffffff82165f908152600a602052604090205460ff165b1561269457506001610a97565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600b602052604090205460ff16806126eb575073ffffffffffffffffffffffffffffffffffffffff82165f908152600b602052604090205460ff165b156126f757505f610a97565b505f610a97565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600b6020526040812054819060ff16156127555761274e60075461274860045486612a4890919063ffffffff16565b90612afc565b90506127a0565b73ffffffffffffffffffffffffffffffffffffffff84165f908152600b602052604090205460ff16156127a05761279d60075461274860055486612a4890919063ffffffff16565b90505b801561282557305f908152600860205260409020546127bf9082612361565b305f818152600860205260409081902092909255905173ffffffffffffffffffffffffffffffffffffffff8716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061281c9085815260200190565b60405180910390a35b6123178382612320565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061286257612862612e5a565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612907573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061292b9190612e87565b8160018151811061293e5761293e612e5a565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201015260125461297991309164010000000090041684611bea565b6012546040517f791ac94700000000000000000000000000000000000000000000000000000000815264010000000090910473ffffffffffffffffffffffffffffffffffffffff169063791ac947906129de9085905f90869030904290600401612ef1565b5f604051808303815f87803b1580156129f5575f80fd5b505af1158015612a07573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612a3c929190612f39565b60405180910390a15050565b5f825f03612a5757505f610a97565b5f612a628385612f59565b905082612a6f8583612f70565b14610b64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610cd4565b5f610b6483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f8183612b72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd49190612ba0565b505f6123178486612f70565b5f5b83811015612b98578181015183820152602001612b80565b50505f910152565b602081525f8251806020840152612bbe816040850160208701612b7e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff81168114611978575f80fd5b5f8060408385031215612c22575f80fd5b8235612c2d81612bf0565b946020939093013593505050565b5f805f60608486031215612c4d575f80fd5b8335612c5881612bf0565b92506020840135612c6881612bf0565b929592945050506040919091013590565b5f60208284031215612c89575f80fd5b8135610b6481612bf0565b80358015158114612ca3575f80fd5b919050565b5f60208284031215612cb8575f80fd5b610b6482612c94565b5f60208284031215612cd1575f80fd5b5035919050565b5f8060408385031215612ce9575f80fd5b8235612cf481612bf0565b9150612d0260208401612c94565b90509250929050565b5f805f60608486031215612d1d575f80fd5b83359250612d2d60208501612c94565b9150612d3b60408501612c94565b90509250925092565b5f8060408385031215612d55575f80fd5b8235612d6081612bf0565b91506020830135612d7081612bf0565b809150509250929050565b5f8060408385031215612d8c575f80fd5b50508035926020909101359150565b600181811c90821680612daf57607f821691505b602082108103612de6577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f8251612dfd818460208701612b7e565b9190910192915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115610a9757610a97612e07565b80820180821115610a9757610a97612e07565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612e97575f80fd5b8151610b6481612bf0565b5f8151808452602080850194508084015f5b83811015612ee657815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101612eb4565b509495945050505050565b85815284602082015260a060408201525f612f0f60a0830186612ea2565b73ffffffffffffffffffffffffffffffffffffffff94909416606083015250608001529392505050565b828152604060208201525f612f516040830184612ea2565b949350505050565b8082028115828204841417610a9757610a97612e07565b5f82612fa3577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f4f705d6e7490822a1fc8d96c023715cb258d4f3d6214987c79304f540c9e04264736f6c63430008150033
Deployed Bytecode
0x60806040526004361061031c575f3560e01c8063807c2d9c1161019c578063c867d60b116100e7578063e9fd339411610092578063f242ab411161006d578063f242ab411461096d578063f2fde38b14610999578063f872858a146109b8578063fb0ecfa4146109d8575f80fd5b8063e9fd3394146108ff578063ec44acf21461091d578063ee828db31461094e575f80fd5b8063dd62ed3e116100c2578063dd62ed3e1461087b578063df8408fe146108cc578063e6b2603b146108eb575f80fd5b8063c867d60b14610819578063cc1776d314610847578063cea9d26f1461085c575f80fd5b8063a9059cbb11610147578063bf56b37111610122578063bf56b371146107b9578063c04a5414146107ce578063c16dd4a4146107fa575f80fd5b8063a9059cbb1461075c578063ae85ade61461077b578063b94b0aef1461079a575f80fd5b80638da5cb5b116101775780638da5cb5b1461070057806395d89b4114610729578063a457c2d71461073d575f80fd5b8063807c2d9c146106a95780638a8c523c146106be5780638b42507f146106d2575f80fd5b80634974d88f116102675780636ddd171311610212578063728d41c9116101ed578063728d41c91461064257806372ac248614610661578063751039fc146106805780637d1db4a514610694575f80fd5b80636ddd1713146105d457806370a08231146105ed578063715018a61461062e575f80fd5b80635c85974f116102425780635c85974f146105775780635e42358c14610596578063651a8987146105b5575f80fd5b80634974d88f146105135780634f7041a5146105345780635342acb414610549575f80fd5b806323b872dd116102c7578063313ce567116102a2578063313ce567146104a557806339509351146104c65780633ecad271146104e5575f80fd5b806323b872dd1461043f57806327c8f8351461045e5780632b112e4914610491575f80fd5b80630930907b116102f75780630930907b146103c9578063095ea7b3146103fc57806318160ddd1461042b575f80fd5b80630445b6671461032757806306fdde031461034f5780630758d92414610370575f80fd5b3661032357005b5f80fd5b348015610332575f80fd5b5061033c60115481565b6040519081526020015b60405180910390f35b34801561035a575f80fd5b506103636109f7565b6040516103469190612ba0565b34801561037b575f80fd5b506012546103a490640100000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610346565b3480156103d4575f80fd5b506103a47f000000000000000000000000000000000000000000000000000000000000000081565b348015610407575f80fd5b5061041b610416366004612c11565b610a87565b6040519015158152602001610346565b348015610436575f80fd5b50600e5461033c565b34801561044a575f80fd5b5061041b610459366004612c3b565b610a9d565b348015610469575f80fd5b506103a47f000000000000000000000000000000000000000000000000000000000000dead81565b34801561049c575f80fd5b5061033c610b6b565b3480156104b0575f80fd5b5060035460405160ff9091168152602001610346565b3480156104d1575f80fd5b5061041b6104e0366004612c11565b610c16565b3480156104f0575f80fd5b5061041b6104ff366004612c79565b600b6020525f908152604090205460ff1681565b34801561051e575f80fd5b5061053261052d366004612ca8565b610c58565b005b34801561053f575f80fd5b5061033c60045481565b348015610554575f80fd5b5061041b610563366004612c79565b600a6020525f908152604090205460ff1681565b348015610582575f80fd5b50610532610591366004612cc1565b610d16565b3480156105a1575f80fd5b5060125461041b9062010000900460ff1681565b3480156105c0575f80fd5b506105326105cf366004612cd8565b610d9b565b3480156105df575f80fd5b5060125461041b9060ff1681565b3480156105f8575f80fd5b5061033c610607366004612c79565b73ffffffffffffffffffffffffffffffffffffffff165f9081526008602052604090205490565b348015610639575f80fd5b50610532610e70565b34801561064d575f80fd5b5061053261065c366004612cc1565b610efb565b34801561066c575f80fd5b5061053261067b366004612c79565b610f80565b34801561068b575f80fd5b50610532611047565b34801561069f575f80fd5b5061033c600f5481565b3480156106b4575f80fd5b5061033c60105481565b3480156106c9575f80fd5b506105326110f2565b3480156106dd575f80fd5b5061041b6106ec366004612c79565b600d6020525f908152604090205460ff1681565b34801561070b575f80fd5b505f5473ffffffffffffffffffffffffffffffffffffffff166103a4565b348015610734575f80fd5b5061036361123c565b348015610748575f80fd5b5061041b610757366004612c11565b61124b565b348015610767575f80fd5b5061041b610776366004612c11565b6112a5565b348015610786575f80fd5b50610532610795366004612cd8565b6112b1565b3480156107a5575f80fd5b506105326107b4366004612d0b565b611386565b3480156107c4575f80fd5b5061033c60145481565b3480156107d9575f80fd5b506006546103a49073ffffffffffffffffffffffffffffffffffffffff1681565b348015610805575f80fd5b50610532610814366004612cd8565b611468565b348015610824575f80fd5b5061041b610833366004612c79565b600c6020525f908152604090205460ff1681565b348015610852575f80fd5b5061033c60055481565b348015610867575f80fd5b50610532610876366004612c3b565b611592565b348015610886575f80fd5b5061033c610895366004612d44565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260096020908152604080832093909416825291909152205490565b3480156108d7575f80fd5b506105326108e6366004612cd8565b611773565b3480156108f6575f80fd5b50610532611848565b34801561090a575f80fd5b5060125461041b90610100900460ff1681565b348015610928575f80fd5b5060135461041b9074010000000000000000000000000000000000000000900460ff1681565b348015610959575f80fd5b50610532610968366004612ca8565b61197b565b348015610978575f80fd5b506013546103a49073ffffffffffffffffffffffffffffffffffffffff1681565b3480156109a4575f80fd5b506105326109b3366004612c79565b611a33565b3480156109c3575f80fd5b5060125461041b906301000000900460ff1681565b3480156109e3575f80fd5b506105326109f2366004612d7b565b611b5f565b606060018054610a0690612d9b565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3290612d9b565b8015610a7d5780601f10610a5457610100808354040283529160200191610a7d565b820191905f5260205f20905b815481529060010190602001808311610a6057829003601f168201915b5050505050905090565b5f610a93338484611bea565b5060015b92915050565b5f610aa9848484611d9c565b50610b608433610b5b856040518060400160405280601881526020017f45524332303a204578636565647320616c6c6f77616e6365000000000000000081525060095f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b2e3390565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205491906122ce565b611bea565b5060015b9392505050565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165f90815260086020526040812054610c1190610c0b610c027f000000000000000000000000000000000000000000000000000000000000dead73ffffffffffffffffffffffffffffffffffffffff165f9081526008602052604090205490565b600e5490612320565b90612320565b905090565b335f81815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091610a93918590610b5b9086612361565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610cdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b601280549115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610d96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd4565b600f55565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610e1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd4565b73ffffffffffffffffffffffffffffffffffffffff919091165f908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610ef0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd4565b610ef95f6123d9565b565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610f7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd4565b601055565b5f5473ffffffffffffffffffffffffffffffffffffffff163314611000576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd4565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60065473ffffffffffffffffffffffffffffffffffffffff1633146110c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f496e76616c69642043616c6c65720000000000000000000000000000000000006044820152606401610cd4565b601280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff169055565b5f5473ffffffffffffffffffffffffffffffffffffffff163314611172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd4565b60135474010000000000000000000000000000000000000000900460ff16156111f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f547261646520456e61626c6564210000000000000000000000000000000000006044820152606401610cd4565b601380547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905542601455565b606060028054610a0690612d9b565b5f610a933384610b5b85604051806060016040528060258152602001612fa960259139335f90815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d16845290915290205491906122ce565b5f610b60338484611d9c565b5f5473ffffffffffffffffffffffffffffffffffffffff163314611331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd4565b73ffffffffffffffffffffffffffffffffffffffff919091165f908152600d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60065473ffffffffffffffffffffffffffffffffffffffff163314611407576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f496e76616c69642043616c6c65720000000000000000000000000000000000006044820152606401610cd4565b601280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169215157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921761010091151591909102179055601155565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146114e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd4565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600b6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821580159190911790915561158e5773ffffffffffffffffffffffffffffffffffffffff82165f908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215151790555b5050565b60065473ffffffffffffffffffffffffffffffffffffffff163314611613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f496e76616c69642043616c6c65720000000000000000000000000000000000006044820152606401610cd4565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390525f9190851690606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052516116c49190612dec565b5f604051808303815f865af19150503d805f81146116fd576040519150601f19603f3d011682016040523d82523d5f602084013e611702565b606091505b505090508061176d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f546f6b656e207061796d656e74206661696c65640000000000000000000000006044820152606401610cd4565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146117f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd4565b73ffffffffffffffffffffffffffffffffffffffff919091165f908152600a6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60065473ffffffffffffffffffffffffffffffffffffffff1633146118c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f496e76616c69642043616c6c65720000000000000000000000000000000000006044820152606401610cd4565b6040515f90339047908381818185875af1925050503d805f8114611908576040519150601f19603f3d011682016040523d82523d5f602084013e61190d565b606091505b5050905080611978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5472616e73616374696f6e204661696c656421210000000000000000000000006044820152606401610cd4565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146119fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd4565b6012805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b5f5473ffffffffffffffffffffffffffffffffffffffff163314611ab3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd4565b73ffffffffffffffffffffffffffffffffffffffff8116611b56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610cd4565b611978816123d9565b5f5473ffffffffffffffffffffffffffffffffffffffff163314611bdf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd4565b600491909155600555565b73ffffffffffffffffffffffffffffffffffffffff8316611c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610cd4565b73ffffffffffffffffffffffffffffffffffffffff8216611d2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610cd4565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff8416611dbc575f80fd5b73ffffffffffffffffffffffffffffffffffffffff8316611ddb575f80fd5b5f8211611de6575f80fd5b60155460ff1615611e0357611dfc84848461244d565b9050610b64565b60135474010000000000000000000000000000000000000000900460ff16611ee25773ffffffffffffffffffffffffffffffffffffffff84165f908152600a602052604090205460ff1680611e7c575073ffffffffffffffffffffffffffffffffffffffff83165f908152600a602052604090205460ff165b611ee2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5472616465206e6f7420456e61626c65205965742100000000000000000000006044820152606401610cd4565b305f9081526008602052604090205460115481108015908190611f08575060155460ff16155b8015611f39575073ffffffffffffffffffffffffffffffffffffffff86165f908152600b602052604090205460ff16155b8015611f47575060125460ff165b8015611f78575073ffffffffffffffffffffffffffffffffffffffff86165f908152600a602052604090205460ff16155b8015611fa9575073ffffffffffffffffffffffffffffffffffffffff85165f908152600a602052604090205460ff16155b15611fb757611fb782612560565b73ffffffffffffffffffffffffffffffffffffffff86165f908152600d602052604090205460ff16158015612011575073ffffffffffffffffffffffffffffffffffffffff85165f908152600d602052604090205460ff16155b8015612025575060125462010000900460ff165b1561209657600f54841115612096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f45786365656473206d61785478416d6f756e74000000000000000000000000006044820152606401610cd4565b604080518082018252601481527f496e73756666696369656e742042616c616e636500000000000000000000000060208083019190915273ffffffffffffffffffffffffffffffffffffffff89165f908152600890915291909120546120fd9186906122ce565b73ffffffffffffffffffffffffffffffffffffffff87165f9081526008602052604081209190915561212f8787612630565b6121435761213e8787876126fe565b612145565b845b6012549091506301000000900460ff168015612186575073ffffffffffffffffffffffffffffffffffffffff86165f908152600c602052604090205460ff16155b1561222b576010546121c3826121bd8973ffffffffffffffffffffffffffffffffffffffff165f9081526008602052604090205490565b90612361565b111561222b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f457863656564732057616c6c65740000000000000000000000000000000000006044820152606401610cd4565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526008602052604090205461225a9082612361565b73ffffffffffffffffffffffffffffffffffffffff8088165f8181526008602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906122ba9085815260200190565b60405180910390a360019350505050610b64565b5f818484111561230b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd49190612ba0565b505f6123178486612e34565b95945050505050565b5f610b6483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122ce565b5f8061236d8385612e47565b905083811015610b64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610cd4565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080518082018252601481527f496e73756666696369656e742042616c616e636500000000000000000000000060208083019190915273ffffffffffffffffffffffffffffffffffffffff86165f9081526008909152918220546124b39184906122ce565b73ffffffffffffffffffffffffffffffffffffffff8086165f9081526008602052604080822093909355908516815220546124ee9083612361565b73ffffffffffffffffffffffffffffffffffffffff8085165f8181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061254e9086815260200190565b60405180910390a35060019392505050565b601580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055601254610100900460ff16156125a057506011545b476125aa8261282f565b5f6125b54783612320565b905080156126035760065460405173ffffffffffffffffffffffffffffffffffffffff9091169082156108fc029083905f818181858888f19350505050158015612601573d5f803e3d5ffd5b505b5050601580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905550565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600a602052604081205460ff1680612687575073ffffffffffffffffffffffffffffffffffffffff82165f908152600a602052604090205460ff165b1561269457506001610a97565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600b602052604090205460ff16806126eb575073ffffffffffffffffffffffffffffffffffffffff82165f908152600b602052604090205460ff165b156126f757505f610a97565b505f610a97565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600b6020526040812054819060ff16156127555761274e60075461274860045486612a4890919063ffffffff16565b90612afc565b90506127a0565b73ffffffffffffffffffffffffffffffffffffffff84165f908152600b602052604090205460ff16156127a05761279d60075461274860055486612a4890919063ffffffff16565b90505b801561282557305f908152600860205260409020546127bf9082612361565b305f818152600860205260409081902092909255905173ffffffffffffffffffffffffffffffffffffffff8716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061281c9085815260200190565b60405180910390a35b6123178382612320565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061286257612862612e5a565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612907573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061292b9190612e87565b8160018151811061293e5761293e612e5a565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201015260125461297991309164010000000090041684611bea565b6012546040517f791ac94700000000000000000000000000000000000000000000000000000000815264010000000090910473ffffffffffffffffffffffffffffffffffffffff169063791ac947906129de9085905f90869030904290600401612ef1565b5f604051808303815f87803b1580156129f5575f80fd5b505af1158015612a07573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612a3c929190612f39565b60405180910390a15050565b5f825f03612a5757505f610a97565b5f612a628385612f59565b905082612a6f8583612f70565b14610b64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610cd4565b5f610b6483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f8183612b72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd49190612ba0565b505f6123178486612f70565b5f5b83811015612b98578181015183820152602001612b80565b50505f910152565b602081525f8251806020840152612bbe816040850160208701612b7e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff81168114611978575f80fd5b5f8060408385031215612c22575f80fd5b8235612c2d81612bf0565b946020939093013593505050565b5f805f60608486031215612c4d575f80fd5b8335612c5881612bf0565b92506020840135612c6881612bf0565b929592945050506040919091013590565b5f60208284031215612c89575f80fd5b8135610b6481612bf0565b80358015158114612ca3575f80fd5b919050565b5f60208284031215612cb8575f80fd5b610b6482612c94565b5f60208284031215612cd1575f80fd5b5035919050565b5f8060408385031215612ce9575f80fd5b8235612cf481612bf0565b9150612d0260208401612c94565b90509250929050565b5f805f60608486031215612d1d575f80fd5b83359250612d2d60208501612c94565b9150612d3b60408501612c94565b90509250925092565b5f8060408385031215612d55575f80fd5b8235612d6081612bf0565b91506020830135612d7081612bf0565b809150509250929050565b5f8060408385031215612d8c575f80fd5b50508035926020909101359150565b600181811c90821680612daf57607f821691505b602082108103612de6577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f8251612dfd818460208701612b7e565b9190910192915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115610a9757610a97612e07565b80820180821115610a9757610a97612e07565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612e97575f80fd5b8151610b6481612bf0565b5f8151808452602080850194508084015f5b83811015612ee657815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101612eb4565b509495945050505050565b85815284602082015260a060408201525f612f0f60a0830186612ea2565b73ffffffffffffffffffffffffffffffffffffffff94909416606083015250608001529392505050565b828152604060208201525f612f516040830184612ea2565b949350505050565b8082028115828204841417610a9757610a97612e07565b5f82612fa3577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f4f705d6e7490822a1fc8d96c023715cb258d4f3d6214987c79304f540c9e04264736f6c63430008150033
Deployed Bytecode Sourcemap
4987:12204:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6083:59;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;6083:59:0;;;;;;;;8191:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;6308:31::-;;;;;;;;;;-1:-1:-1;6308:31:0;;;;;;;;;;;;;;1109:42:1;1097:55;;;1079:74;;1067:2;1052:18;6308:31:0;911:248:1;5282:81:0;;;;;;;;;;;;;;;9529:161;;;;;;;;;;-1:-1:-1;9529:161:0;;;;;:::i;:::-;;:::i;:::-;;;2039:14:1;;2032:22;2014:41;;2002:2;1987:18;9529:161:0;1874:187:1;8468:100:0;;;;;;;;;;-1:-1:-1;8548:12:0;;8468:100;;10303:297;;;;;;;;;;-1:-1:-1;10303:297:0;;;;;:::i;:::-;;:::i;5194:81::-;;;;;;;;;;;;;;;8862:156;;;;;;;;;;;;;:::i;8377:83::-;;;;;;;;;;-1:-1:-1;8443:9:0;;8377:83;;8443:9;;;;2669:36:1;;2657:2;2642:18;8377:83:0;2527:184:1;9026:218:0;;;;;;;;;;-1:-1:-1;9026:218:0;;;;;:::i;:::-;;:::i;5695:45::-;;;;;;;;;;-1:-1:-1;5695:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15885:105;;;;;;;;;;-1:-1:-1;15885:105:0;;;;;:::i;:::-;;:::i;:::-;;5372:22;;;;;;;;;;;;;;;;5638:50;;;;;;;;;;-1:-1:-1;5638:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16506:101;;;;;;;;;;-1:-1:-1;16506:101:0;;;;;:::i;:::-;;:::i;6225:32::-;;;;;;;;;;-1:-1:-1;6225:32:0;;;;;;;;;;;16128:128;;;;;;;;;;-1:-1:-1;16128:128:0;;;;;:::i;:::-;;:::i;6151:30::-;;;;;;;;;;-1:-1:-1;6151:30:0;;;;;;;;8576:123;;;;;;;;;;-1:-1:-1;8576:123:0;;;;;:::i;:::-;8668:18;;8642:7;8668:18;;;:9;:18;;;;;;;8576:123;1972:94;;;;;;;;;;;;;:::i;16392:106::-;;;;;;;;;;-1:-1:-1;16392:106:0;;;;;:::i;:::-;;:::i;16619:118::-;;;;;;;;;;-1:-1:-1;16619:118:0;;;;;:::i;:::-;;:::i;15652:119::-;;;;;;;;;;;;;:::i;5929:59::-;;;;;;;;;;;;;;;;6005:56;;;;;;;;;;;;;;;;14211:164;;;;;;;;;;;;;:::i;5806:48::-;;;;;;;;;;-1:-1:-1;5806:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;1663:87;;;;;;;;;;-1:-1:-1;1709:7:0;1736:6;;;1663:87;;8282;;;;;;;;;;;;;:::i;9252:269::-;;;;;;;;;;-1:-1:-1;9252:269:0;;;;;:::i;:::-;;:::i;10128:167::-;;;;;;;;;;-1:-1:-1;10128:167:0;;;;;:::i;:::-;;:::i;16264:120::-;;;;;;;;;;-1:-1:-1;16264:120:0;;;;;:::i;:::-;;:::i;16957:229::-;;;;;;;;;;-1:-1:-1;16957:229:0;;;;;:::i;:::-;;:::i;6404:25::-;;;;;;;;;;;;;;;;5433:32;;;;;;;;;;-1:-1:-1;5433:32:0;;;;;;;;16745:204;;;;;;;;;;-1:-1:-1;16745:204:0;;;;;:::i;:::-;;:::i;5747:52::-;;;;;;;;;;-1:-1:-1;5747:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5401:23;;;;;;;;;;;;;;;;15225:272;;;;;;;;;;-1:-1:-1;15225:272:0;;;;;:::i;:::-;;:::i;8707:143::-;;;;;;;;;;-1:-1:-1;8707:143:0;;;;;:::i;:::-;8815:18;;;;8788:7;8815:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8707:143;15998:122;;;;;;;;;;-1:-1:-1;15998:122:0;;;;;:::i;:::-;;:::i;15039:178::-;;;;;;;;;;;;;:::i;6188:30::-;;;;;;;;;;-1:-1:-1;6188:30:0;;;;;;;;;;;6377:19;;;;;;;;;;-1:-1:-1;6377:19:0;;;;;;;;;;;15779:98;;;;;;;;;;-1:-1:-1;15779:98:0;;;;;:::i;:::-;;:::i;6346:22::-;;;;;;;;;;-1:-1:-1;6346:22:0;;;;;;;;2074:229;;;;;;;;;;-1:-1:-1;2074:229:0;;;;;:::i;:::-;;:::i;6264:35::-;;;;;;;;;;-1:-1:-1;6264:35:0;;;;;;;;;;;15505:139;;;;;;;;;;-1:-1:-1;15505:139:0;;;;;:::i;:::-;;:::i;8191:83::-;8228:13;8261:5;8254:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8191:83;:::o;9529:161::-;9604:4;9621:39;310:10;9644:7;9653:6;9621:8;:39::i;:::-;-1:-1:-1;9678:4:0;9529:161;;;;;:::o;10303:297::-;10401:4;10418:36;10428:6;10436:9;10447:6;10418:9;:36::i;:::-;-1:-1:-1;10465:105:0;10474:6;310:10;10496:73;10534:6;10496:73;;;;;;;;;;;;;;;;;:11;:19;10508:6;10496:19;;;;;;;;;;;;;;;:33;10516:12;310:10;;230:98;10516:12;10496:33;;;;;;;;;;;;;-1:-1:-1;10496:33:0;;;:73;:37;:73::i;:::-;10465:8;:105::i;:::-;-1:-1:-1;10588:4:0;10303:297;;;;;;:::o;8862:156::-;8668:18;8997:11;8668:18;8915:7;8668:18;;;:9;:18;;;;;;8942:68;;:40;8959:22;8969:11;8668:18;;8642:7;8668:18;;;:9;:18;;;;;;;8576:123;8959:22;8942:12;;;:16;:40::i;:::-;:44;;:68::i;:::-;8935:75;;8862:156;:::o;9026:218::-;310:10;9114:4;9163:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;9114:4;;9131:83;;9154:7;;9163:50;;9202:10;9163:38;:50::i;15885:105::-;1709:7;1736:6;1884:23;1736:6;310:10;1884:23;1876:68;;;;;;;5434:2:1;1876:68:0;;;5416:21:1;;;5453:18;;;5446:30;5512:34;5492:18;;;5485:62;5564:18;;1876:68:0;;;;;;;;;15956:16:::1;:26:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;15885:105::o;16506:101::-;1709:7;1736:6;1884:23;1736:6;310:10;1884:23;1876:68;;;;;;;5434:2:1;1876:68:0;;;5416:21:1;;;5453:18;;;5446:30;5512:34;5492:18;;;5485:62;5564:18;;1876:68:0;5232:356:1;1876:68:0;16576:12:::1;:23:::0;16506:101::o;16128:128::-;1709:7;1736:6;1884:23;1736:6;310:10;1884:23;1876:68;;;;;;;5434:2:1;1876:68:0;;;5416:21:1;;;5453:18;;;5446:30;5512:34;5492:18;;;5485:62;5564:18;;1876:68:0;5232:356:1;1876:68:0;16213:25:::1;::::0;;;::::1;;::::0;;;:19:::1;:25;::::0;;;;:35;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;16128:128::o;1972:94::-;1709:7;1736:6;1884:23;1736:6;310:10;1884:23;1876:68;;;;;;;5434:2:1;1876:68:0;;;5416:21:1;;;5453:18;;;5446:30;5512:34;5492:18;;;5485:62;5564:18;;1876:68:0;5232:356:1;1876:68:0;2037:21:::1;2055:1;2037:9;:21::i;:::-;1972:94::o:0;16392:106::-;1709:7;1736:6;1884:23;1736:6;310:10;1884:23;1876:68;;;;;;;5434:2:1;1876:68:0;;;5416:21:1;;;5453:18;;;5446:30;5512:34;5492:18;;;5485:62;5564:18;;1876:68:0;5232:356:1;1876:68:0;16469:10:::1;:21:::0;16392:106::o;16619:118::-;1709:7;1736:6;1884:23;1736:6;310:10;1884:23;1876:68;;;;;;;5434:2:1;1876:68:0;;;5416:21:1;;;5453:18;;;5446:30;5512:34;5492:18;;;5485:62;5564:18;;1876:68:0;5232:356:1;1876:68:0;16699:17:::1;:30:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;16619:118::o;15652:119::-;6512:17;;;;6498:10;:31;6490:57;;;;;;;5795:2:1;6490:57:0;;;5777:21:1;5834:2;5814:18;;;5807:30;5873:16;5853:18;;;5846:44;5907:18;;6490:57:0;5593:338:1;6490:57:0;15706:13:::1;:21:::0;;15738:25;;;;15652:119::o;14211:164::-;1709:7;1736:6;1884:23;1736:6;310:10;1884:23;1876:68;;;;;;;5434:2:1;1876:68:0;;;5416:21:1;;;5453:18;;;5446:30;5512:34;5492:18;;;5485:62;5564:18;;1876:68:0;5232:356:1;1876:68:0;14275:7:::1;::::0;;;::::1;;;14274:8;14266:35;;;::::0;::::1;::::0;;6138:2:1;14266:35:0::1;::::0;::::1;6120:21:1::0;6177:2;6157:18;;;6150:30;6216:16;6196:18;;;6189:44;6250:18;;14266:35:0::1;5936:338:1::0;14266:35:0::1;14314:7;:14:::0;;;::::1;::::0;::::1;::::0;;14352:15:::1;14314:7;14339:28:::0;14211:164::o;8282:87::-;8321:13;8354:7;8347:14;;;;;:::i;9252:269::-;9345:4;9362:129;310:10;9385:7;9394:96;9433:15;9394:96;;;;;;;;;;;;;;;;;310:10;9394:25;;;;:11;:25;;;;;;;;;:34;;;;;;;;;;;;:38;:96::i;10128:167::-;10206:4;10223:42;310:10;10247:9;10258:6;10223:9;:42::i;16264:120::-;1709:7;1736:6;1884:23;1736:6;310:10;1884:23;1876:68;;;;;;;5434:2:1;1876:68:0;;;5416:21:1;;;5453:18;;;5446:30;5512:34;5492:18;;;5485:62;5564:18;;1876:68:0;5232:356:1;1876:68:0;16345:21:::1;::::0;;;::::1;;::::0;;;:15:::1;:21;::::0;;;;:31;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;16264:120::o;16957:229::-;6512:17;;;;6498:10;:31;6490:57;;;;;;;5795:2:1;6490:57:0;;;5777:21:1;5834:2;5814:18;;;5807:30;5873:16;5853:18;;;5846:44;5907:18;;6490:57:0;5593:338:1;6490:57:0;17086:11:::1;:22:::0;;17119;;17086;::::1;;17119::::0;;;;;;17086::::1;17119::::0;::::1;;::::0;;;::::1;;::::0;;17152:13:::1;:26:::0;16957:229::o;16745:204::-;1709:7;1736:6;1884:23;1736:6;310:10;1884:23;1876:68;;;;;;;5434:2:1;1876:68:0;;;5416:21:1;;;5453:18;;;5446:30;5512:34;5492:18;;;5485:62;5564:18;;1876:68:0;5232:356:1;1876:68:0;16827:19:::1;::::0;::::1;;::::0;;;:12:::1;:19;::::0;;;;:29;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;16867:75:::1;;16894:26;::::0;::::1;;::::0;;;:19:::1;:26;::::0;;;;:36;;;::::1;::::0;::::1;;;::::0;;16867:75:::1;16745:204:::0;;:::o;15225:272::-;6512:17;;;;6498:10;:31;6490:57;;;;;;;5795:2:1;6490:57:0;;;5777:21:1;5834:2;5814:18;;;5807:30;5873:16;5853:18;;;5846:44;5907:18;;6490:57:0;5593:338:1;6490:57:0;15364:73:::1;::::0;15343:20:::1;6471:55:1::0;;;15364:73:0::1;::::0;::::1;6453:74:1::0;6543:18;;;6536:34;;;15325:12:0::1;::::0;15343:20;;::::1;::::0;6426:18:1;;15364:73:0::1;::::0;;;;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;::::1;;;;::::0;;15343:95;::::1;::::0;15364:73;15343:95:::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15324:114;;;15457:7;15449:40;;;::::0;::::1;::::0;;7075:2:1;15449:40:0::1;::::0;::::1;7057:21:1::0;7114:2;7094:18;;;7087:30;7153:22;7133:18;;;7126:50;7193:18;;15449:40:0::1;6873:344:1::0;15449:40:0::1;15313:184;15225:272:::0;;;:::o;15998:122::-;1709:7;1736:6;1884:23;1736:6;310:10;1884:23;1876:68;;;;;;;5434:2:1;1876:68:0;;;5416:21:1;;;5453:18;;;5446:30;5512:34;5492:18;;;5485:62;5564:18;;1876:68:0;5232:356:1;1876:68:0;16079:23:::1;::::0;;;::::1;;::::0;;;:17:::1;:23;::::0;;;;:33;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;15998:122::o;15039:178::-;6512:17;;;;6498:10;:31;6490:57;;;;;;;5795:2:1;6490:57:0;;;5777:21:1;5834:2;5814:18;;;5807:30;5873:16;5853:18;;;5846:44;5907:18;;6490:57:0;5593:338:1;6490:57:0;15106:58:::1;::::0;15094:7:::1;::::0;15114:10:::1;::::0;15138:21:::1;::::0;15094:7;15106:58;15094:7;15106:58;15138:21;15114:10;15106:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15093:71;;;15183:2;15175:34;;;::::0;::::1;::::0;;7634:2:1;15175:34:0::1;::::0;::::1;7616:21:1::0;7673:2;7653:18;;;7646:30;7712:22;7692:18;;;7685:50;7752:18;;15175:34:0::1;7432:344:1::0;15175:34:0::1;15081:136;15039:178::o:0;15779:98::-;1709:7;1736:6;1884:23;1736:6;310:10;1884:23;1876:68;;;;;;;5434:2:1;1876:68:0;;;5416:21:1;;;5453:18;;;5446:30;5512:34;5492:18;;;5485:62;5564:18;;1876:68:0;5232:356:1;1876:68:0;15846:13:::1;:23:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;15779:98::o;2074:229::-;1709:7;1736:6;1884:23;1736:6;310:10;1884:23;1876:68;;;;;;;5434:2:1;1876:68:0;;;5416:21:1;;;5453:18;;;5446:30;5512:34;5492:18;;;5485:62;5564:18;;1876:68:0;5232:356:1;1876:68:0;2177:22:::1;::::0;::::1;2155:110;;;::::0;::::1;::::0;;7983:2:1;2155:110:0::1;::::0;::::1;7965:21:1::0;8022:2;8002:18;;;7995:30;8061:34;8041:18;;;8034:62;8132:8;8112:18;;;8105:36;8158:19;;2155:110:0::1;7781:402:1::0;2155:110:0::1;2276:19;2286:8;2276:9;:19::i;15505:139::-:0;1709:7;1736:6;1884:23;1736:6;310:10;1884:23;1876:68;;;;;;;5434:2:1;1876:68:0;;;5416:21:1;;;5453:18;;;5446:30;5512:34;5492:18;;;5485:62;5564:18;;1876:68:0;5232:356:1;1876:68:0;15589:6:::1;:17:::0;;;;15617:7:::1;:19:::0;15505:139::o;9698:337::-;9791:19;;;9783:68;;;;;;;8390:2:1;9783:68:0;;;8372:21:1;8429:2;8409:18;;;8402:30;8468:34;8448:18;;;8441:62;8539:6;8519:18;;;8512:34;8563:19;;9783:68:0;8188:400:1;9783:68:0;9870:21;;;9862:68;;;;;;;8795:2:1;9862:68:0;;;8777:21:1;8834:2;8814:18;;;8807:30;8873:34;8853:18;;;8846:62;8944:4;8924:18;;;8917:32;8966:19;;9862:68:0;8593:398:1;9862:68:0;9943:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9995:32;;160:25:1;;;9995:32:0;;133:18:1;9995:32:0;;;;;;;9698:337;;;:::o;10608:1760::-;10695:4;10722:20;;;10714:29;;;;;;10762:23;;;10754:32;;;;;;10814:1;10805:6;:10;10797:19;;;;;;10837:6;;;;10833:1526;;;10867:41;10882:6;10890:9;10901:6;10867:14;:41::i;:::-;10860:48;;;;10833:1526;10956:7;;;;;;;10952:138;;10992:25;;;;;;;:17;:25;;;;;;;;;:57;;-1:-1:-1;11021:28:0;;;;;;;:17;:28;;;;;;;;10992:57;10984:90;;;;;;;9198:2:1;10984:90:0;;;9180:21:1;9237:2;9217:18;;;9210:30;9276:23;9256:18;;;9249:51;9317:18;;10984:90:0;8996:345:1;10984:90:0;11155:4;11106:28;8668:18;;;:9;:18;;;;;;11231:13;;11207:37;;;;;;;11283:52;;-1:-1:-1;11329:6:0;;;;11328:7;11283:52;:95;;;;-1:-1:-1;11358:20:0;;;;;;;:12;:20;;;;;;;;11357:21;11283:95;:128;;;;-1:-1:-1;11400:11:0;;;;11283:128;:175;;;;-1:-1:-1;11433:25:0;;;;;;;:17;:25;;;;;;;;11432:26;11283:175;:225;;;;-1:-1:-1;11480:28:0;;;;;;;:17;:28;;;;;;;;11479:29;11283:225;11261:332;;;11547:30;11556:20;11547:8;:30::i;:::-;11613:23;;;;;;;:15;:23;;;;;;;;11612:24;:55;;;;-1:-1:-1;11641:26:0;;;;;;;:15;:26;;;;;;;;11640:27;11612:55;:72;;;;-1:-1:-1;11671:13:0;;;;;;;11612:72;11609:166;;;11723:12;;11713:6;:22;;11705:54;;;;;;;9548:2:1;11705:54:0;;;9530:21:1;9587:2;9567:18;;;9560:30;9626:21;9606:18;;;9599:49;9665:18;;11705:54:0;9346:343:1;11705:54:0;11824:53;;;;;;;;;;;;;;;;;;;;:17;;;-1:-1:-1;11824:17:0;;;:9;:17;;;;;;;;:53;;11846:6;;11824:21;:53::i;:::-;11804:17;;;;;;;:9;:17;;;;;:73;;;;11916:34;11814:6;11940:9;11916:16;:34::i;:::-;:80;;11962:34;11970:6;11978:9;11989:6;11962:7;:34::i;:::-;11916:80;;;11953:6;11916:80;12016:16;;11894:102;;-1:-1:-1;12016:16:0;;;;;:51;;;;-1:-1:-1;12037:30:0;;;;;;;:19;:30;;;;;;;;12036:31;12016:51;12013:168;;;12137:10;;12096:37;12121:11;12096:20;12106:9;8668:18;;8642:7;8668:18;;;:9;:18;;;;;;;8576:123;12096:20;:24;;:37::i;:::-;:51;;12088:77;;;;;;;9896:2:1;12088:77:0;;;9878:21:1;9935:2;9915:18;;;9908:30;9974:16;9954:18;;;9947:44;10008:18;;12088:77:0;9694:338:1;12088:77:0;12220:20;;;;;;;:9;:20;;;;;;:37;;12245:11;12220:24;:37::i;:::-;12197:20;;;;;;;;:9;:20;;;;;;;:60;;;;12279:40;;;;;;;;;;12307:11;160:25:1;;148:2;133:18;;14:177;12279:40:0;;;;;;;;12341:4;12334:11;;;;;;;2850:192;2936:7;2972:12;2964:6;;;;2956:29;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2996:9:0;3008:5;3012:1;3008;:5;:::i;:::-;2996:17;2850:192;-1:-1:-1;;;;;2850:192:0:o;2706:136::-;2764:7;2791:43;2795:1;2798;2791:43;;;;;;;;;;;;;;;;;:3;:43::i;2517:181::-;2575:7;;2607:5;2611:1;2607;:5;:::i;:::-;2595:17;;2636:1;2631;:6;;2623:46;;;;;;;10691:2:1;2623:46:0;;;10673:21:1;10730:2;10710:18;;;10703:30;10769:29;10749:18;;;10742:57;10816:18;;2623:46:0;10489:351:1;2311:173:0;2367:16;2386:6;;;2403:17;;;;;;;;;;2436:40;;2386:6;;;;;;;2436:40;;2367:16;2436:40;2356:128;2311:173;:::o;12376:330::-;12506:53;;;;;;;;;;;;;;;;;;;;:17;;;12469:4;12506:17;;;:9;:17;;;;;;;:53;;12528:6;;12506:21;:53::i;:::-;12486:17;;;;;;;;:9;:17;;;;;;:73;;;;12593:20;;;;;;;:32;;12618:6;12593:24;:32::i;:::-;12570:20;;;;;;;;:9;:20;;;;;;;:55;;;;12641:35;;;;;;;;;;12669:6;160:25:1;;148:2;133:18;;14:177;12641:35:0;;;;;;;;-1:-1:-1;12694:4:0;12376:330;;;;;:::o;13795:408::-;6606:6;:13;;;;6615:4;6606:13;;;13869:11:::1;::::0;6606:13;13869:11;::::1;6606:13:::0;13869:11:::1;13866:47;;;-1:-1:-1::0;13900:13:0::1;::::0;13866:47:::1;13951:21;13983:33;14000:15:::0;13983:16:::1;:33::i;:::-;14027:22;14052:41;:21;14078:14:::0;14052:25:::1;:41::i;:::-;14027:66:::0;-1:-1:-1;14109:18:0;;14106:87:::1;;14150:17;::::0;14142:51:::1;::::0;14150:17:::1;::::0;;::::1;::::0;14142:51;::::1;;;::::0;14178:14;;14150:17:::1;14142:51:::0;14150:17;14142:51;14178:14;14150:17;14142:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14106:87;-1:-1:-1::0;;6642:6:0;:14;;;;;;-1:-1:-1;13795:408:0:o;12718:369::-;12822:25;;;12802:4;12822:25;;;:17;:25;;;;;;;;;:57;;-1:-1:-1;12851:28:0;;;;;;;:17;:28;;;;;;;;12822:57;12819:261;;;-1:-1:-1;12903:4:0;12896:11;;12819:261;12938:20;;;;;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;12962:23:0;;;;;;;:12;:23;;;;;;;;12938:47;12934:146;;;-1:-1:-1;13009:5:0;13002:12;;12934:146;-1:-1:-1;13063:5:0;13056:12;;13095:690;13268:20;;;13181:7;13268:20;;;:12;:20;;;;;;13181:7;;13268:20;;13265:246;;;13322:38;13345:14;;13322:18;13333:6;;13322;:10;;:18;;;;:::i;:::-;:22;;:38::i;:::-;13310:50;;13265:246;;;13399:23;;;;;;;:12;:23;;;;;;;;13396:115;;;13456:39;13480:14;;13456:19;13467:7;;13456:6;:10;;:19;;;;:::i;:39::-;13444:51;;13396:115;13530:13;;13527:185;;13609:4;13591:24;;;;:9;:24;;;;;;:39;;13620:9;13591:28;:39::i;:::-;13582:4;13564:24;;;;:9;:24;;;;;;;:66;;;;13654:42;;13564:24;13654:42;;;;;;;13686:9;160:25:1;;148:2;133:18;;14:177;13654:42:0;;;;;;;;13527:185;13735:21;:6;13746:9;13735:10;:21::i;14383:648::-;14533:16;;;14547:1;14533:16;;;;;;;;14509:21;;14533:16;;;;;;;;;;-1:-1:-1;14533:16:0;14509:40;;14578:4;14560;14565:1;14560:7;;;;;;;;:::i;:::-;;;;;;:23;;;;;;;;;;;14604:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14594:4;14599:1;14594:7;;;;;;;;:::i;:::-;:26;;;;:7;;;;;;;;;:26;14665:9;;14633:56;;14650:4;;14665:9;;;;14677:11;14633:8;:56::i;:::-;14728:9;;:234;;;;;:9;;;;;;;:60;;:234;;14803:11;;14829:1;;14873:4;;14900;;14936:15;;14728:9;:234;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14988:35;15005:11;15018:4;14988:35;;;;;;;:::i;:::-;;;;;;;;14438:593;14383:648;:::o;3050:250::-;3108:7;3132:1;3137;3132:6;3128:47;;-1:-1:-1;3162:1:0;3155:8;;3128:47;3187:9;3199:5;3203:1;3199;:5;:::i;:::-;3187:17;-1:-1:-1;3232:1:0;3223:5;3227:1;3187:17;3223:5;:::i;:::-;:10;3215:56;;;;;;;13569:2:1;3215:56:0;;;13551:21:1;13608:2;13588:18;;;13581:30;13647:34;13627:18;;;13620:62;13718:3;13698:18;;;13691:31;13739:19;;3215:56:0;13367:397:1;3308:132:0;3366:7;3393:39;3397:1;3400;3393:39;;;;;;;;;;;;;;;;;3534:7;3569:12;3562:5;3554:28;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3593:9:0;3605:5;3609:1;3605;:5;:::i;196:250:1:-;281:1;291:113;305:6;302:1;299:13;291:113;;;381:11;;;375:18;362:11;;;355:39;327:2;320:10;291:113;;;-1:-1:-1;;438:1:1;420:16;;413:27;196:250::o;451:455::-;600:2;589:9;582:21;563:4;632:6;626:13;675:6;670:2;659:9;655:18;648:34;691:79;763:6;758:2;747:9;743:18;738:2;730:6;726:15;691:79;:::i;:::-;822:2;810:15;827:66;806:88;791:104;;;;897:2;787:113;;451:455;-1:-1:-1;;451:455:1:o;1395:154::-;1481:42;1474:5;1470:54;1463:5;1460:65;1450:93;;1539:1;1536;1529:12;1554:315;1622:6;1630;1683:2;1671:9;1662:7;1658:23;1654:32;1651:52;;;1699:1;1696;1689:12;1651:52;1738:9;1725:23;1757:31;1782:5;1757:31;:::i;:::-;1807:5;1859:2;1844:18;;;;1831:32;;-1:-1:-1;;;1554:315:1:o;2066:456::-;2143:6;2151;2159;2212:2;2200:9;2191:7;2187:23;2183:32;2180:52;;;2228:1;2225;2218:12;2180:52;2267:9;2254:23;2286:31;2311:5;2286:31;:::i;:::-;2336:5;-1:-1:-1;2393:2:1;2378:18;;2365:32;2406:33;2365:32;2406:33;:::i;:::-;2066:456;;2458:7;;-1:-1:-1;;;2512:2:1;2497:18;;;;2484:32;;2066:456::o;2716:247::-;2775:6;2828:2;2816:9;2807:7;2803:23;2799:32;2796:52;;;2844:1;2841;2834:12;2796:52;2883:9;2870:23;2902:31;2927:5;2902:31;:::i;2968:160::-;3033:20;;3089:13;;3082:21;3072:32;;3062:60;;3118:1;3115;3108:12;3062:60;2968:160;;;:::o;3133:180::-;3189:6;3242:2;3230:9;3221:7;3217:23;3213:32;3210:52;;;3258:1;3255;3248:12;3210:52;3281:26;3297:9;3281:26;:::i;3318:180::-;3377:6;3430:2;3418:9;3409:7;3405:23;3401:32;3398:52;;;3446:1;3443;3436:12;3398:52;-1:-1:-1;3469:23:1;;3318:180;-1:-1:-1;3318:180:1:o;3503:315::-;3568:6;3576;3629:2;3617:9;3608:7;3604:23;3600:32;3597:52;;;3645:1;3642;3635:12;3597:52;3684:9;3671:23;3703:31;3728:5;3703:31;:::i;:::-;3753:5;-1:-1:-1;3777:35:1;3808:2;3793:18;;3777:35;:::i;:::-;3767:45;;3503:315;;;;;:::o;3823:316::-;3894:6;3902;3910;3963:2;3951:9;3942:7;3938:23;3934:32;3931:52;;;3979:1;3976;3969:12;3931:52;4015:9;4002:23;3992:33;;4044:35;4075:2;4064:9;4060:18;4044:35;:::i;:::-;4034:45;;4098:35;4129:2;4118:9;4114:18;4098:35;:::i;:::-;4088:45;;3823:316;;;;;:::o;4144:388::-;4212:6;4220;4273:2;4261:9;4252:7;4248:23;4244:32;4241:52;;;4289:1;4286;4279:12;4241:52;4328:9;4315:23;4347:31;4372:5;4347:31;:::i;:::-;4397:5;-1:-1:-1;4454:2:1;4439:18;;4426:32;4467:33;4426:32;4467:33;:::i;:::-;4519:7;4509:17;;;4144:388;;;;;:::o;4537:248::-;4605:6;4613;4666:2;4654:9;4645:7;4641:23;4637:32;4634:52;;;4682:1;4679;4672:12;4634:52;-1:-1:-1;;4705:23:1;;;4775:2;4760:18;;;4747:32;;-1:-1:-1;4537:248:1:o;4790:437::-;4869:1;4865:12;;;;4912;;;4933:61;;4987:4;4979:6;4975:17;4965:27;;4933:61;5040:2;5032:6;5029:14;5009:18;5006:38;5003:218;;5077:77;5074:1;5067:88;5178:4;5175:1;5168:15;5206:4;5203:1;5196:15;5003:218;;4790:437;;;:::o;6581:287::-;6710:3;6748:6;6742:13;6764:66;6823:6;6818:3;6811:4;6803:6;6799:17;6764:66;:::i;:::-;6846:16;;;;;6581:287;-1:-1:-1;;6581:287:1:o;10037:184::-;10089:77;10086:1;10079:88;10186:4;10183:1;10176:15;10210:4;10207:1;10200:15;10226:128;10293:9;;;10314:11;;;10311:37;;;10328:18;;:::i;10359:125::-;10424:9;;;10445:10;;;10442:36;;;10458:18;;:::i;11034:184::-;11086:77;11083:1;11076:88;11183:4;11180:1;11173:15;11207:4;11204:1;11197:15;11223:251;11293:6;11346:2;11334:9;11325:7;11321:23;11317:32;11314:52;;;11362:1;11359;11352:12;11314:52;11394:9;11388:16;11413:31;11438:5;11413:31;:::i;11479:484::-;11532:3;11570:5;11564:12;11597:6;11592:3;11585:19;11623:4;11652:2;11647:3;11643:12;11636:19;;11689:2;11682:5;11678:14;11710:1;11720:218;11734:6;11731:1;11728:13;11720:218;;;11799:13;;11814:42;11795:62;11783:75;;11878:12;;;;11913:15;;;;11756:1;11749:9;11720:218;;;-1:-1:-1;11954:3:1;;11479:484;-1:-1:-1;;;;;11479:484:1:o;11968:605::-;12267:6;12256:9;12249:25;12310:6;12305:2;12294:9;12290:18;12283:34;12353:3;12348:2;12337:9;12333:18;12326:31;12230:4;12374:57;12426:3;12415:9;12411:19;12403:6;12374:57;:::i;:::-;12479:42;12467:55;;;;12462:2;12447:18;;12440:83;-1:-1:-1;12554:3:1;12539:19;12532:35;12366:65;11968:605;-1:-1:-1;;;11968:605:1:o;12578:332::-;12785:6;12774:9;12767:25;12828:2;12823;12812:9;12808:18;12801:30;12748:4;12848:56;12900:2;12889:9;12885:18;12877:6;12848:56;:::i;:::-;12840:64;12578:332;-1:-1:-1;;;;12578:332:1:o;12915:168::-;12988:9;;;13019;;13036:15;;;13030:22;;13016:37;13006:71;;13057:18;;:::i;13088:274::-;13128:1;13154;13144:189;;13189:77;13186:1;13179:88;13290:4;13287:1;13280:15;13318:4;13315:1;13308:15;13144:189;-1:-1:-1;13347:9:1;;13088:274::o
Swarm Source
ipfs://f4f705d6e7490822a1fc8d96c023715cb258d4f3d6214987c79304f540c9e042
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.