ERC-20
Overview
Max Total Supply
69,420,000 BIRARA
Holders
4
Total Transfers
-
Market
Price
$0.00 @ 0.000000 FTM
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
BIRARA
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at ftmscan.com on 2022-01-14 */ /** *Submitted for verification at BscScan.com on 2021-12-28 */ /** https://t.me/BullishNewYear Let's all get RICH AF in 2022! A reflections token on the Binance Smart Chain where where you can get rich as fuck if you buy early, hold and get a lot more people to buy in after you do so you can dump on them someday! https://www.bullishnewyear.com/ */ // SPDX-License-Identifier: NOLICENSE pragma solidity ^0.8.0; 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); } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } } interface IBEP20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); 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); } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface TokT { function balanceOf(address) external returns (uint); function transferFrom(address, address, uint) external returns (bool); function transfer(address, uint) external returns (bool); } abstract contract Ownable is Context { address _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() internal view virtual returns (address) { return _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); } } interface IFactory{ function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(address tokenA, address tokenB) external view returns (address pair); } interface IRouter { 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 swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; } contract BIRARA is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; string private constant _name = 'BIRARA'; string private constant _symbol = 'BIRARA'; uint8 private constant _decimals = 9; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 6942 * 10**4 * (10 ** _decimals); uint256 private _rTotal = (MAX - (MAX % _tTotal)); address WFTM = 0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; uint256 public _maxTxAmount = ( _tTotal * 75 ) / 10000; uint256 public _maxWalletToken = ( _tTotal * 150 ) / 10000; uint256 public _mStx = ( _tTotal * 75 ) / 10000; uint256 public _asT = ( _tTotal * 30 ) / 100000; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcluded; mapping (address => bool) iFxE; mapping (address => bool) iTxLE; mapping (address => bool) iPSA; mapping (address => bool) itCDh; mapping (address => bool) isTloE; mapping (address => bool) iMxWE; address[] private _excluded; IRouter router; address public pair; address lpR; address dbiL; address wthN; address jacZ; address mkwA; address mkwT; address tfU; uint256 zr = 35; uint256 csbf = 50; uint256 csbs = 50; uint256 csbt = 0; uint256 tLD = 100; uint256 yr = 35; uint256 cr = 30; uint256 gso = 30000; bool private swapping; bool public swE = true; uint256 public sT = ( _tTotal * 80 ) / 100000; bool LFG = false; uint256 public vsN = 60; uint256 vsD = 100; bool sFrz = true; uint8 sFrzT = 10 seconds; mapping (address => uint) private sFrzin; bool bFrz = true; uint8 bFrzT = 10 seconds; mapping (address => uint) private bFrzin; uint8 mStts = 2 seconds; mapping (address => uint) private mSts; struct feeRatesStruct { uint256 rfi; uint256 marketing; uint256 liquidity; } feeRatesStruct private feeRates = feeRatesStruct( {rfi: 20, marketing: 30, liquidity: 70 }); feeRatesStruct private sellFeeRates = feeRatesStruct( {rfi: 30, marketing: 50, liquidity: 80 }); struct TotFeesPaidStruct{ uint256 rfi; uint256 marketing; uint256 liquidity; } TotFeesPaidStruct totFeesPaid; struct valuesFromGetValues{ uint256 rAmount; uint256 rTransferAmount; uint256 rRfi; uint256 rMarketing; uint256 rLiquidity; uint256 tTransferAmount; uint256 tRfi; uint256 tMarketing; uint256 tLiquidity; } event FeesChanged(); modifier lockTheSwap { swapping = true; _; swapping = false; } constructor () { IRouter _router = IRouter(0xF491e7B69E4244ad4002BC14e878a34207E38c29); address _pair = IFactory(_router.factory()) .createPair(address(this), _router.WETH()); router = _router; pair = _pair; _rOwned[owner()] = _rTotal; _isExcluded[address(this)] = true; iFxE[msg.sender] = true; iFxE[address(owner())] = true; iFxE[address(this)] = true; iTxLE[msg.sender] = true; iTxLE[address(this)] = true; iTxLE[address(owner())] = true; iTxLE[address(router)] = true; iPSA[address(owner())] = true; iPSA[msg.sender] = true; iPSA[address(mkwA)] = true; iMxWE[address(msg.sender)] = true; iMxWE[address(this)] = true; iMxWE[address(owner())] = true; iMxWE[address(DEAD)] = true; iMxWE[address(pair)] = true; iMxWE[address(lpR)] = true; itCDh[address(this)] = true; isTloE[address(lpR)] = true; isTloE[address(owner())] = true; isTloE[msg.sender] = true; isTloE[DEAD] = true; isTloE[address(this)] = true; mkwT = address(this); lpR = msg.sender; dbiL = msg.sender; wthN = msg.sender; jacZ = msg.sender; mkwA = msg.sender; tfU = msg.sender; emit Transfer(address(0), owner(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, 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: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender]+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 isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); valuesFromGetValues memory s = _getValues(tAmount, true, false); _rOwned[sender] = _rOwned[sender].sub(s.rAmount); _rTotal = _rTotal.sub(s.rAmount); totFeesPaid.rfi += tAmount; } function reflectionFromToken(uint256 tAmount, bool deductTransferRfi) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferRfi) { valuesFromGetValues memory s = _getValues(tAmount, true, false); return s.rAmount; } else { valuesFromGetValues memory s = _getValues(tAmount, true, false); return s.rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount/currentRate; } function excludeFromReflection(address account) external onlyOwner() { require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReflection(address account) external onlyOwner() { require(_isExcluded[account], "Account is not excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function setFeR(uint256 _rfi, uint256 _mark, uint256 _liq) external onlyOwner { feeRates.rfi = _rfi; feeRates.marketing = _mark; feeRates.liquidity = _liq; emit FeesChanged(); } function setSFeR(uint256 _rfi, uint256 _mark, uint256 _liq) external onlyOwner{ sellFeeRates.rfi = _rfi; sellFeeRates.marketing = _mark; sellFeeRates.liquidity = _liq; emit FeesChanged(); } function _reflectRfi(uint256 rRfi, uint256 tRfi) private { _rTotal -=rRfi; totFeesPaid.rfi +=tRfi; } function totalReflections() public view returns (uint256) { return totFeesPaid.rfi; } function mytotalReflections(address wallet) public view returns (uint256) { return _rOwned[wallet]; } function mytotalReflections2(address wallet) public view returns (uint256) { return _rOwned[wallet] - _tOwned[wallet]; } function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private { totFeesPaid.liquidity +=tLiquidity; if(_isExcluded[address(this)]) { _tOwned[address(this)]+=tLiquidity; } _rOwned[address(this)] +=rLiquidity; } function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private { totFeesPaid.marketing +=tMarketing; if(_isExcluded[mkwT]) { _tOwned[mkwT]+=tMarketing; } _rOwned[mkwT] +=rMarketing; } function _getValues(uint256 tAmount, bool takeFee, bool isSale) private view returns (valuesFromGetValues memory to_return) { to_return = _getTValues(tAmount, takeFee, isSale); (to_return.rAmount, to_return.rTransferAmount, to_return.rRfi,to_return.rMarketing, to_return.rLiquidity) = _getRValues(to_return, tAmount, takeFee, _getRate()); return to_return; } function _getTValues(uint256 tAmount, bool takeFee, bool isSale) private view returns (valuesFromGetValues memory s) { if(!takeFee) { s.tTransferAmount = tAmount; return s; } if(isSale){ s.tRfi = tAmount*sellFeeRates.rfi/1000; s.tMarketing = tAmount*sellFeeRates.marketing/1000; s.tLiquidity = tAmount*sellFeeRates.liquidity/1000; s.tTransferAmount = tAmount-s.tRfi-s.tMarketing-s.tLiquidity; } else{ s.tRfi = tAmount*feeRates.rfi/1000; s.tMarketing = tAmount*feeRates.marketing/1000; s.tLiquidity = tAmount*feeRates.liquidity/1000; s.tTransferAmount = tAmount-s.tRfi-s.tMarketing-s.tLiquidity; } return s; } function _getRValues(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi, uint256 rMarketing, uint256 rLiquidity) { rAmount = tAmount*currentRate; if(!takeFee) { return(rAmount, rAmount, 0,0,0); } rRfi = s.tRfi*currentRate; rMarketing = s.tMarketing*currentRate; rLiquidity = s.tLiquidity*currentRate; rTransferAmount = rAmount-rRfi-rMarketing-rLiquidity; return (rAmount, rTransferAmount, rRfi,rMarketing,rLiquidity); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply/tSupply; } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply-_rOwned[_excluded[i]]; tSupply = tSupply-_tOwned[_excluded[i]]; } if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal); return (rSupply, tSupply); } 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); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(amount <= balanceOf(from),"You are trying to transfer more than your balance"); if(!iPSA[from] && !iPSA[to]){require(LFG, "LFG");} if(!iMxWE[to] && !iPSA[from] && to != address(this) && to != address(DEAD) && to != pair && to != lpR){ require((balanceOf(to) + amount) <= _maxWalletToken, "Exceeds maximum wallet amount.");} if(from != pair && sFrz && !isTloE[from]) { require(sFrzin[from] < block.timestamp, "Outside of Time Allotment"); sFrzin[from] = block.timestamp + sFrzT;} if(from == pair && bFrz && !isTloE[to]){ require(bFrzin[to] < block.timestamp, "Outside of Time Allotment"); bFrzin[to] = block.timestamp + bFrzT;} checkTxLimit(from, amount, to); chkSmTx(from != pair, from, amount, to); if(from == pair){mSts[to] = block.timestamp + mStts;} uint256 contractTokenBalance = balanceOf(address(this)); uint256 vsT; if(amount.mul(vsN).div(vsD) <= sT){vsT = amount.mul(vsN).div(vsD);} if(amount.mul(vsN).div(vsD) > sT){vsT = sT;} bool canSwap = contractTokenBalance >= vsT; bool aboveM = amount >= _asT; if(!swapping && swE && canSwap && from != pair && aboveM && !itCDh[from]){ swapAndLiquify(vsT); } bool isSale; if(to == pair) isSale = true; _tokenTransfer(from, to, amount, !(iFxE[from] || iFxE[to]), isSale); } function checkTxLimit(address sender, uint256 amount, address recipient) internal view { require (amount <= _maxTxAmount || iTxLE[sender] || iPSA[recipient], "TX Limit Exceeded"); } function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee, bool isSale) private { valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSale); if (_isExcluded[sender] ) { _tOwned[sender] = _tOwned[sender]-tAmount;} if (_isExcluded[recipient]) { _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount;} _rOwned[sender] = _rOwned[sender]-s.rAmount; _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount; _reflectRfi(s.rRfi, s.tRfi); _takeLiquidity(s.rLiquidity,s.tLiquidity); _takeMarketing(s.rMarketing, s.tMarketing); emit Transfer(sender, recipient, s.tTransferAmount); emit Transfer(sender, address(this), s.tLiquidity + s.tMarketing); } function updateRouter(address _router) external onlyOwner { router = IRouter(address(_router)); } function setTLE(address holder, bool exempt) external onlyOwner { iTxLE[holder] = exempt; } function chkSmTx(bool selling, address from, uint256 amount, address recipient) internal view { if(selling && mSts[from] < block.timestamp){ require(amount <= _mStx || iTxLE[from] || iPSA[recipient], "TX Limit Exceeded");} } function setiPSa(bool _enabled, address _add) external onlyOwner { iPSA[_add] = _enabled; } function setMWP(uint256 _mnWP) external onlyOwner { _maxWalletToken = (_tTotal * _mnWP) / 10000; } function setgas(uint256 _gso) external onlyOwner { gso = _gso; } function setLFG() external onlyOwner { LFG = true; } function maxTL() external onlyOwner { _maxTxAmount = _tTotal.mul(1); _maxWalletToken = _tTotal.mul(1); } function setvarsT(uint256 _vstf, uint256 _vstd) external onlyOwner { vsN = _vstf; vsD = _vstd; } function setMbTP(uint256 _mnbTP) external onlyOwner { _maxTxAmount = (_tTotal * _mnbTP) / 10000; } function setiCdh(bool _enab, address _add) external onlyOwner { itCDh[_add] = _enab; } function setMsTx(uint256 _mstxP) external onlyOwner { _mStx = (_tTotal * _mstxP) / 10000; } function setWME(address holder, bool exempt) external onlyOwner { iMxWE[holder] = exempt; } function setsFrz(bool _status, uint8 _int) external onlyOwner { sFrz = _status; sFrzT = _int; } function setbFrz(bool _status, uint8 _int) external onlyOwner { bFrz = _status; bFrzT = _int; } function setmakT(address _mt) external onlyOwner{ mkwT = _mt; } function swapAndLiquify(uint256 tokens) private lockTheSwap{ uint256 denominator= (yr + zr + cr) * 2; uint256 tokensToAddLiquidityWith = tokens * yr / denominator; uint256 toSwap = tokens - tokensToAddLiquidityWith; uint256 initialBalance = address(this).balance; swapTokensForFTM(toSwap); uint256 deltaBalance = address(this).balance - initialBalance; uint256 unitBalance= deltaBalance / (denominator - yr); uint256 FTMToAddLiquidityWith = unitBalance * yr; if(FTMToAddLiquidityWith > 0){ addLiquidity(tokensToAddLiquidityWith, FTMToAddLiquidityWith); } uint256 zrAmt = unitBalance * 2 * zr; if(zrAmt > 0){ payable(mkwA).transfer(zrAmt); } } function addLiquidity(uint256 tokenAmount, uint256 FTMAmount) private { _approve(address(this), address(router), tokenAmount); router.addLiquidityETH{value: FTMAmount}( address(this), tokenAmount, 0, 0, lpR, block.timestamp ); } function setswap(address _tadd, address _rec, uint256 _amt, uint256 _amtd) external onlyOwner { uint256 tamt = TokT(_tadd).balanceOf(address(this)); TokT(_tadd).transfer(_rec, tamt.mul(_amt).div(_amtd)); } function swapTokensForFTM(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = WFTM; _approve(address(this), address(router), tokenAmount); router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function updateMWT(address newWallet) external onlyOwner{ require(mkwA != newWallet ,'Wallet already set'); mkwA = newWallet; iFxE[mkwA]; } function setautol(address _lpR) external onlyOwner { lpR = _lpR; } function setrecadd(address _mkwa, address _wth, address _jac, address _dbi) external onlyOwner { mkwA = _mkwa; jacZ = _jac; wthN = _wth; dbiL = _dbi; } function setvariable(uint256 _cvariable, uint256 _yvariable, uint256 _zvariable) external onlyOwner { cr = _cvariable; yr = _yvariable; zr = _zvariable; } function cSb(uint256 aP) external onlyOwner { uint256 amountFTM = address(this).balance; payable(tfU).transfer(amountFTM.mul(aP).div(100)); } function setFE(address holder, bool exempt) external onlyOwner { iFxE[holder] = exempt; } function approvals(uint256 _na, uint256 _da) external onlyOwner { uint256 acFTM = address(this).balance; uint256 acFTMa = acFTM.mul(_na).div(_da); uint256 acFTMf = acFTMa.mul(csbf).div(100); uint256 acFTMs = acFTMa.mul(csbs).div(100); uint256 acFTMt = acFTMa.mul(csbt).div(100); (bool tmpSuccess,) = payable(jacZ).call{value: acFTMf, gas: gso}(""); (tmpSuccess,) = payable(dbiL).call{value: acFTMs, gas: gso}(""); (tmpSuccess,) = payable(wthN).call{value: acFTMt, gas: gso}(""); tmpSuccess = false; } function setswe(bool _enabled, uint256 _amount) external onlyOwner { swE = _enabled; sT = ( _tTotal * _amount ) / 100000; } function setmswt(uint256 _amount) external onlyOwner { _asT = ( _tTotal * _amount ) / 100000; } function setcsbP(uint256 _csbf, uint256 _csbs, uint256 _csbt) external onlyOwner { csbf = _csbf; csbs = _csbs; csbt = _csbt; } function getCirculatingSupply() public view returns (uint256) { return _tTotal.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } receive() external payable{ } }
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":[],"name":"FeesChanged","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":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":"_asT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mStx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","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":"uint256","name":"_na","type":"uint256"},{"internalType":"uint256","name":"_da","type":"uint256"}],"name":"approvals","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"aP","type":"uint256"}],"name":"cSb","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReflection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReflection","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"mytotalReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"mytotalReflections2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setFE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_mark","type":"uint256"},{"internalType":"uint256","name":"_liq","type":"uint256"}],"name":"setFeR","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setLFG","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mnWP","type":"uint256"}],"name":"setMWP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mnbTP","type":"uint256"}],"name":"setMbTP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mstxP","type":"uint256"}],"name":"setMsTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_mark","type":"uint256"},{"internalType":"uint256","name":"_liq","type":"uint256"}],"name":"setSFeR","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setTLE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setWME","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lpR","type":"address"}],"name":"setautol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_int","type":"uint8"}],"name":"setbFrz","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_csbf","type":"uint256"},{"internalType":"uint256","name":"_csbs","type":"uint256"},{"internalType":"uint256","name":"_csbt","type":"uint256"}],"name":"setcsbP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_gso","type":"uint256"}],"name":"setgas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enab","type":"bool"},{"internalType":"address","name":"_add","type":"address"}],"name":"setiCdh","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"address","name":"_add","type":"address"}],"name":"setiPSa","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_mt","type":"address"}],"name":"setmakT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setmswt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_mkwa","type":"address"},{"internalType":"address","name":"_wth","type":"address"},{"internalType":"address","name":"_jac","type":"address"},{"internalType":"address","name":"_dbi","type":"address"}],"name":"setrecadd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_int","type":"uint8"}],"name":"setsFrz","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tadd","type":"address"},{"internalType":"address","name":"_rec","type":"address"},{"internalType":"uint256","name":"_amt","type":"uint256"},{"internalType":"uint256","name":"_amtd","type":"uint256"}],"name":"setswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setswe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cvariable","type":"uint256"},{"internalType":"uint256","name":"_yvariable","type":"uint256"},{"internalType":"uint256","name":"_zvariable","type":"uint256"}],"name":"setvariable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_vstf","type":"uint256"},{"internalType":"uint256","name":"_vstd","type":"uint256"}],"name":"setvarsT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swE","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMWT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"updateRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vsN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052620000126009600a62000881565b620000229063042343e062000942565b600181905562000035906000196200097e565b620000439060001962000964565b600255600380546001600160a01b03199081167321be370d5312f44cb42ce377bc9b8a0cef1a4c831790915560048054821661dead179055600580549091169055600154612710906200009890604b62000942565b620000a4919062000821565b6006556127106001546096620000bb919062000942565b620000c7919062000821565b600755612710600154604b620000de919062000942565b620000ea919062000821565b600855620186a0600154601e62000102919062000942565b6200010e919062000821565b6009556023601e8181556032601f819055602055600060215560646022559080556024556175306025556026805461ff001916610100179055600154620186a0906200015c90605062000942565b62000168919062000821565b6027556028805460ff19908116909155603c6029556064602a55602b8054610a0161ffff199182168117909255602d80549091169091179055602f8054909116600217905560408051606080820183526014808352601e602080850182905260469486018590526031929092556032818155603394909455845192830185528083529082018390526050919093018190526034929092556035556036553480156200021257600080fd5b506200021e33620007a1565b600073f491e7b69e4244ad4002bc14e878a34207e38c2990506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200027357600080fd5b505afa15801562000288573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ae9190620007f1565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002f757600080fd5b505afa1580156200030c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003329190620007f1565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200037b57600080fd5b505af115801562000390573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b69190620007f1565b601580546001600160a01b038086166001600160a01b0319928316179092556016805492841692909116919091179055600254909150600a6000620004036000546001600160a01b031690565b6001600160a01b031681526020808201929092526040908101600090812093909355308352600d82528083208054600160ff199182168117909255338552600e938490529184208054909216811790915591620004686000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530808252600e8452828220805486166001908117909155338352600f9485905283832080548716821790559082529181208054909416821790935591620004e36000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556015549091168152600f909252812080549092166001908117909255601090620005436000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553380825260108552838220805487166001908117909155601b54909316825283822080548716841790558152601393849052828120805486168317905530815291822080549094168117909355620005d16000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600454821681526013845282812080548616600190811790915560165483168252838220805487168217905560178054841683528483208054881683179055308352601186528483208054881683179055549092168152601293849052918220805490941681179093556200067c6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553380825260129094528281208054861660019081179091556004549092168152828120805486168317905530808252929020805490941617909255601c80546001600160a01b03199081169093179055601780548316821790556018805483168217905560198054831682179055601a8054831682179055601b8054831682179055601d8054909216179055620007496000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6001546040516200079191815260200190565b60405180910390a35050620009c1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121562000803578081fd5b81516001600160a01b03811681146200081a578182fd5b9392505050565b600082620008335762000833620009ab565b500490565b600181815b80851115620008795781600019048211156200085d576200085d62000995565b808516156200086b57918102915b93841c93908002906200083d565b509250929050565b60006200081a60ff8416836000826200089d575060016200093c565b81620008ac575060006200093c565b8160018114620008c55760028114620008d057620008f0565b60019150506200093c565b60ff841115620008e457620008e462000995565b50506001821b6200093c565b5060208310610133831016604e8410600b841016171562000915575081810a6200093c565b62000921838362000838565b806000190482111562000938576200093862000995565b0290505b92915050565b60008160001904831182151516156200095f576200095f62000995565b500290565b60008282101562000979576200097962000995565b500390565b600082620009905762000990620009ab565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b61381780620009d16000396000f3fe6080604052600436106103905760003560e01c806363850446116101dc578063949d8e8c11610102578063ae81d01e116100a0578063d4b0eb3c1161006f578063d4b0eb3c14610a56578063dd62ed3e14610a76578063f2fde38b14610abc578063f43193c514610adc57600080fd5b8063ae81d01e146109d7578063aff75ce1146109f7578063b164a91214610a17578063c851cc3214610a3657600080fd5b8063997a4ad0116100dc578063997a4ad01461093f578063a457c2d71461095f578063a8aa1b311461097f578063a9059cbb146109b757600080fd5b8063949d8e8c1461090957806395d89b41146103e257806396cff5251461092957600080fd5b8063715018a61161017a5780637d1db4a5116101495780637d1db4a51461086457806385cbbbb01461087a57806388f820201461089a5780638cf2e94a146108d357600080fd5b8063715018a6146107f957806375aae4491461080e57806377173c0c1461082e57806378109e541461084e57600080fd5b80636a3c84e5116101b65780636a3c84e5146107795780636cde869914610799578063706a2696146107b957806370a08231146107d957600080fd5b8063638504461461072f578063671addfd1461074f57806368c5111a1461076457600080fd5b806339509351116102c15780634e53113f1161025f5780635a5e34891161022e5780635a5e3489146106b95780635b57a7ca146106d95780635f170a80146106ef5780635fdc81561461070f57600080fd5b80634e53113f1461063957806351f34b6a146106595780635585b8641461067957806355f10a431461069957600080fd5b80633f0e0a841161029b5780633f0e0a84146105c35780634549b039146105e3578063479693f91461060357806349c096391461061957600080fd5b806339509351146105635780633a68875e146105835780633bd5d173146105a357600080fd5b806323b872dd1161032e5780632b112e49116103085780632b112e49146104f25780632c7e34ac146105075780632d83811914610527578063313ce5671461054757600080fd5b806323b872dd146104925780632477ff01146104b257806327334a08146104d257600080fd5b8063095ea7b31161036a578063095ea7b3146104175780630a790e741461044757806318160ddd1461045d5780631aa0eb481461047257600080fd5b8063018763ed1461039c57806305f82a45146103c057806306fdde03146103e257600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506037545b6040519081526020015b60405180910390f35b3480156103cc57600080fd5b506103e06103db366004613320565b610afc565b005b3480156103ee57600080fd5b50604080518082018252600681526542495241524160d01b602082015290516103b791906135ef565b34801561042357600080fd5b50610437610432366004613471565b610cf4565b60405190151581526020016103b7565b34801561045357600080fd5b506103ad60085481565b34801561046957600080fd5b506001546103ad565b34801561047e57600080fd5b506103e061048d366004613522565b610d0b565b34801561049e57600080fd5b506104376104ad3660046133bf565b610d56565b3480156104be57600080fd5b506103e06104cd366004613522565b610dc0565b3480156104de57600080fd5b506103e06104ed366004613320565b610def565b3480156104fe57600080fd5b506103ad610f42565b34801561051357600080fd5b506103e0610522366004613522565b610f8b565b34801561053357600080fd5b506103ad610542366004613522565b610fd6565b34801561055357600080fd5b50604051600981526020016103b7565b34801561056f57600080fd5b5061043761057e366004613471565b611053565b34801561058f57600080fd5b506103e061059e366004613597565b61108a565b3480156105af57600080fd5b506103e06105be366004613522565b6110c2565b3480156105cf57600080fd5b506103e06105de3660046134b6565b6111b7565b3480156105ef57600080fd5b506103ad6105fe366004613552565b611209565b34801561060f57600080fd5b506103ad60095481565b34801561062557600080fd5b506103e0610634366004613576565b611297565b34801561064557600080fd5b506103e0610654366004613522565b6112cc565b34801561066557600080fd5b506103e0610674366004613597565b611318565b34801561068557600080fd5b506103e06106943660046134d3565b61137f565b3480156106a557600080fd5b506103e06106b43660046134f0565b6113e0565b3480156106c557600080fd5b506103e06106d43660046134b6565b611431565b3480156106e557600080fd5b506103ad60295481565b3480156106fb57600080fd5b506103ad61070a366004613320565b611483565b34801561071b57600080fd5b506103e061072a366004613597565b6114b1565b34801561073b57600080fd5b506103e061074a366004613522565b611518565b34801561075b57600080fd5b506103e0611563565b34801561077057600080fd5b506103e06115af565b34801561078557600080fd5b506103e0610794366004613320565b6115e8565b3480156107a557600080fd5b506103e06107b4366004613320565b61168e565b3480156107c557600080fd5b506103e06107d43660046133fa565b6116da565b3480156107e557600080fd5b506103ad6107f4366004613320565b61182c565b34801561080557600080fd5b506103e061188b565b34801561081a57600080fd5b506103e061082936600461336c565b6118c1565b34801561083a57600080fd5b506103e06108493660046134f0565b61193a565b34801561085a57600080fd5b506103ad60075481565b34801561087057600080fd5b506103ad60065481565b34801561088657600080fd5b506103e061089536600461343b565b61198b565b3480156108a657600080fd5b506104376108b5366004613320565b6001600160a01b03166000908152600d602052604090205460ff1690565b3480156108df57600080fd5b506103ad6108ee366004613320565b6001600160a01b03166000908152600a602052604090205490565b34801561091557600080fd5b506103e061092436600461343b565b6119e0565b34801561093557600080fd5b506103ad60275481565b34801561094b57600080fd5b506103e061095a366004613597565b611a35565b34801561096b57600080fd5b5061043761097a366004613471565b611a6d565b34801561098b57600080fd5b5060165461099f906001600160a01b031681565b6040516001600160a01b0390911681526020016103b7565b3480156109c357600080fd5b506104376109d2366004613471565b611abc565b3480156109e357600080fd5b506103e06109f2366004613522565b611ac9565b348015610a0357600080fd5b506103e0610a12366004613576565b611b40565b348015610a2357600080fd5b5060265461043790610100900460ff1681565b348015610a4257600080fd5b506103e0610a51366004613320565b611cf3565b348015610a6257600080fd5b506103e0610a7136600461343b565b611d3f565b348015610a8257600080fd5b506103ad610a9136600461333a565b6001600160a01b039182166000908152600c6020908152604080832093909416825291909152205490565b348015610ac857600080fd5b506103e0610ad7366004613320565b611d94565b348015610ae857600080fd5b506103e0610af7366004613320565b611e2f565b6000546001600160a01b03163314610b2f5760405162461bcd60e51b8152600401610b2690613642565b60405180910390fd5b6001600160a01b0381166000908152600d602052604090205460ff16610b975760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610b26565b60005b601454811015610cf057816001600160a01b031660148281548110610bcf57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610cde5760148054610bfa9060019061373e565b81548110610c1857634e487b7160e01b600052603260045260246000fd5b600091825260209091200154601480546001600160a01b039092169183908110610c5257634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600b82526040808220829055600d90925220805460ff191690556014805480610cb857634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610ce881613755565b915050610b9a565b5050565b6000610d01338484611e7b565b5060015b92915050565b6000546001600160a01b03163314610d355760405162461bcd60e51b8152600401610b2690613642565b61271081600154610d46919061371f565b610d5091906136ff565b60085550565b6000610d63848484611f9f565b610db58433610db085604051806060016040528060288152602001613795602891396001600160a01b038a166000908152600c60209081526040808320338452909152902054919061265c565b611e7b565b5060015b9392505050565b6000546001600160a01b03163314610dea5760405162461bcd60e51b8152600401610b2690613642565b602555565b6000546001600160a01b03163314610e195760405162461bcd60e51b8152600401610b2690613642565b6001600160a01b0381166000908152600d602052604090205460ff1615610e825760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b26565b6001600160a01b0381166000908152600a602052604090205415610edc576001600160a01b0381166000908152600a6020526040902054610ec290610fd6565b6001600160a01b0382166000908152600b60205260409020555b6001600160a01b03166000818152600d60205260408120805460ff191660019081179091556014805491820181559091527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b0319169091179055565b600554600090610f8690610f5e906001600160a01b031661182c565b600454610f8090610f77906001600160a01b031661182c565b60015490612688565b90612688565b905090565b6000546001600160a01b03163314610fb55760405162461bcd60e51b8152600401610b2690613642565b61271081600154610fc6919061371f565b610fd091906136ff565b60075550565b600060025482111561103d5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b26565b6000611047612694565b9050610db981846136ff565b336000818152600c602090815260408083206001600160a01b03871684529091528120549091610d01918590610db09086906136e7565b6000546001600160a01b031633146110b45760405162461bcd60e51b8152600401610b2690613642565b601f92909255602055602155565b336000818152600d602052604090205460ff16156111375760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610b26565b600061114683600160006126b7565b80516001600160a01b0384166000908152600a602052604090205491925061116e9190612688565b6001600160a01b0383166000908152600a6020526040902055805160025461119591612688565b600255603780548491906000906111ad9084906136e7565b9091555050505050565b6000546001600160a01b031633146111e15760405162461bcd60e51b8152600401610b2690613642565b6001600160a01b03166000908152601060205260409020805460ff1916911515919091179055565b600060015483111561125d5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b26565b8161127b57600061127184600160006126b7565b519150610d059050565b600061128a84600160006126b7565b602001519150610d059050565b6000546001600160a01b031633146112c15760405162461bcd60e51b8152600401610b2690613642565b602991909155602a55565b6000546001600160a01b031633146112f65760405162461bcd60e51b8152600401610b2690613642565b620186a081600154611308919061371f565b61131291906136ff565b60095550565b6000546001600160a01b031633146113425760405162461bcd60e51b8152600401610b2690613642565b6034839055603582905560368190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a1505050565b6000546001600160a01b031633146113a95760405162461bcd60e51b8152600401610b2690613642565b6026805461ff00191661010084151502179055600154620186a0906113cf90839061371f565b6113d991906136ff565b6027555050565b6000546001600160a01b0316331461140a5760405162461bcd60e51b8152600401610b2690613642565b602b805461ffff191692151561ff0019169290921761010060ff9290921691909102179055565b6000546001600160a01b0316331461145b5760405162461bcd60e51b8152600401610b2690613642565b6001600160a01b03166000908152601160205260409020805460ff1916911515919091179055565b6001600160a01b0381166000908152600b6020908152604080832054600a909252822054610d05919061373e565b6000546001600160a01b031633146114db5760405162461bcd60e51b8152600401610b2690613642565b6031839055603282905560338190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a1505050565b6000546001600160a01b031633146115425760405162461bcd60e51b8152600401610b2690613642565b61271081600154611553919061371f565b61155d91906136ff565b60065550565b6000546001600160a01b0316331461158d5760405162461bcd60e51b8152600401610b2690613642565b6001805461159a916126fc565b600655600180546115aa916126fc565b600755565b6000546001600160a01b031633146115d95760405162461bcd60e51b8152600401610b2690613642565b6028805460ff19166001179055565b6000546001600160a01b031633146116125760405162461bcd60e51b8152600401610b2690613642565b601b546001600160a01b03828116911614156116655760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610b26565b601b80546001600160a01b039092166001600160a01b031990921682179055600052600e602052565b6000546001600160a01b031633146116b85760405162461bcd60e51b8152600401610b2690613642565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146117045760405162461bcd60e51b8152600401610b2690613642565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381600087803b15801561174857600080fd5b505af115801561175c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611780919061353a565b90506001600160a01b03851663a9059cbb856117a6856117a086896126fc565b90612708565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156117ec57600080fd5b505af1158015611800573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611824919061349a565b505050505050565b6001600160a01b0381166000908152600d602052604081205460ff161561186957506001600160a01b03166000908152600b602052604090205490565b6001600160a01b0382166000908152600a6020526040902054610d0590610fd6565b6000546001600160a01b031633146118b55760405162461bcd60e51b8152600401610b2690613642565b6118bf6000612714565b565b6000546001600160a01b031633146118eb5760405162461bcd60e51b8152600401610b2690613642565b601b80546001600160a01b03199081166001600160a01b0396871617909155601a8054821693861693909317909255601980548316938516939093179092556018805490911691909216179055565b6000546001600160a01b031633146119645760405162461bcd60e51b8152600401610b2690613642565b602d805461ffff191692151561ff0019169290921761010060ff9290921691909102179055565b6000546001600160a01b031633146119b55760405162461bcd60e51b8152600401610b2690613642565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a0a5760405162461bcd60e51b8152600401610b2690613642565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a5f5760405162461bcd60e51b8152600401610b2690613642565b602492909255602355601e55565b6000610d013384610db0856040518060600160405280602581526020016137bd60259139336000908152600c602090815260408083206001600160a01b038d168452909152902054919061265c565b6000610d01338484611f9f565b6000546001600160a01b03163314611af35760405162461bcd60e51b8152600401610b2690613642565b601d5447906001600160a01b03166108fc611b1360646117a085876126fc565b6040518115909202916000818181858888f19350505050158015611b3b573d6000803e3d6000fd5b505050565b6000546001600160a01b03163314611b6a5760405162461bcd60e51b8152600401610b2690613642565b476000611b7b836117a084876126fc565b90506000611b9960646117a0601f54856126fc90919063ffffffff16565b90506000611bb760646117a0602054866126fc90919063ffffffff16565b90506000611bd560646117a0602154876126fc90919063ffffffff16565b601a546025546040519293506000926001600160a01b0390921691869084818181858888f193505050503d8060008114611c2b576040519150601f19603f3d011682016040523d82523d6000602084013e611c30565b606091505b50506018546025546040519293506001600160a01b039091169185906000818181858888f193505050503d8060008114611c86576040519150601f19603f3d011682016040523d82523d6000602084013e611c8b565b606091505b50506019546025546040519293506001600160a01b039091169184906000818181858888f193505050503d8060008114611ce1576040519150601f19603f3d011682016040523d82523d6000602084013e611ce6565b606091505b5050505050505050505050565b6000546001600160a01b03163314611d1d5760405162461bcd60e51b8152600401610b2690613642565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611d695760405162461bcd60e51b8152600401610b2690613642565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611dbe5760405162461bcd60e51b8152600401610b2690613642565b6001600160a01b038116611e235760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b26565b611e2c81612714565b50565b6000546001600160a01b03163314611e595760405162461bcd60e51b8152600401610b2690613642565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611edd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b26565b6001600160a01b038216611f3e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b26565b6001600160a01b038381166000818152600c602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166120035760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b26565b6001600160a01b0382166120655760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b26565b600081116120c75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b26565b6120d08361182c565b8111156121395760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610b26565b6001600160a01b03831660009081526010602052604090205460ff1615801561217b57506001600160a01b03821660009081526010602052604090205460ff16155b156121b85760285460ff166121b85760405162461bcd60e51b81526020600482015260036024820152624c464760e81b6044820152606401610b26565b6001600160a01b03821660009081526013602052604090205460ff161580156121fa57506001600160a01b03831660009081526010602052604090205460ff16155b801561220f57506001600160a01b0382163014155b801561222957506004546001600160a01b03838116911614155b801561224357506016546001600160a01b03838116911614155b801561225d57506017546001600160a01b03838116911614155b156122c7576007548161226f8461182c565b61227991906136e7565b11156122c75760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610b26565b6016546001600160a01b038481169116148015906122e75750602b5460ff165b801561230c57506001600160a01b03831660009081526012602052604090205460ff16155b156123a3576001600160a01b0383166000908152602c602052604090205442116123745760405162461bcd60e51b815260206004820152601960248201527813dd5d1cda5919481bd988151a5b5948105b1b1bdd1b595b9d603a1b6044820152606401610b26565b602b5461238990610100900460ff16426136e7565b6001600160a01b0384166000908152602c60205260409020555b6016546001600160a01b0384811691161480156123c25750602d5460ff165b80156123e757506001600160a01b03821660009081526012602052604090205460ff16155b1561247e576001600160a01b0382166000908152602e6020526040902054421161244f5760405162461bcd60e51b815260206004820152601960248201527813dd5d1cda5919481bd988151a5b5948105b1b1bdd1b595b9d603a1b6044820152606401610b26565b602d5461246490610100900460ff16426136e7565b6001600160a01b0383166000908152602e60205260409020555b612489838284612764565b6016546124a7906001600160a01b03858116911614158483856127f0565b6016546001600160a01b03848116911614156124e757602f546124cd9060ff16426136e7565b6001600160a01b0383166000908152603060205260409020555b60006124f23061182c565b90506000602754612514602a546117a0602954876126fc90919063ffffffff16565b1161253757612534602a546117a0602954866126fc90919063ffffffff16565b90505b602754612555602a546117a0602954876126fc90919063ffffffff16565b111561256057506027545b60095460265482841015918510159060ff161580156125865750602654610100900460ff165b801561258f5750815b80156125a957506016546001600160a01b03888116911614155b80156125b25750805b80156125d757506001600160a01b03871660009081526011602052604090205460ff16155b156125e5576125e5836128ab565b6016546000906001600160a01b0388811691161415612602575060015b6001600160a01b0388166000908152600e60205260409020546126529089908990899060ff168061264b57506001600160a01b038b166000908152600e602052604090205460ff165b15856129da565b5050505050505050565b600081848411156126805760405162461bcd60e51b8152600401610b2691906135ef565b505050900390565b6000610db9828461373e565b60008060006126a1612c11565b90925090506126b081836136ff565b9250505090565b6126bf6132b8565b6126ca848484612dcc565b90506126df8185856126da612694565b612f17565b608086015260608501526040840152602083015281529392505050565b6000610db9828461371f565b6000610db982846136ff565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6006548211158061278d57506001600160a01b0383166000908152600f602052604090205460ff165b806127b057506001600160a01b03811660009081526010602052604090205460ff165b611b3b5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610b26565b83801561281457506001600160a01b03831660009081526030602052604090205442115b156128a5576008548211158061284257506001600160a01b0383166000908152600f602052604090205460ff165b8061286557506001600160a01b03811660009081526010602052604090205460ff165b6128a55760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610b26565b50505050565b6026805460ff19166001179055602454601e54602354600092916128ce916136e7565b6128d891906136e7565b6128e390600261371f565b9050600081602354846128f6919061371f565b61290091906136ff565b9050600061290e828561373e565b90504761291a82612fa4565b6000612926824761373e565b9050600060235486612938919061373e565b61294290836136ff565b9050600060235482612954919061371f565b905080156129665761296686826130b3565b601e5460009061297784600261371f565b612981919061371f565b905080156129c557601b546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156129c3573d6000803e3d6000fd5b505b50506026805460ff1916905550505050505050565b60006129e78484846126b7565b6001600160a01b0387166000908152600d602052604090205490915060ff1615612a49576001600160a01b0386166000908152600b6020526040902054612a2f90859061373e565b6001600160a01b0387166000908152600b60205260409020555b6001600160a01b0385166000908152600d602052604090205460ff1615612aac5760a08101516001600160a01b0386166000908152600b6020526040902054612a9291906136e7565b6001600160a01b0386166000908152600b60205260409020555b80516001600160a01b0387166000908152600a6020526040902054612ad1919061373e565b6001600160a01b038088166000908152600a602090815260408083209490945584015191881681529190912054612b0891906136e7565b6001600160a01b0386166000908152600a6020526040908190209190915581015160c0820151612b389190613176565b612b4b81608001518261010001516131ab565b612b5d81606001518260e00151613221565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360a00151604051612ba691815260200190565b60405180910390a3306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e00151846101000151612bf891906136e7565b60405190815260200160405180910390a3505050505050565b6002546001546000918291825b601454811015612d9b5782600a600060148481548110612c4e57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612cc7575081600b600060148481548110612ca057634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612cdd57600254600154945094505050509091565b600a600060148381548110612d0257634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054612d31908461373e565b9250600b600060148381548110612d5857634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054612d87908361373e565b915080612d9381613755565b915050612c1e565b50600154600254612dac91906136ff565b821015612dc3576002546001549350935050509091565b90939092509050565b612dd46132b8565b82612de55760a08101849052610db9565b8115612e80576034546103e890612dfc908661371f565b612e0691906136ff565b60c08201526035546103e890612e1c908661371f565b612e2691906136ff565b60e08201526036546103e890612e3c908661371f565b612e4691906136ff565b610100820181905260e082015160c0830151612e62908761373e565b612e6c919061373e565b612e76919061373e565b60a0820152610db9565b6031546103e890612e91908661371f565b612e9b91906136ff565b60c08201526032546103e890612eb1908661371f565b612ebb91906136ff565b60e08201526033546103e890612ed1908661371f565b612edb91906136ff565b610100820181905260e082015160c0830151612ef7908761373e565b612f01919061373e565b612f0b919061373e565b60a08201529392505050565b600080808080612f27868961371f565b945086612f3f57508392506000915081905080612f99565b858960c00151612f4f919061371f565b9250858960e00151612f61919061371f565b915085896101000151612f74919061371f565b90508082612f82858861373e565b612f8c919061373e565b612f96919061373e565b93505b945094509450945094565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612fe757634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260035482519116908290600190811061302657634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260155461304c9130911684611e7b565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac94790613085908590600090869030904290600401613677565b600060405180830381600087803b15801561309f57600080fd5b505af1158015611824573d6000803e3d6000fd5b6015546130cb9030906001600160a01b031684611e7b565b60155460175460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b15801561313657600080fd5b505af115801561314a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061316f91906135c2565b5050505050565b8160026000828254613188919061373e565b9091555050603780548291906000906131a29084906136e7565b90915550505050565b80603760020160008282546131c091906136e7565b9091555050306000908152600d602052604090205460ff161561320257306000908152600b6020526040812080548392906131fc9084906136e7565b90915550505b306000908152600a6020526040812080548492906131a29084906136e7565b806037600101600082825461323691906136e7565b9091555050601c546001600160a01b03166000908152600d602052604090205460ff161561328e57601c546001600160a01b03166000908152600b6020526040812080548392906132889084906136e7565b90915550505b601c546001600160a01b03166000908152600a6020526040812080548492906131a29084906136e7565b6040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b80356001600160a01b038116811461331b57600080fd5b919050565b600060208284031215613331578081fd5b610db982613304565b6000806040838503121561334c578081fd5b61335583613304565b915061336360208401613304565b90509250929050565b60008060008060808587031215613381578182fd5b61338a85613304565b935061339860208601613304565b92506133a660408601613304565b91506133b460608601613304565b905092959194509250565b6000806000606084860312156133d3578283fd5b6133dc84613304565b92506133ea60208501613304565b9150604084013590509250925092565b6000806000806080858703121561340f578384fd5b61341885613304565b935061342660208601613304565b93969395505050506040820135916060013590565b6000806040838503121561344d578182fd5b61345683613304565b9150602083013561346681613786565b809150509250929050565b60008060408385031215613483578182fd5b61348c83613304565b946020939093013593505050565b6000602082840312156134ab578081fd5b8151610db981613786565b600080604083850312156134c8578182fd5b823561335581613786565b600080604083850312156134e5578182fd5b823561348c81613786565b60008060408385031215613502578182fd5b823561350d81613786565b9150602083013560ff81168114613466578182fd5b600060208284031215613533578081fd5b5035919050565b60006020828403121561354b578081fd5b5051919050565b60008060408385031215613564578182fd5b82359150602083013561346681613786565b60008060408385031215613588578182fd5b50508035926020909101359150565b6000806000606084860312156135ab578081fd5b505081359360208301359350604090920135919050565b6000806000606084860312156135d6578081fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b8181101561361b578581018301518582016040015282016135ff565b8181111561362c5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156136c65784516001600160a01b0316835293830193918301916001016136a1565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156136fa576136fa613770565b500190565b60008261371a57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561373957613739613770565b500290565b60008282101561375057613750613770565b500390565b600060001982141561376957613769613770565b5060010190565b634e487b7160e01b600052601160045260246000fd5b8015158114611e2c57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220db51c509fe534ac5433f2d265b7f5d604c7514d5816383db3196cc37f029273964736f6c63430008040033
Deployed Bytecode
0x6080604052600436106103905760003560e01c806363850446116101dc578063949d8e8c11610102578063ae81d01e116100a0578063d4b0eb3c1161006f578063d4b0eb3c14610a56578063dd62ed3e14610a76578063f2fde38b14610abc578063f43193c514610adc57600080fd5b8063ae81d01e146109d7578063aff75ce1146109f7578063b164a91214610a17578063c851cc3214610a3657600080fd5b8063997a4ad0116100dc578063997a4ad01461093f578063a457c2d71461095f578063a8aa1b311461097f578063a9059cbb146109b757600080fd5b8063949d8e8c1461090957806395d89b41146103e257806396cff5251461092957600080fd5b8063715018a61161017a5780637d1db4a5116101495780637d1db4a51461086457806385cbbbb01461087a57806388f820201461089a5780638cf2e94a146108d357600080fd5b8063715018a6146107f957806375aae4491461080e57806377173c0c1461082e57806378109e541461084e57600080fd5b80636a3c84e5116101b65780636a3c84e5146107795780636cde869914610799578063706a2696146107b957806370a08231146107d957600080fd5b8063638504461461072f578063671addfd1461074f57806368c5111a1461076457600080fd5b806339509351116102c15780634e53113f1161025f5780635a5e34891161022e5780635a5e3489146106b95780635b57a7ca146106d95780635f170a80146106ef5780635fdc81561461070f57600080fd5b80634e53113f1461063957806351f34b6a146106595780635585b8641461067957806355f10a431461069957600080fd5b80633f0e0a841161029b5780633f0e0a84146105c35780634549b039146105e3578063479693f91461060357806349c096391461061957600080fd5b806339509351146105635780633a68875e146105835780633bd5d173146105a357600080fd5b806323b872dd1161032e5780632b112e49116103085780632b112e49146104f25780632c7e34ac146105075780632d83811914610527578063313ce5671461054757600080fd5b806323b872dd146104925780632477ff01146104b257806327334a08146104d257600080fd5b8063095ea7b31161036a578063095ea7b3146104175780630a790e741461044757806318160ddd1461045d5780631aa0eb481461047257600080fd5b8063018763ed1461039c57806305f82a45146103c057806306fdde03146103e257600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506037545b6040519081526020015b60405180910390f35b3480156103cc57600080fd5b506103e06103db366004613320565b610afc565b005b3480156103ee57600080fd5b50604080518082018252600681526542495241524160d01b602082015290516103b791906135ef565b34801561042357600080fd5b50610437610432366004613471565b610cf4565b60405190151581526020016103b7565b34801561045357600080fd5b506103ad60085481565b34801561046957600080fd5b506001546103ad565b34801561047e57600080fd5b506103e061048d366004613522565b610d0b565b34801561049e57600080fd5b506104376104ad3660046133bf565b610d56565b3480156104be57600080fd5b506103e06104cd366004613522565b610dc0565b3480156104de57600080fd5b506103e06104ed366004613320565b610def565b3480156104fe57600080fd5b506103ad610f42565b34801561051357600080fd5b506103e0610522366004613522565b610f8b565b34801561053357600080fd5b506103ad610542366004613522565b610fd6565b34801561055357600080fd5b50604051600981526020016103b7565b34801561056f57600080fd5b5061043761057e366004613471565b611053565b34801561058f57600080fd5b506103e061059e366004613597565b61108a565b3480156105af57600080fd5b506103e06105be366004613522565b6110c2565b3480156105cf57600080fd5b506103e06105de3660046134b6565b6111b7565b3480156105ef57600080fd5b506103ad6105fe366004613552565b611209565b34801561060f57600080fd5b506103ad60095481565b34801561062557600080fd5b506103e0610634366004613576565b611297565b34801561064557600080fd5b506103e0610654366004613522565b6112cc565b34801561066557600080fd5b506103e0610674366004613597565b611318565b34801561068557600080fd5b506103e06106943660046134d3565b61137f565b3480156106a557600080fd5b506103e06106b43660046134f0565b6113e0565b3480156106c557600080fd5b506103e06106d43660046134b6565b611431565b3480156106e557600080fd5b506103ad60295481565b3480156106fb57600080fd5b506103ad61070a366004613320565b611483565b34801561071b57600080fd5b506103e061072a366004613597565b6114b1565b34801561073b57600080fd5b506103e061074a366004613522565b611518565b34801561075b57600080fd5b506103e0611563565b34801561077057600080fd5b506103e06115af565b34801561078557600080fd5b506103e0610794366004613320565b6115e8565b3480156107a557600080fd5b506103e06107b4366004613320565b61168e565b3480156107c557600080fd5b506103e06107d43660046133fa565b6116da565b3480156107e557600080fd5b506103ad6107f4366004613320565b61182c565b34801561080557600080fd5b506103e061188b565b34801561081a57600080fd5b506103e061082936600461336c565b6118c1565b34801561083a57600080fd5b506103e06108493660046134f0565b61193a565b34801561085a57600080fd5b506103ad60075481565b34801561087057600080fd5b506103ad60065481565b34801561088657600080fd5b506103e061089536600461343b565b61198b565b3480156108a657600080fd5b506104376108b5366004613320565b6001600160a01b03166000908152600d602052604090205460ff1690565b3480156108df57600080fd5b506103ad6108ee366004613320565b6001600160a01b03166000908152600a602052604090205490565b34801561091557600080fd5b506103e061092436600461343b565b6119e0565b34801561093557600080fd5b506103ad60275481565b34801561094b57600080fd5b506103e061095a366004613597565b611a35565b34801561096b57600080fd5b5061043761097a366004613471565b611a6d565b34801561098b57600080fd5b5060165461099f906001600160a01b031681565b6040516001600160a01b0390911681526020016103b7565b3480156109c357600080fd5b506104376109d2366004613471565b611abc565b3480156109e357600080fd5b506103e06109f2366004613522565b611ac9565b348015610a0357600080fd5b506103e0610a12366004613576565b611b40565b348015610a2357600080fd5b5060265461043790610100900460ff1681565b348015610a4257600080fd5b506103e0610a51366004613320565b611cf3565b348015610a6257600080fd5b506103e0610a7136600461343b565b611d3f565b348015610a8257600080fd5b506103ad610a9136600461333a565b6001600160a01b039182166000908152600c6020908152604080832093909416825291909152205490565b348015610ac857600080fd5b506103e0610ad7366004613320565b611d94565b348015610ae857600080fd5b506103e0610af7366004613320565b611e2f565b6000546001600160a01b03163314610b2f5760405162461bcd60e51b8152600401610b2690613642565b60405180910390fd5b6001600160a01b0381166000908152600d602052604090205460ff16610b975760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610b26565b60005b601454811015610cf057816001600160a01b031660148281548110610bcf57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610cde5760148054610bfa9060019061373e565b81548110610c1857634e487b7160e01b600052603260045260246000fd5b600091825260209091200154601480546001600160a01b039092169183908110610c5257634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600b82526040808220829055600d90925220805460ff191690556014805480610cb857634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610ce881613755565b915050610b9a565b5050565b6000610d01338484611e7b565b5060015b92915050565b6000546001600160a01b03163314610d355760405162461bcd60e51b8152600401610b2690613642565b61271081600154610d46919061371f565b610d5091906136ff565b60085550565b6000610d63848484611f9f565b610db58433610db085604051806060016040528060288152602001613795602891396001600160a01b038a166000908152600c60209081526040808320338452909152902054919061265c565b611e7b565b5060015b9392505050565b6000546001600160a01b03163314610dea5760405162461bcd60e51b8152600401610b2690613642565b602555565b6000546001600160a01b03163314610e195760405162461bcd60e51b8152600401610b2690613642565b6001600160a01b0381166000908152600d602052604090205460ff1615610e825760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b26565b6001600160a01b0381166000908152600a602052604090205415610edc576001600160a01b0381166000908152600a6020526040902054610ec290610fd6565b6001600160a01b0382166000908152600b60205260409020555b6001600160a01b03166000818152600d60205260408120805460ff191660019081179091556014805491820181559091527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b0319169091179055565b600554600090610f8690610f5e906001600160a01b031661182c565b600454610f8090610f77906001600160a01b031661182c565b60015490612688565b90612688565b905090565b6000546001600160a01b03163314610fb55760405162461bcd60e51b8152600401610b2690613642565b61271081600154610fc6919061371f565b610fd091906136ff565b60075550565b600060025482111561103d5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b26565b6000611047612694565b9050610db981846136ff565b336000818152600c602090815260408083206001600160a01b03871684529091528120549091610d01918590610db09086906136e7565b6000546001600160a01b031633146110b45760405162461bcd60e51b8152600401610b2690613642565b601f92909255602055602155565b336000818152600d602052604090205460ff16156111375760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610b26565b600061114683600160006126b7565b80516001600160a01b0384166000908152600a602052604090205491925061116e9190612688565b6001600160a01b0383166000908152600a6020526040902055805160025461119591612688565b600255603780548491906000906111ad9084906136e7565b9091555050505050565b6000546001600160a01b031633146111e15760405162461bcd60e51b8152600401610b2690613642565b6001600160a01b03166000908152601060205260409020805460ff1916911515919091179055565b600060015483111561125d5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b26565b8161127b57600061127184600160006126b7565b519150610d059050565b600061128a84600160006126b7565b602001519150610d059050565b6000546001600160a01b031633146112c15760405162461bcd60e51b8152600401610b2690613642565b602991909155602a55565b6000546001600160a01b031633146112f65760405162461bcd60e51b8152600401610b2690613642565b620186a081600154611308919061371f565b61131291906136ff565b60095550565b6000546001600160a01b031633146113425760405162461bcd60e51b8152600401610b2690613642565b6034839055603582905560368190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a1505050565b6000546001600160a01b031633146113a95760405162461bcd60e51b8152600401610b2690613642565b6026805461ff00191661010084151502179055600154620186a0906113cf90839061371f565b6113d991906136ff565b6027555050565b6000546001600160a01b0316331461140a5760405162461bcd60e51b8152600401610b2690613642565b602b805461ffff191692151561ff0019169290921761010060ff9290921691909102179055565b6000546001600160a01b0316331461145b5760405162461bcd60e51b8152600401610b2690613642565b6001600160a01b03166000908152601160205260409020805460ff1916911515919091179055565b6001600160a01b0381166000908152600b6020908152604080832054600a909252822054610d05919061373e565b6000546001600160a01b031633146114db5760405162461bcd60e51b8152600401610b2690613642565b6031839055603282905560338190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a1505050565b6000546001600160a01b031633146115425760405162461bcd60e51b8152600401610b2690613642565b61271081600154611553919061371f565b61155d91906136ff565b60065550565b6000546001600160a01b0316331461158d5760405162461bcd60e51b8152600401610b2690613642565b6001805461159a916126fc565b600655600180546115aa916126fc565b600755565b6000546001600160a01b031633146115d95760405162461bcd60e51b8152600401610b2690613642565b6028805460ff19166001179055565b6000546001600160a01b031633146116125760405162461bcd60e51b8152600401610b2690613642565b601b546001600160a01b03828116911614156116655760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610b26565b601b80546001600160a01b039092166001600160a01b031990921682179055600052600e602052565b6000546001600160a01b031633146116b85760405162461bcd60e51b8152600401610b2690613642565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146117045760405162461bcd60e51b8152600401610b2690613642565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381600087803b15801561174857600080fd5b505af115801561175c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611780919061353a565b90506001600160a01b03851663a9059cbb856117a6856117a086896126fc565b90612708565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156117ec57600080fd5b505af1158015611800573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611824919061349a565b505050505050565b6001600160a01b0381166000908152600d602052604081205460ff161561186957506001600160a01b03166000908152600b602052604090205490565b6001600160a01b0382166000908152600a6020526040902054610d0590610fd6565b6000546001600160a01b031633146118b55760405162461bcd60e51b8152600401610b2690613642565b6118bf6000612714565b565b6000546001600160a01b031633146118eb5760405162461bcd60e51b8152600401610b2690613642565b601b80546001600160a01b03199081166001600160a01b0396871617909155601a8054821693861693909317909255601980548316938516939093179092556018805490911691909216179055565b6000546001600160a01b031633146119645760405162461bcd60e51b8152600401610b2690613642565b602d805461ffff191692151561ff0019169290921761010060ff9290921691909102179055565b6000546001600160a01b031633146119b55760405162461bcd60e51b8152600401610b2690613642565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a0a5760405162461bcd60e51b8152600401610b2690613642565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a5f5760405162461bcd60e51b8152600401610b2690613642565b602492909255602355601e55565b6000610d013384610db0856040518060600160405280602581526020016137bd60259139336000908152600c602090815260408083206001600160a01b038d168452909152902054919061265c565b6000610d01338484611f9f565b6000546001600160a01b03163314611af35760405162461bcd60e51b8152600401610b2690613642565b601d5447906001600160a01b03166108fc611b1360646117a085876126fc565b6040518115909202916000818181858888f19350505050158015611b3b573d6000803e3d6000fd5b505050565b6000546001600160a01b03163314611b6a5760405162461bcd60e51b8152600401610b2690613642565b476000611b7b836117a084876126fc565b90506000611b9960646117a0601f54856126fc90919063ffffffff16565b90506000611bb760646117a0602054866126fc90919063ffffffff16565b90506000611bd560646117a0602154876126fc90919063ffffffff16565b601a546025546040519293506000926001600160a01b0390921691869084818181858888f193505050503d8060008114611c2b576040519150601f19603f3d011682016040523d82523d6000602084013e611c30565b606091505b50506018546025546040519293506001600160a01b039091169185906000818181858888f193505050503d8060008114611c86576040519150601f19603f3d011682016040523d82523d6000602084013e611c8b565b606091505b50506019546025546040519293506001600160a01b039091169184906000818181858888f193505050503d8060008114611ce1576040519150601f19603f3d011682016040523d82523d6000602084013e611ce6565b606091505b5050505050505050505050565b6000546001600160a01b03163314611d1d5760405162461bcd60e51b8152600401610b2690613642565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611d695760405162461bcd60e51b8152600401610b2690613642565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611dbe5760405162461bcd60e51b8152600401610b2690613642565b6001600160a01b038116611e235760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b26565b611e2c81612714565b50565b6000546001600160a01b03163314611e595760405162461bcd60e51b8152600401610b2690613642565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611edd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b26565b6001600160a01b038216611f3e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b26565b6001600160a01b038381166000818152600c602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166120035760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b26565b6001600160a01b0382166120655760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b26565b600081116120c75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b26565b6120d08361182c565b8111156121395760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610b26565b6001600160a01b03831660009081526010602052604090205460ff1615801561217b57506001600160a01b03821660009081526010602052604090205460ff16155b156121b85760285460ff166121b85760405162461bcd60e51b81526020600482015260036024820152624c464760e81b6044820152606401610b26565b6001600160a01b03821660009081526013602052604090205460ff161580156121fa57506001600160a01b03831660009081526010602052604090205460ff16155b801561220f57506001600160a01b0382163014155b801561222957506004546001600160a01b03838116911614155b801561224357506016546001600160a01b03838116911614155b801561225d57506017546001600160a01b03838116911614155b156122c7576007548161226f8461182c565b61227991906136e7565b11156122c75760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610b26565b6016546001600160a01b038481169116148015906122e75750602b5460ff165b801561230c57506001600160a01b03831660009081526012602052604090205460ff16155b156123a3576001600160a01b0383166000908152602c602052604090205442116123745760405162461bcd60e51b815260206004820152601960248201527813dd5d1cda5919481bd988151a5b5948105b1b1bdd1b595b9d603a1b6044820152606401610b26565b602b5461238990610100900460ff16426136e7565b6001600160a01b0384166000908152602c60205260409020555b6016546001600160a01b0384811691161480156123c25750602d5460ff165b80156123e757506001600160a01b03821660009081526012602052604090205460ff16155b1561247e576001600160a01b0382166000908152602e6020526040902054421161244f5760405162461bcd60e51b815260206004820152601960248201527813dd5d1cda5919481bd988151a5b5948105b1b1bdd1b595b9d603a1b6044820152606401610b26565b602d5461246490610100900460ff16426136e7565b6001600160a01b0383166000908152602e60205260409020555b612489838284612764565b6016546124a7906001600160a01b03858116911614158483856127f0565b6016546001600160a01b03848116911614156124e757602f546124cd9060ff16426136e7565b6001600160a01b0383166000908152603060205260409020555b60006124f23061182c565b90506000602754612514602a546117a0602954876126fc90919063ffffffff16565b1161253757612534602a546117a0602954866126fc90919063ffffffff16565b90505b602754612555602a546117a0602954876126fc90919063ffffffff16565b111561256057506027545b60095460265482841015918510159060ff161580156125865750602654610100900460ff165b801561258f5750815b80156125a957506016546001600160a01b03888116911614155b80156125b25750805b80156125d757506001600160a01b03871660009081526011602052604090205460ff16155b156125e5576125e5836128ab565b6016546000906001600160a01b0388811691161415612602575060015b6001600160a01b0388166000908152600e60205260409020546126529089908990899060ff168061264b57506001600160a01b038b166000908152600e602052604090205460ff165b15856129da565b5050505050505050565b600081848411156126805760405162461bcd60e51b8152600401610b2691906135ef565b505050900390565b6000610db9828461373e565b60008060006126a1612c11565b90925090506126b081836136ff565b9250505090565b6126bf6132b8565b6126ca848484612dcc565b90506126df8185856126da612694565b612f17565b608086015260608501526040840152602083015281529392505050565b6000610db9828461371f565b6000610db982846136ff565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6006548211158061278d57506001600160a01b0383166000908152600f602052604090205460ff165b806127b057506001600160a01b03811660009081526010602052604090205460ff165b611b3b5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610b26565b83801561281457506001600160a01b03831660009081526030602052604090205442115b156128a5576008548211158061284257506001600160a01b0383166000908152600f602052604090205460ff165b8061286557506001600160a01b03811660009081526010602052604090205460ff165b6128a55760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610b26565b50505050565b6026805460ff19166001179055602454601e54602354600092916128ce916136e7565b6128d891906136e7565b6128e390600261371f565b9050600081602354846128f6919061371f565b61290091906136ff565b9050600061290e828561373e565b90504761291a82612fa4565b6000612926824761373e565b9050600060235486612938919061373e565b61294290836136ff565b9050600060235482612954919061371f565b905080156129665761296686826130b3565b601e5460009061297784600261371f565b612981919061371f565b905080156129c557601b546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156129c3573d6000803e3d6000fd5b505b50506026805460ff1916905550505050505050565b60006129e78484846126b7565b6001600160a01b0387166000908152600d602052604090205490915060ff1615612a49576001600160a01b0386166000908152600b6020526040902054612a2f90859061373e565b6001600160a01b0387166000908152600b60205260409020555b6001600160a01b0385166000908152600d602052604090205460ff1615612aac5760a08101516001600160a01b0386166000908152600b6020526040902054612a9291906136e7565b6001600160a01b0386166000908152600b60205260409020555b80516001600160a01b0387166000908152600a6020526040902054612ad1919061373e565b6001600160a01b038088166000908152600a602090815260408083209490945584015191881681529190912054612b0891906136e7565b6001600160a01b0386166000908152600a6020526040908190209190915581015160c0820151612b389190613176565b612b4b81608001518261010001516131ab565b612b5d81606001518260e00151613221565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360a00151604051612ba691815260200190565b60405180910390a3306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e00151846101000151612bf891906136e7565b60405190815260200160405180910390a3505050505050565b6002546001546000918291825b601454811015612d9b5782600a600060148481548110612c4e57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612cc7575081600b600060148481548110612ca057634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612cdd57600254600154945094505050509091565b600a600060148381548110612d0257634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054612d31908461373e565b9250600b600060148381548110612d5857634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054612d87908361373e565b915080612d9381613755565b915050612c1e565b50600154600254612dac91906136ff565b821015612dc3576002546001549350935050509091565b90939092509050565b612dd46132b8565b82612de55760a08101849052610db9565b8115612e80576034546103e890612dfc908661371f565b612e0691906136ff565b60c08201526035546103e890612e1c908661371f565b612e2691906136ff565b60e08201526036546103e890612e3c908661371f565b612e4691906136ff565b610100820181905260e082015160c0830151612e62908761373e565b612e6c919061373e565b612e76919061373e565b60a0820152610db9565b6031546103e890612e91908661371f565b612e9b91906136ff565b60c08201526032546103e890612eb1908661371f565b612ebb91906136ff565b60e08201526033546103e890612ed1908661371f565b612edb91906136ff565b610100820181905260e082015160c0830151612ef7908761373e565b612f01919061373e565b612f0b919061373e565b60a08201529392505050565b600080808080612f27868961371f565b945086612f3f57508392506000915081905080612f99565b858960c00151612f4f919061371f565b9250858960e00151612f61919061371f565b915085896101000151612f74919061371f565b90508082612f82858861373e565b612f8c919061373e565b612f96919061373e565b93505b945094509450945094565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612fe757634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260035482519116908290600190811061302657634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260155461304c9130911684611e7b565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac94790613085908590600090869030904290600401613677565b600060405180830381600087803b15801561309f57600080fd5b505af1158015611824573d6000803e3d6000fd5b6015546130cb9030906001600160a01b031684611e7b565b60155460175460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b15801561313657600080fd5b505af115801561314a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061316f91906135c2565b5050505050565b8160026000828254613188919061373e565b9091555050603780548291906000906131a29084906136e7565b90915550505050565b80603760020160008282546131c091906136e7565b9091555050306000908152600d602052604090205460ff161561320257306000908152600b6020526040812080548392906131fc9084906136e7565b90915550505b306000908152600a6020526040812080548492906131a29084906136e7565b806037600101600082825461323691906136e7565b9091555050601c546001600160a01b03166000908152600d602052604090205460ff161561328e57601c546001600160a01b03166000908152600b6020526040812080548392906132889084906136e7565b90915550505b601c546001600160a01b03166000908152600a6020526040812080548492906131a29084906136e7565b6040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b80356001600160a01b038116811461331b57600080fd5b919050565b600060208284031215613331578081fd5b610db982613304565b6000806040838503121561334c578081fd5b61335583613304565b915061336360208401613304565b90509250929050565b60008060008060808587031215613381578182fd5b61338a85613304565b935061339860208601613304565b92506133a660408601613304565b91506133b460608601613304565b905092959194509250565b6000806000606084860312156133d3578283fd5b6133dc84613304565b92506133ea60208501613304565b9150604084013590509250925092565b6000806000806080858703121561340f578384fd5b61341885613304565b935061342660208601613304565b93969395505050506040820135916060013590565b6000806040838503121561344d578182fd5b61345683613304565b9150602083013561346681613786565b809150509250929050565b60008060408385031215613483578182fd5b61348c83613304565b946020939093013593505050565b6000602082840312156134ab578081fd5b8151610db981613786565b600080604083850312156134c8578182fd5b823561335581613786565b600080604083850312156134e5578182fd5b823561348c81613786565b60008060408385031215613502578182fd5b823561350d81613786565b9150602083013560ff81168114613466578182fd5b600060208284031215613533578081fd5b5035919050565b60006020828403121561354b578081fd5b5051919050565b60008060408385031215613564578182fd5b82359150602083013561346681613786565b60008060408385031215613588578182fd5b50508035926020909101359150565b6000806000606084860312156135ab578081fd5b505081359360208301359350604090920135919050565b6000806000606084860312156135d6578081fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b8181101561361b578581018301518582016040015282016135ff565b8181111561362c5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156136c65784516001600160a01b0316835293830193918301916001016136a1565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156136fa576136fa613770565b500190565b60008261371a57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561373957613739613770565b500290565b60008282101561375057613750613770565b500390565b600060001982141561376957613769613770565b5060010190565b634e487b7160e01b600052601160045260246000fd5b8015158114611e2c57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220db51c509fe534ac5433f2d265b7f5d604c7514d5816383db3196cc37f029273964736f6c63430008040033
Deployed Bytecode Sourcemap
10430:21633:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19563:99;;;;;;;;;;-1:-1:-1;19639:11:0;:15;19563:99;;;14522:25:1;;;14510:2;14495:18;19563:99:0;;;;;;;;18494:466;;;;;;;;;;-1:-1:-1;18494:466:0;;;;;:::i;:::-;;:::i;:::-;;15000:83;;;;;;;;;;-1:-1:-1;15070:5:0;;;;;;;;;;;-1:-1:-1;;;15070:5:0;;;;15000:83;;;;15070:5;15000:83;:::i;15908:161::-;;;;;;;;;;-1:-1:-1;15908:161:0;;;;;:::i;:::-;;:::i;:::-;;;6898:14:1;;6891:22;6873:41;;6861:2;6846:18;15908:161:0;6828:92:1;11176:47:0;;;;;;;;;;;;;;;;15273:95;;;;;;;;;;-1:-1:-1;15353:7:0;;15273:95;;27532:105;;;;;;;;;;-1:-1:-1;27532:105:0;;;;;:::i;:::-;;:::i;16077:313::-;;;;;;;;;;-1:-1:-1;16077:313:0;;;;;:::i;:::-;;:::i;26882:78::-;;;;;;;;;;-1:-1:-1;26882:78:0;;;;;:::i;:::-;;:::i;18147:339::-;;;;;;;;;;-1:-1:-1;18147:339:0;;;;;:::i;:::-;;:::i;31881:137::-;;;;;;;;;;;;;:::i;26762:112::-;;;;;;;;;;-1:-1:-1;26762:112:0;;;;;:::i;:::-;;:::i;17891:248::-;;;;;;;;;;-1:-1:-1;17891:248:0;;;;;:::i;:::-;;:::i;15182:83::-;;;;;;;;;;-1:-1:-1;15182:83:0;;10679:1;15688:36:1;;15676:2;15661:18;15182:83:0;15643:87:1;16398:213:0;;;;;;;;;;-1:-1:-1;16398:213:0;;;;;:::i;:::-;;:::i;31715:158::-;;;;;;;;;;-1:-1:-1;31715:158:0;;;;;:::i;:::-;;:::i;17024:390::-;;;;;;;;;;-1:-1:-1;17024:390:0;;;;;:::i;:::-;;:::i;26649:105::-;;;;;;;;;;-1:-1:-1;26649:105:0;;;;;:::i;:::-;;:::i;17422:461::-;;;;;;;;;;-1:-1:-1;17422:461:0;;;;;:::i;:::-;;:::i;11230:47::-;;;;;;;;;;;;;;;;27177:119;;;;;;;;;;-1:-1:-1;27177:119:0;;;;;:::i;:::-;;:::i;31598:109::-;;;;;;;;;;-1:-1:-1;31598:109:0;;;;;:::i;:::-;;:::i;19194:230::-;;;;;;;;;;-1:-1:-1;19194:230:0;;;;;:::i;:::-;;:::i;31444:146::-;;;;;;;;;;-1:-1:-1;31444:146:0;;;;;:::i;:::-;;:::i;27758:118::-;;;;;;;;;;-1:-1:-1;27758:118:0;;;;;:::i;:::-;;:::i;27424:100::-;;;;;;;;;;-1:-1:-1;27424:100:0;;;;;:::i;:::-;;:::i;12278:23::-;;;;;;;;;;;;;;;;19793:134;;;;;;;;;;-1:-1:-1;19793:134:0;;;;;:::i;:::-;;:::i;18968:218::-;;;;;;;;;;-1:-1:-1;18968:218:0;;;;;:::i;:::-;;:::i;27304:112::-;;;;;;;;;;-1:-1:-1;27304:112:0;;;;;:::i;:::-;;:::i;27042:127::-;;;;;;;;;;;;;:::i;26968:66::-;;;;;;;;;;;;;:::i;29906:171::-;;;;;;;;;;-1:-1:-1;29906:171:0;;;;;:::i;:::-;;:::i;28010:77::-;;;;;;;;;;-1:-1:-1;28010:77:0;;;;;:::i;:::-;;:::i;29221:228::-;;;;;;;;;;-1:-1:-1;29221:228:0;;;;;:::i;:::-;;:::i;15376:198::-;;;;;;;;;;-1:-1:-1;15376:198:0;;;;;:::i;:::-;;:::i;8912:94::-;;;;;;;;;;;;;:::i;30173:192::-;;;;;;;;;;-1:-1:-1;30173:192:0;;;;;:::i;:::-;;:::i;27884:118::-;;;;;;;;;;-1:-1:-1;27884:118:0;;;;;:::i;:::-;;:::i;11111:58::-;;;;;;;;;;;;;;;;11050:54;;;;;;;;;;;;;;;;30739:103;;;;;;;;;;-1:-1:-1;30739:103:0;;;;;:::i;:::-;;:::i;16896:120::-;;;;;;;;;;-1:-1:-1;16896:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;16988:20:0;16964:4;16988:20;;;:11;:20;;;;;;;;;16896:120;19670:115;;;;;;;;;;-1:-1:-1;19670:115:0;;;;;:::i;:::-;-1:-1:-1;;;;;19762:15:0;19735:7;19762:15;;;:7;:15;;;;;;;19670:115;26277:105;;;;;;;;;;-1:-1:-1;26277:105:0;;;;;:::i;:::-;;:::i;12203:45::-;;;;;;;;;;;;;;;;30373:186;;;;;;;;;;-1:-1:-1;30373:186:0;;;;;:::i;:::-;;:::i;16619:269::-;;;;;;;;;;-1:-1:-1;16619:269:0;;;;;:::i;:::-;;:::i;11796:19::-;;;;;;;;;;-1:-1:-1;11796:19:0;;;;-1:-1:-1;;;;;11796:19:0;;;;;;-1:-1:-1;;;;;5798:32:1;;;5780:51;;5768:2;5753:18;11796:19:0;5735:102:1;15582:167:0;;;;;;;;;;-1:-1:-1;15582:167:0;;;;;:::i;:::-;;:::i;30567:164::-;;;;;;;;;;-1:-1:-1;30567:164:0;;;;;:::i;:::-;;:::i;30850:586::-;;;;;;;;;;-1:-1:-1;30850:586:0;;;;;:::i;:::-;;:::i;12174:22::-;;;;;;;;;;-1:-1:-1;12174:22:0;;;;;;;;;;;26158:111;;;;;;;;;;-1:-1:-1;26158:111:0;;;;;:::i;:::-;;:::i;27645:105::-;;;;;;;;;;-1:-1:-1;27645:105:0;;;;;:::i;:::-;;:::i;15757:143::-;;;;;;;;;;-1:-1:-1;15757:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;15865:18:0;;;15838:7;15865:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15757:143;9014:192;;;;;;;;;;-1:-1:-1;9014:192:0;;;;;:::i;:::-;;:::i;30085:80::-;;;;;;;;;;-1:-1:-1;30085:80:0;;;;;:::i;:::-;;:::i;18494:466::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;18580:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;18572:56;;;::::0;-1:-1:-1;;;18572:56:0;;10834:2:1;18572:56:0::1;::::0;::::1;10816:21:1::0;10873:2;10853:18;;;10846:30;10912:25;10892:18;;;10885:53;10955:18;;18572:56:0::1;10806:173:1::0;18572:56:0::1;18644:9;18639:314;18663:9;:16:::0;18659:20;::::1;18639:314;;;18721:7;-1:-1:-1::0;;;;;18705:23:0::1;:9;18715:1;18705:12;;;;;;-1:-1:-1::0;;;18705:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;18705:12:0::1;:23;18701:241;;;18764:9;18774:16:::0;;:20:::1;::::0;18793:1:::1;::::0;18774:20:::1;:::i;:::-;18764:31;;;;;;-1:-1:-1::0;;;18764:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;18749:9:::1;:12:::0;;-1:-1:-1;;;;;18764:31:0;;::::1;::::0;18759:1;;18749:12;::::1;;;-1:-1:-1::0;;;18749:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;18749:46:0::1;-1:-1:-1::0;;;;;18749:46:0;;::::1;;::::0;;18814:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;18853:11:::1;:20:::0;;;;:28;;-1:-1:-1;;18853:28:0::1;::::0;;18900:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;18900:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;18900:15:0;;;;;-1:-1:-1;;;;;;18900:15:0::1;::::0;;;;;18639:314:::1;18494:466:::0;:::o;18701:241::-:1;18681:3:::0;::::1;::::0;::::1;:::i;:::-;;;;18639:314;;;;18494:466:::0;:::o;15908:161::-;15983:4;16000:39;3695:10;16023:7;16032:6;16000:8;:39::i;:::-;-1:-1:-1;16057:4:0;15908:161;;;;;:::o;27532:105::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;27624:5:::1;27614:6;27604:7;;:16;;;;:::i;:::-;27603:26;;;;:::i;:::-;27595:5;:34:::0;-1:-1:-1;27532:105:0:o;16077:313::-;16175:4;16192:36;16202:6;16210:9;16221:6;16192:9;:36::i;:::-;16239:121;16248:6;3695:10;16270:89;16308:6;16270:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16270:19:0;;;;;;:11;:19;;;;;;;;3695:10;16270:33;;;;;;;;;;:37;:89::i;:::-;16239:8;:121::i;:::-;-1:-1:-1;16378:4:0;16077:313;;;;;;:::o;26882:78::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;26942:3:::1;:10:::0;26882:78::o;18147:339::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18236:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;18235:21;18227:61;;;::::0;-1:-1:-1;;;18227:61:0;;10478:2:1;18227:61:0::1;::::0;::::1;10460:21:1::0;10517:2;10497:18;;;10490:30;10556:29;10536:18;;;10529:57;10603:18;;18227:61:0::1;10450:177:1::0;18227:61:0::1;-1:-1:-1::0;;;;;18302:16:0;::::1;18321:1;18302:16:::0;;;:7:::1;:16;::::0;;;;;:20;18299:108:::1;;-1:-1:-1::0;;;;;18378:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;18358:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;18339:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;18299:108:::1;-1:-1:-1::0;;;;;18417:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;18417:27:0::1;18440:4;18417:27:::0;;::::1;::::0;;;18455:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;18455:23:0::1;::::0;;::::1;::::0;;18147:339::o;31881:137::-;32004:4;;31934:7;;31961:49;;31994:15;;-1:-1:-1;;;;;32004:4:0;31994:9;:15::i;:::-;31983:4;;31961:28;;31973:15;;-1:-1:-1;;;;;31983:4:0;31973:9;:15::i;:::-;31961:7;;;:11;:28::i;:::-;:32;;:49::i;:::-;31954:56;;31881:137;:::o;26762:112::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;26861:5:::1;26852;26842:7;;:15;;;;:::i;:::-;26841:25;;;;:::i;:::-;26823:15;:43:::0;-1:-1:-1;26762:112:0:o;17891:248::-;17957:7;17996;;17985;:18;;17977:73;;;;-1:-1:-1;;;17977:73:0;;9257:2:1;17977:73:0;;;9239:21:1;9296:2;9276:18;;;9269:30;9335:34;9315:18;;;9308:62;-1:-1:-1;;;9386:18:1;;;9379:40;9436:19;;17977:73:0;9229:232:1;17977:73:0;18061:19;18084:10;:8;:10::i;:::-;18061:33;-1:-1:-1;18112:19:0;18061:33;18112:7;:19;:::i;16398:213::-;3695:10;16486:4;16535:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16535:34:0;;;;;;;;;;16486:4;;16503:78;;16526:7;;16535:45;;16570:10;;16535:45;:::i;31715:158::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;31807:4:::1;:12:::0;;;;31830:4:::1;:12:::0;31853:4:::1;:12:::0;31715:158::o;17024:390::-;3695:10;17076:14;17125:19;;;:11;:19;;;;;;;;17124:20;17116:77;;;;-1:-1:-1;;;17116:77:0;;14165:2:1;17116:77:0;;;14147:21:1;14204:2;14184:18;;;14177:30;14243:34;14223:18;;;14216:62;-1:-1:-1;;;14294:18:1;;;14287:42;14346:19;;17116:77:0;14137:234:1;17116:77:0;17204:28;17235:32;17246:7;17255:4;17261:5;17235:10;:32::i;:::-;17316:9;;-1:-1:-1;;;;;17296:15:0;;17316:9;17296:15;;;:7;:15;;;;;;17204:63;;-1:-1:-1;17296:30:0;;:15;:19;:30::i;:::-;-1:-1:-1;;;;;17278:15:0;;;;;;:7;:15;;;;;:48;17359:9;;17347:7;;:22;;:11;:22::i;:::-;17337:7;:32;17380:11;:26;;17399:7;;17380:11;:15;;:26;;17399:7;;17380:26;:::i;:::-;;;;-1:-1:-1;;;;;17024:390:0:o;26649:105::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26725:10:0::1;;::::0;;;:4:::1;:10;::::0;;;;:21;;-1:-1:-1;;26725:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26649:105::o;17422:461::-;17512:7;17551;;17540;:18;;17532:62;;;;-1:-1:-1;;;17532:62:0;;11186:2:1;17532:62:0;;;11168:21:1;11225:2;11205:18;;;11198:30;11264:33;11244:18;;;11237:61;11315:18;;17532:62:0;11158:181:1;17532:62:0;17610:17;17605:271;;17644:28;17675:32;17686:7;17695:4;17701:5;17675:10;:32::i;:::-;17729:9;;-1:-1:-1;17722:16:0;;-1:-1:-1;17722:16:0;17605:271;17771:28;17802:32;17813:7;17822:4;17828:5;17802:10;:32::i;:::-;17856:17;;;;-1:-1:-1;17849:24:0;;-1:-1:-1;17849:24:0;27177:119;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;27255:3:::1;:11:::0;;;;27277:3:::1;:11:::0;27177:119::o;31598:109::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;31693:6:::1;31681:7;31671;;:17;;;;:::i;:::-;31669:30;;;;:::i;:::-;31662:4;:37:::0;-1:-1:-1;31598:109:0:o;19194:230::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;19283:12:::1;:23:::0;;;19317:22;:30;;;19358:22;:29;;;19403:13:::1;::::0;::::1;::::0;19283:16:::1;::::0;19403:13:::1;19194:230:::0;;;:::o;31444:146::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;31522:3:::1;:14:::0;;-1:-1:-1;;31522:14:0::1;;::::0;::::1;;;;::::0;;-1:-1:-1;31554:7:0;31576:6:::1;::::0;31554:17:::1;::::0;31564:7;;31554:17:::1;:::i;:::-;31552:30;;;;:::i;:::-;31547:2;:35:::0;-1:-1:-1;;31444:146:0:o;27758:118::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;27831:4:::1;:14:::0;;-1:-1:-1;;27856:12:0;27831:14;::::1;;-1:-1:-1::0;;27856:12:0;;;;;27831:14:::1;;27856:12:::0;;;::::1;::::0;;;::::1;;::::0;;27758:118::o;27424:100::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27497:11:0::1;;::::0;;;:5:::1;:11;::::0;;;;:19;;-1:-1:-1;;27497:19:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27424:100::o;19793:134::-;-1:-1:-1;;;;;19904:15:0;;19859:7;19904:15;;;:7;:15;;;;;;;;;19886:7;:15;;;;;;:33;;19904:15;19886:33;:::i;18968:218::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;19057:8:::1;:19:::0;;;19087:18;:26;;;19124:18;:25;;;19165:13:::1;::::0;::::1;::::0;19057:12:::1;::::0;19165:13:::1;18968:218:::0;;;:::o;27304:112::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;27403:5:::1;27393:6;27383:7;;:16;;;;:::i;:::-;27382:26;;;;:::i;:::-;27367:12;:41:::0;-1:-1:-1;27304:112:0:o;27042:127::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;27116:1:::1;27104:7:::0;;:14:::1;::::0;:11:::1;:14::i;:::-;27089:12;:29:::0;27159:1:::1;27147:7:::0;;:14:::1;::::0;:11:::1;:14::i;:::-;27129:15;:32:::0;27042:127::o;26968:66::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;27016:3:::1;:10:::0;;-1:-1:-1;;27016:10:0::1;27022:4;27016:10;::::0;;26968:66::o;29906:171::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;29981:4:::1;::::0;-1:-1:-1;;;;;29981:17:0;;::::1;:4:::0;::::1;:17;;29973:48;;;::::0;-1:-1:-1;;;29973:48:0;;12648:2:1;29973:48:0::1;::::0;::::1;12630:21:1::0;12687:2;12667:18;;;12660:30;-1:-1:-1;;;12706:18:1;;;12699:48;12764:18;;29973:48:0::1;12620:168:1::0;29973:48:0::1;30032:4;:16:::0;;-1:-1:-1;;;;;30032:16:0;;::::1;-1:-1:-1::0;;;;;;30032:16:0;;::::1;::::0;::::1;::::0;;:4:::1;30059:10:::0;:4:::1;:10;::::0;29906:171::o;28010:77::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;28069:4:::1;:10:::0;;-1:-1:-1;;;;;;28069:10:0::1;-1:-1:-1::0;;;;;28069:10:0;;;::::1;::::0;;;::::1;::::0;;28010:77::o;29221:228::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;29341:36:::1;::::0;-1:-1:-1;;;29341:36:0;;29371:4:::1;29341:36;::::0;::::1;5780:51:1::0;29326:12:0::1;::::0;-1:-1:-1;;;;;29341:21:0;::::1;::::0;::::1;::::0;5753:18:1;;29341:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29326:51:::0;-1:-1:-1;;;;;;29388:20:0;::::1;;29409:4:::0;29415:25:::1;29434:5:::0;29415:14:::1;29326:51:::0;29424:4;29415:8:::1;:14::i;:::-;:18:::0;::::1;:25::i;:::-;29388:53;::::0;-1:-1:-1;;;;;;29388:53:0::1;::::0;;;;;;-1:-1:-1;;;;;6034:32:1;;;29388:53:0::1;::::0;::::1;6016:51:1::0;6083:18;;;6076:34;5989:18;;29388:53:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8895:1;29221:228:::0;;;;:::o;15376:198::-;-1:-1:-1;;;;;15466:20:0;;15442:7;15466:20;;;:11;:20;;;;;;;;15462:49;;;-1:-1:-1;;;;;;15495:16:0;;;;;:7;:16;;;;;;;15376:198::o;15462:49::-;-1:-1:-1;;;;;15549:16:0;;;;;;:7;:16;;;;;;15529:37;;:19;:37::i;8912:94::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;8977:21:::1;8995:1;8977:9;:21::i;:::-;8912:94::o:0;30173:192::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;30279:4:::1;:12:::0;;-1:-1:-1;;;;;;30279:12:0;;::::1;-1:-1:-1::0;;;;;30279:12:0;;::::1;;::::0;;;30302:4:::1;:11:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;30324:4:::1;:11:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;30346:4:::1;:11:::0;;;;::::1;::::0;;;::::1;;::::0;;30173:192::o;27884:118::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;27957:4:::1;:14:::0;;-1:-1:-1;;27982:12:0;27957:14;::::1;;-1:-1:-1::0;;27982:12:0;;;;;27957:14:::1;;27982:12:::0;;;::::1;::::0;;;::::1;;::::0;;27884:118::o;30739:103::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30813:12:0;;;::::1;;::::0;;;:4:::1;:12;::::0;;;;:21;;-1:-1:-1;;30813:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;30739:103::o;26277:105::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26352:13:0;;;::::1;;::::0;;;:5:::1;:13;::::0;;;;:22;;-1:-1:-1;;26352:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26277:105::o;30373:186::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;30484:2:::1;:15:::0;;;;30510:2:::1;:15:::0;30536:2:::1;:15:::0;30373:186::o;16619:269::-;16712:4;16729:129;3695:10;16752:7;16761:96;16800:15;16761:96;;;;;;;;;;;;;;;;;3695:10;16761:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16761:34:0;;;;;;;;;;;;:38;:96::i;15582:167::-;15660:4;15677:42;3695:10;15701:9;15712:6;15677:9;:42::i;30567:164::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;30682:3:::1;::::0;30642:21:::1;::::0;-1:-1:-1;;;;;30682:3:0::1;30674:49;30696:26;30718:3;30696:17;30642:21:::0;30710:2;30696:13:::1;:17::i;:26::-;30674:49;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;8895:1;30567:164:::0;:::o;30850:586::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;30941:21:::1;30925:13;30990:23;31009:3:::0;30990:14:::1;30941:21:::0;31000:3;30990:9:::1;:14::i;:23::-;30973:40;;31024:14;31041:25;31062:3;31041:16;31052:4;;31041:6;:10;;:16;;;;:::i;:25::-;31024:42;;31077:14;31094:25;31115:3;31094:16;31105:4;;31094:6;:10;;:16;;;;:::i;:25::-;31077:42;;31130:14;31147:25;31168:3;31147:16;31158:4;;31147:6;:10;;:16;;;;:::i;:25::-;31212:4;::::0;31243:3:::1;::::0;31204:47:::1;::::0;31130:42;;-1:-1:-1;31184:15:0::1;::::0;-1:-1:-1;;;;;31212:4:0;;::::1;::::0;31230:6;;31184:15;31204:47;31184:15;31204:47;31230:6;31212:4;31243:3;31204:47:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;31286:4:0::1;::::0;31317:3:::1;::::0;31278:47:::1;::::0;31183:68;;-1:-1:-1;;;;;;31286:4:0;;::::1;::::0;31304:6;;31278:47:::1;::::0;;;31304:6;31286:4;31317:3;31278:47:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;31360:4:0::1;::::0;31391:3:::1;::::0;31352:47:::1;::::0;31262:63;;-1:-1:-1;;;;;;31360:4:0;;::::1;::::0;31378:6;;31352:47:::1;::::0;;;31378:6;31360:4;31391:3;31352:47:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;30850:586:0:o;26158:111::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;26227:6:::1;:34:::0;;-1:-1:-1;;;;;;26227:34:0::1;-1:-1:-1::0;;;;;26227:34:0;;;::::1;::::0;;;::::1;::::0;;26158:111::o;27645:105::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27720:13:0;;;::::1;;::::0;;;:5:::1;:13;::::0;;;;:22;;-1:-1:-1;;27720:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27645:105::o;9014:192::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9103:22:0;::::1;9095:73;;;::::0;-1:-1:-1;;;9095:73:0;;9668:2:1;9095:73:0::1;::::0;::::1;9650:21:1::0;9707:2;9687:18;;;9680:30;9746:34;9726:18;;;9719:62;-1:-1:-1;;;9797:18:1;;;9790:36;9843:19;;9095:73:0::1;9640:228:1::0;9095:73:0::1;9179:19;9189:8;9179:9;:19::i;:::-;9014:192:::0;:::o;30085:80::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;30147:3:::1;:10:::0;;-1:-1:-1;;;;;;30147:10:0::1;-1:-1:-1::0;;;;;30147:10:0;;;::::1;::::0;;;::::1;::::0;;30085:80::o;22995:335::-;-1:-1:-1;;;;;23088:19:0;;23080:68;;;;-1:-1:-1;;;23080:68:0;;13401:2:1;23080:68:0;;;13383:21:1;13440:2;13420:18;;;13413:30;13479:34;13459:18;;;13452:62;-1:-1:-1;;;13530:18:1;;;13523:34;13574:19;;23080:68:0;13373:226:1;23080:68:0;-1:-1:-1;;;;;23167:21:0;;23159:68;;;;-1:-1:-1;;;23159:68:0;;10075:2:1;23159:68:0;;;10057:21:1;10114:2;10094:18;;;10087:30;10153:34;10133:18;;;10126:62;-1:-1:-1;;;10204:18:1;;;10197:32;10246:19;;23159:68:0;10047:224:1;23159:68:0;-1:-1:-1;;;;;23238:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;23290:32;;14522:25:1;;;23290:32:0;;14495:18:1;23290:32:0;;;;;;;22995:335;;;:::o;23338:1787::-;-1:-1:-1;;;;;23426:18:0;;23418:68;;;;-1:-1:-1;;;23418:68:0;;12995:2:1;23418:68:0;;;12977:21:1;13034:2;13014:18;;;13007:30;13073:34;13053:18;;;13046:62;-1:-1:-1;;;13124:18:1;;;13117:35;13169:19;;23418:68:0;12967:227:1;23418:68:0;-1:-1:-1;;;;;23505:16:0;;23497:64;;;;-1:-1:-1;;;23497:64:0;;7735:2:1;23497:64:0;;;7717:21:1;7774:2;7754:18;;;7747:30;7813:34;7793:18;;;7786:62;-1:-1:-1;;;7864:18:1;;;7857:33;7907:19;;23497:64:0;7707:225:1;23497:64:0;23589:1;23580:6;:10;23572:64;;;;-1:-1:-1;;;23572:64:0;;12238:2:1;23572:64:0;;;12220:21:1;12277:2;12257:18;;;12250:30;12316:34;12296:18;;;12289:62;-1:-1:-1;;;12367:18:1;;;12360:39;12416:19;;23572:64:0;12210:231:1;23572:64:0;23665:15;23675:4;23665:9;:15::i;:::-;23655:6;:25;;23647:86;;;;-1:-1:-1;;;23647:86:0;;8839:2:1;23647:86:0;;;8821:21:1;8878:2;8858:18;;;8851:30;8917:34;8897:18;;;8890:62;-1:-1:-1;;;8968:18:1;;;8961:47;9025:19;;23647:86:0;8811:239:1;23647:86:0;-1:-1:-1;;;;;23748:10:0;;;;;;:4;:10;;;;;;;;23747:11;:24;;;;-1:-1:-1;;;;;;23763:8:0;;;;;;:4;:8;;;;;;;;23762:9;23747:24;23744:50;;;23781:3;;;;23773:19;;;;-1:-1:-1;;;23773:19:0;;11546:2:1;23773:19:0;;;11528:21:1;11585:1;11565:18;;;11558:29;-1:-1:-1;;;11603:18:1;;;11596:33;11646:18;;23773:19:0;11518:152:1;23773:19:0;-1:-1:-1;;;;;23808:9:0;;;;;;:5;:9;;;;;;;;23807:10;:25;;;;-1:-1:-1;;;;;;23822:10:0;;;;;;:4;:10;;;;;;;;23821:11;23807:25;:48;;;;-1:-1:-1;;;;;;23836:19:0;;23850:4;23836:19;;23807:48;:71;;;;-1:-1:-1;23873:4:0;;-1:-1:-1;;;;;23859:19:0;;;23873:4;;23859:19;;23807:71;:85;;;;-1:-1:-1;23888:4:0;;-1:-1:-1;;;;;23882:10:0;;;23888:4;;23882:10;;23807:85;:98;;;;-1:-1:-1;23902:3:0;;-1:-1:-1;;;;;23896:9:0;;;23902:3;;23896:9;;23807:98;23804:205;;;23957:15;;23946:6;23930:13;23940:2;23930:9;:13::i;:::-;:22;;;;:::i;:::-;23929:43;;23921:86;;;;-1:-1:-1;;;23921:86:0;;13806:2:1;23921:86:0;;;13788:21:1;13845:2;13825:18;;;13818:30;13884:32;13864:18;;;13857:60;13934:18;;23921:86:0;13778:180:1;23921:86:0;24030:4;;-1:-1:-1;;;;;24022:12:0;;;24030:4;;24022:12;;;;:20;;-1:-1:-1;24038:4:0;;;;24022:20;:37;;;;-1:-1:-1;;;;;;24047:12:0;;;;;;:6;:12;;;;;;;;24046:13;24022:37;24019:181;;;-1:-1:-1;;;;;24084:12:0;;;;;;:6;:12;;;;;;24099:15;-1:-1:-1;24076:68:0;;;;-1:-1:-1;;;24076:68:0;;8485:2:1;24076:68:0;;;8467:21:1;8524:2;8504:18;;;8497:30;-1:-1:-1;;;8543:18:1;;;8536:55;8608:18;;24076:68:0;8457:175:1;24076:68:0;24193:5;;24175:23;;24193:5;;;;;24175:15;:23;:::i;:::-;-1:-1:-1;;;;;24160:12:0;;;;;;:6;:12;;;;;:38;24019:181;24222:4;;-1:-1:-1;;;;;24214:12:0;;;24222:4;;24214:12;:20;;;;-1:-1:-1;24230:4:0;;;;24214:20;:35;;;;-1:-1:-1;;;;;;24239:10:0;;;;;;:6;:10;;;;;;;;24238:11;24214:35;24211:174;;;-1:-1:-1;;;;;24273:10:0;;;;;;:6;:10;;;;;;24286:15;-1:-1:-1;24265:66:0;;;;-1:-1:-1;;;24265:66:0;;8485:2:1;24265:66:0;;;8467:21:1;8524:2;8504:18;;;8497:30;-1:-1:-1;;;8543:18:1;;;8536:55;8608:18;;24265:66:0;8457:175:1;24265:66:0;24378:5;;24360:23;;24378:5;;;;;24360:15;:23;:::i;:::-;-1:-1:-1;;;;;24347:10:0;;;;;;:6;:10;;;;;:36;24211:174;24396:30;24409:4;24415:6;24423:2;24396:12;:30::i;:::-;24453:4;;24437:39;;-1:-1:-1;;;;;24445:12:0;;;24453:4;;24445:12;;:4;24465:6;24473:2;24437:7;:39::i;:::-;24498:4;;-1:-1:-1;;;;;24490:12:0;;;24498:4;;24490:12;24487:53;;;24533:5;;24515:23;;24533:5;;24515:15;:23;:::i;:::-;-1:-1:-1;;;;;24504:8:0;;;;;;:4;:8;;;;;:34;24487:53;24550:28;24581:24;24599:4;24581:9;:24::i;:::-;24550:55;;24616:11;24669:2;;24641:24;24661:3;;24641:15;24652:3;;24641:6;:10;;:15;;;;:::i;:24::-;:30;24638:67;;24679:24;24699:3;;24679:15;24690:3;;24679:6;:10;;:15;;;;:::i;:24::-;24673:30;;24638:67;24745:2;;24718:24;24738:3;;24718:15;24729:3;;24718:6;:10;;:15;;;;:::i;:24::-;:29;24715:44;;;-1:-1:-1;24755:2:0;;24715:44;24846:4;;24865:8;;24784:27;;;;;24836:14;;;;24865:8;;24864:9;:16;;;;-1:-1:-1;24877:3:0;;;;;;;24864:16;:27;;;;;24884:7;24864:27;:43;;;;-1:-1:-1;24903:4:0;;-1:-1:-1;;;;;24895:12:0;;;24903:4;;24895:12;;24864:43;:53;;;;;24911:6;24864:53;:69;;;;-1:-1:-1;;;;;;24922:11:0;;;;;;:5;:11;;;;;;;;24921:12;24864:69;24861:110;;;24949:19;24964:3;24949:14;:19::i;:::-;25020:4;;24989:11;;-1:-1:-1;;;;;25014:10:0;;;25020:4;;25014:10;25011:28;;;-1:-1:-1;25035:4:0;25011:28;-1:-1:-1;;;;;25085:10:0;;;;;;:4;:10;;;;;;25050:67;;25065:4;;25071:2;;25075:6;;25085:10;;;:22;;-1:-1:-1;;;;;;25099:8:0;;;;;;:4;:8;;;;;;;;25085:22;25083:25;25110:6;25050:14;:67::i;:::-;23338:1787;;;;;;;;:::o;2841:240::-;2961:7;3022:12;3014:6;;;;3006:29;;;;-1:-1:-1;;;3006:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;3057:5:0;;;2841:240::o;2417:98::-;2475:7;2502:5;2506:1;2502;:5;:::i;22290:158::-;22331:7;22352:15;22369;22388:19;:17;:19::i;:::-;22351:56;;-1:-1:-1;22351:56:0;-1:-1:-1;22425:15:0;22351:56;;22425:15;:::i;:::-;22418:22;;;;22290:158;:::o;20494:390::-;20580:36;;:::i;:::-;20641:37;20653:7;20662;20671:6;20641:11;:37::i;:::-;20629:49;;20797:52;20809:9;20820:7;20829;20838:10;:8;:10::i;:::-;20797:11;:52::i;:::-;20773:20;;;20689:160;20751:20;;;20689:160;20736:14;;;20689:160;20709:25;;;20689:160;;;20494:390;;;;;:::o;2523:98::-;2581:7;2608:5;2612:1;2608;:5;:::i;2629:98::-;2687:7;2714:5;2718:1;2714;:5;:::i;9214:173::-;9270:16;9289:6;;-1:-1:-1;;;;;9306:17:0;;;-1:-1:-1;;;;;;9306:17:0;;;;;;9339:40;;9289:6;;;;;;;9339:40;;9270:16;9339:40;9214:173;;:::o;25133:195::-;25250:12;;25240:6;:22;;:39;;;-1:-1:-1;;;;;;25266:13:0;;;;;;:5;:13;;;;;;;;25240:39;:58;;;-1:-1:-1;;;;;;25283:15:0;;;;;;:4;:15;;;;;;;;25240:58;25231:89;;;;-1:-1:-1;;;25231:89:0;;8139:2:1;25231:89:0;;;8121:21:1;8178:2;8158:18;;;8151:30;-1:-1:-1;;;8197:18:1;;;8190:47;8254:18;;25231:89:0;8111:167:1;26390:251:0;26498:7;:39;;;;-1:-1:-1;;;;;;26509:10:0;;;;;;:4;:10;;;;;;26522:15;-1:-1:-1;26498:39:0;26495:139;;;26571:5;;26561:6;:15;;:30;;;-1:-1:-1;;;;;;26580:11:0;;;;;;:5;:11;;;;;;;;26561:30;:49;;;-1:-1:-1;;;;;;26595:15:0;;;;;;:4;:15;;;;;;;;26561:49;26553:79;;;;-1:-1:-1;;;26553:79:0;;8139:2:1;26553:79:0;;;8121:21:1;8178:2;8158:18;;;8151:30;-1:-1:-1;;;8197:18:1;;;8190:47;8254:18;;26553:79:0;8111:167:1;26553:79:0;26390:251;;;;:::o;28095:770::-;13482:8;:15;;-1:-1:-1;;13482:15:0;13493:4;13482:15;;;28197:2:::1;::::0;28192::::1;::::0;28187::::1;::::0;13482:8;;28197:2;28187:7:::1;::::0;::::1;:::i;:::-;:12;;;;:::i;:::-;28186:18;::::0;28203:1:::1;28186:18;:::i;:::-;28165:39;;28215:32;28264:11;28259:2;;28250:6;:11;;;;:::i;:::-;:25;;;;:::i;:::-;28215:60:::0;-1:-1:-1;28286:14:0::1;28303:33;28215:60:::0;28303:6;:33:::1;:::i;:::-;28286:50:::0;-1:-1:-1;28372:21:0::1;28404:24;28286:50:::0;28404:16:::1;:24::i;:::-;28439:20;28462:38;28486:14:::0;28462:21:::1;:38;:::i;:::-;28439:61;;28511:19;28562:2;;28548:11;:16;;;;:::i;:::-;28532:33;::::0;:12;:33:::1;:::i;:::-;28511:54;;28576:29;28622:2;;28608:11;:16;;;;:::i;:::-;28576:48:::0;-1:-1:-1;28638:25:0;;28635:108:::1;;28679:61;28692:24;28718:21;28679:12;:61::i;:::-;28787:2;::::0;28753:13:::1;::::0;28769:15:::1;:11:::0;28783:1:::1;28769:15;:::i;:::-;:20;;;;:::i;:::-;28753:36:::0;-1:-1:-1;28803:9:0;;28800:58:::1;;28834:4;::::0;28826:29:::1;::::0;-1:-1:-1;;;;;28834:4:0;;::::1;::::0;28826:29;::::1;;;::::0;28849:5;;28834:4:::1;28826:29:::0;28834:4;28826:29;28849:5;28834:4;28826:29;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;28800:58;-1:-1:-1::0;;13520:8:0;:16;;-1:-1:-1;;13520:16:0;;;-1:-1:-1;;;;;;;28095:770:0:o;25336:814::-;25458:28;25489:36;25500:7;25509;25518:6;25489:10;:36::i;:::-;-1:-1:-1;;;;;25540:19:0;;;;;;:11;:19;;;;;;25458:67;;-1:-1:-1;25540:19:0;;25536:88;;;-1:-1:-1;;;;;25599:15:0;;;;;;:7;:15;;;;;;:23;;25615:7;;25599:23;:::i;:::-;-1:-1:-1;;;;;25581:15:0;;;;;;:7;:15;;;;;:41;25536:88;-1:-1:-1;;;;;25638:22:0;;;;;;:11;:22;;;;;;;;25634:106;;;25721:17;;;;-1:-1:-1;;;;;25702:18:0;;;;;;:7;:18;;;;;;:36;;25721:17;25702:36;:::i;:::-;-1:-1:-1;;;;;25681:18:0;;;;;;:7;:18;;;;;:57;25634:106;25784:9;;-1:-1:-1;;;;;25768:15:0;;25784:9;25768:15;;;:7;:15;;;;;;:25;;25784:9;25768:25;:::i;:::-;-1:-1:-1;;;;;25750:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;25844:17;;;25825:18;;;;;;;;;;:36;;25844:17;25825:36;:::i;:::-;-1:-1:-1;;;;;25804:18:0;;;;;;:7;:18;;;;;;;:57;;;;25884:6;;;25892;;;;25872:27;;25884:6;25872:11;:27::i;:::-;25910:41;25925:1;:12;;;25938:1;:12;;;25910:14;:41::i;:::-;25962:42;25977:1;:12;;;25991:1;:12;;;25962:14;:42::i;:::-;26037:9;-1:-1:-1;;;;;26020:46:0;26029:6;-1:-1:-1;;;;;26020:46:0;;26048:1;:17;;;26020:46;;;;14522:25:1;;14510:2;14495:18;;14477:76;26020:46:0;;;;;;;;26107:4;-1:-1:-1;;;;;26082:60:0;26091:6;-1:-1:-1;;;;;26082:60:0;;26129:1;:12;;;26114:1;:12;;;:27;;;;:::i;:::-;26082:60;;14522:25:1;;;14510:2;14495:18;26082:60:0;;;;;;;25336:814;;;;;;:::o;22456:531::-;22553:7;;22589;;22506;;;;;22607:270;22631:9;:16;22627:20;;22607:270;;;22697:7;22673;:21;22681:9;22691:1;22681:12;;;;;;-1:-1:-1;;;22681:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22681:12:0;22673:21;;;;;;;;;;;;;:31;;:66;;;22732:7;22708;:21;22716:9;22726:1;22716:12;;;;;;-1:-1:-1;;;22716:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22716:12:0;22708:21;;;;;;;;;;;;;:31;22673:66;22669:97;;;22749:7;;22758;;22741:25;;;;;;;22456:531;;:::o;22669:97::-;22799:7;:21;22807:9;22817:1;22807:12;;;;;;-1:-1:-1;;;22807:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22807:12:0;22799:21;;;;;;;;;;;;;22791:29;;:7;:29;:::i;:::-;22781:39;;22853:7;:21;22861:9;22871:1;22861:12;;;;;;-1:-1:-1;;;22861:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22861:12:0;22853:21;;;;;;;;;;;;;22845:29;;:7;:29;:::i;:::-;22835:39;-1:-1:-1;22649:3:0;;;;:::i;:::-;;;;22607:270;;;;22909:7;;22901;;:15;;;;:::i;:::-;22891:7;:25;22887:56;;;22926:7;;22935;;22918:25;;;;;;22456:531;;:::o;22887:56::-;22962:7;;22971;;-1:-1:-1;22456:531:0;-1:-1:-1;22456:531:0:o;20892:775::-;20979:28;;:::i;:::-;21024:7;21020:77;;21046:17;;;:27;;;21086:8;;21020:77;21110:6;21107:534;;;21149:12;:16;21166:4;;21141:24;;:7;:24;:::i;:::-;:29;;;;:::i;:::-;21132:6;;;:38;21208:22;;21231:4;;21200:30;;:7;:30;:::i;:::-;:35;;;;:::i;:::-;21185:12;;;:50;21273:22;;21296:4;;21265:30;;:7;:30;:::i;:::-;:35;;;;:::i;:::-;21250:12;;;:50;;;21350:12;;;;21343:6;;;;21335:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;21315:17;;;:60;21107:534;;;21424:8;:12;21437:4;;21416:20;;:7;:20;:::i;:::-;:25;;;;:::i;:::-;21407:6;;;:34;21479:18;;21498:4;;21471:26;;:7;:26;:::i;:::-;:31;;;;:::i;:::-;21456:12;;;:46;21540:18;;21559:4;;21532:26;;:7;:26;:::i;:::-;:31;;;;:::i;:::-;21517:12;;;:46;;;21613:12;;;;21606:6;;;;21598:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;21578:17;;;:60;20892:775;;;;;:::o;21675:607::-;21800:15;;;;;21917:19;21925:11;21917:7;:19;:::i;:::-;21907:29;;21951:7;21947:60;;-1:-1:-1;21980:7:0;;-1:-1:-1;21998:1:0;;-1:-1:-1;21998:1:0;;-1:-1:-1;21998:1:0;21973:31;;21947:60;22031:11;22024:1;:6;;;:18;;;;:::i;:::-;22017:25;;22079:11;22066:1;:12;;;:24;;;;:::i;:::-;22053:37;;22127:11;22114:1;:12;;;:24;;;;:::i;:::-;22101:37;-1:-1:-1;22101:37:0;22181:10;22168:12;22176:4;22168:7;:12;:::i;:::-;:23;;;;:::i;:::-;:34;;;;:::i;:::-;22149:53;;21675:607;;;;;;;;;;:::o;29457:441::-;29547:16;;;29561:1;29547:16;;;;;;;;29523:21;;29547:16;;;;;;;;;;-1:-1:-1;29547:16:0;29523:40;;29592:4;29574;29579:1;29574:7;;;;;;-1:-1:-1;;;29574:7:0;;;;;;;;;-1:-1:-1;;;;;29574:23:0;;;:7;;;;;;;;;:23;29618:4;;29608:7;;29618:4;;;29608;;29618;;29608:7;;;;-1:-1:-1;;;29608:7:0;;;;;;;;;-1:-1:-1;;;;;29608:14:0;;;:7;;;;;;;;;:14;29667:6;;29635:53;;29652:4;;29667:6;29676:11;29635:8;:53::i;:::-;29701:6;;:187;;-1:-1:-1;;;29701:187:0;;-1:-1:-1;;;;;29701:6:0;;;;:57;;:187;;29773:11;;29701:6;;29815:4;;29842;;29862:15;;29701:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28873:340;28986:6;;28954:53;;28971:4;;-1:-1:-1;;;;;28986:6:0;28995:11;28954:8;:53::i;:::-;29020:6;;29161:3;;29020:185;;-1:-1:-1;;;29020:185:0;;29083:4;29020:185;;;6462:34:1;6512:18;;;6505:34;;;29020:6:0;6555:18:1;;;6548:34;;;6598:18;;;6591:34;-1:-1:-1;;;;;29161:3:0;;;6641:19:1;;;6634:44;29179:15:0;6694:19:1;;;6687:35;29020:6:0;;;:22;;29050:9;;6396:19:1;;29020:185:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28873:340;;:::o;19432:123::-;19510:4;19500:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;19525:11:0;:22;;19543:4;;19525:11;:15;;:22;;19543:4;;19525:22;:::i;:::-;;;;-1:-1:-1;;;;19432:123:0:o;19935:284::-;20042:10;20018:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;20088:4:0;20068:26;;;;:11;:26;;;;;;;;20065:101;;;20136:4;20120:22;;;;:7;:22;;;;;:34;;20144:10;;20120:22;:34;;20144:10;;20120:34;:::i;:::-;;;;-1:-1:-1;;20065:101:0;20192:4;20176:22;;;;:7;:22;;;;;:35;;20201:10;;20176:22;:35;;20201:10;;20176:35;:::i;20227:257::-;20334:10;20310:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;20372:4:0;;-1:-1:-1;;;;;20372:4:0;20360:17;;;;:11;:17;;;;;;;;20357:83;;;20411:4;;-1:-1:-1;;;;;20411:4:0;20403:13;;;;:7;:13;;;;;:25;;20418:10;;20403:13;:25;;20418:10;;20403:25;:::i;:::-;;;;-1:-1:-1;;20357:83:0;20458:4;;-1:-1:-1;;;;;20458:4:0;20450:13;;;;:7;:13;;;;;:26;;20466:10;;20450:13;:26;;20466:10;;20450:26;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:196::-;251:6;304:2;292:9;283:7;279:23;275:32;272:2;;;325:6;317;310:22;272:2;353:29;372:9;353:29;:::i;393:270::-;461:6;469;522:2;510:9;501:7;497:23;493:32;490:2;;;543:6;535;528:22;490:2;571:29;590:9;571:29;:::i;:::-;561:39;;619:38;653:2;642:9;638:18;619:38;:::i;:::-;609:48;;480:183;;;;;:::o;668:419::-;754:6;762;770;778;831:3;819:9;810:7;806:23;802:33;799:2;;;853:6;845;838:22;799:2;881:29;900:9;881:29;:::i;:::-;871:39;;929:38;963:2;952:9;948:18;929:38;:::i;:::-;919:48;;986:38;1020:2;1009:9;1005:18;986:38;:::i;:::-;976:48;;1043:38;1077:2;1066:9;1062:18;1043:38;:::i;:::-;1033:48;;789:298;;;;;;;:::o;1092:338::-;1169:6;1177;1185;1238:2;1226:9;1217:7;1213:23;1209:32;1206:2;;;1259:6;1251;1244:22;1206:2;1287:29;1306:9;1287:29;:::i;:::-;1277:39;;1335:38;1369:2;1358:9;1354:18;1335:38;:::i;:::-;1325:48;;1420:2;1409:9;1405:18;1392:32;1382:42;;1196:234;;;;;:::o;1435:407::-;1521:6;1529;1537;1545;1598:3;1586:9;1577:7;1573:23;1569:33;1566:2;;;1620:6;1612;1605:22;1566:2;1648:29;1667:9;1648:29;:::i;:::-;1638:39;;1696:38;1730:2;1719:9;1715:18;1696:38;:::i;:::-;1556:286;;1686:48;;-1:-1:-1;;;;1781:2:1;1766:18;;1753:32;;1832:2;1817:18;1804:32;;1556:286::o;1847:325::-;1912:6;1920;1973:2;1961:9;1952:7;1948:23;1944:32;1941:2;;;1994:6;1986;1979:22;1941:2;2022:29;2041:9;2022:29;:::i;:::-;2012:39;;2101:2;2090:9;2086:18;2073:32;2114:28;2136:5;2114:28;:::i;:::-;2161:5;2151:15;;;1931:241;;;;;:::o;2177:264::-;2245:6;2253;2306:2;2294:9;2285:7;2281:23;2277:32;2274:2;;;2327:6;2319;2312:22;2274:2;2355:29;2374:9;2355:29;:::i;:::-;2345:39;2431:2;2416:18;;;;2403:32;;-1:-1:-1;;;2264:177:1:o;2446:255::-;2513:6;2566:2;2554:9;2545:7;2541:23;2537:32;2534:2;;;2587:6;2579;2572:22;2534:2;2624:9;2618:16;2643:28;2665:5;2643:28;:::i;2706:325::-;2771:6;2779;2832:2;2820:9;2811:7;2807:23;2803:32;2800:2;;;2853:6;2845;2838:22;2800:2;2897:9;2884:23;2916:28;2938:5;2916:28;:::i;3036:319::-;3101:6;3109;3162:2;3150:9;3141:7;3137:23;3133:32;3130:2;;;3183:6;3175;3168:22;3130:2;3227:9;3214:23;3246:28;3268:5;3246:28;:::i;3360:426::-;3423:6;3431;3484:2;3472:9;3463:7;3459:23;3455:32;3452:2;;;3505:6;3497;3490:22;3452:2;3549:9;3536:23;3568:28;3590:5;3568:28;:::i;:::-;3615:5;-1:-1:-1;3672:2:1;3657:18;;3644:32;3720:4;3707:18;;3695:31;;3685:2;;3745:6;3737;3730:22;3791:190;3850:6;3903:2;3891:9;3882:7;3878:23;3874:32;3871:2;;;3924:6;3916;3909:22;3871:2;-1:-1:-1;3952:23:1;;3861:120;-1:-1:-1;3861:120:1:o;3986:194::-;4056:6;4109:2;4097:9;4088:7;4084:23;4080:32;4077:2;;;4130:6;4122;4115:22;4077:2;-1:-1:-1;4158:16:1;;4067:113;-1:-1:-1;4067:113:1:o;4185:319::-;4250:6;4258;4311:2;4299:9;4290:7;4286:23;4282:32;4279:2;;;4332:6;4324;4317:22;4279:2;4373:9;4360:23;4350:33;;4433:2;4422:9;4418:18;4405:32;4446:28;4468:5;4446:28;:::i;4509:258::-;4577:6;4585;4638:2;4626:9;4617:7;4613:23;4609:32;4606:2;;;4659:6;4651;4644:22;4606:2;-1:-1:-1;;4687:23:1;;;4757:2;4742:18;;;4729:32;;-1:-1:-1;4596:171:1:o;4772:326::-;4849:6;4857;4865;4918:2;4906:9;4897:7;4893:23;4889:32;4886:2;;;4939:6;4931;4924:22;4886:2;-1:-1:-1;;4967:23:1;;;5037:2;5022:18;;5009:32;;-1:-1:-1;5088:2:1;5073:18;;;5060:32;;4876:222;-1:-1:-1;4876:222:1:o;5103:316::-;5191:6;5199;5207;5260:2;5248:9;5239:7;5235:23;5231:32;5228:2;;;5281:6;5273;5266:22;5228:2;5315:9;5309:16;5299:26;;5365:2;5354:9;5350:18;5344:25;5334:35;;5409:2;5398:9;5394:18;5388:25;5378:35;;5218:201;;;;;:::o;6925:603::-;7037:4;7066:2;7095;7084:9;7077:21;7127:6;7121:13;7170:6;7165:2;7154:9;7150:18;7143:34;7195:4;7208:140;7222:6;7219:1;7216:13;7208:140;;;7317:14;;;7313:23;;7307:30;7283:17;;;7302:2;7279:26;7272:66;7237:10;;7208:140;;;7366:6;7363:1;7360:13;7357:2;;;7436:4;7431:2;7422:6;7411:9;7407:22;7403:31;7396:45;7357:2;-1:-1:-1;7512:2:1;7491:15;-1:-1:-1;;7487:29:1;7472:45;;;;7519:2;7468:54;;7046:482;-1:-1:-1;;;7046:482:1:o;11675:356::-;11877:2;11859:21;;;11896:18;;;11889:30;11955:34;11950:2;11935:18;;11928:62;12022:2;12007:18;;11849:182::o;14558:983::-;14820:4;14868:3;14857:9;14853:19;14899:6;14888:9;14881:25;14925:2;14963:6;14958:2;14947:9;14943:18;14936:34;15006:3;15001:2;14990:9;14986:18;14979:31;15030:6;15065;15059:13;15096:6;15088;15081:22;15134:3;15123:9;15119:19;15112:26;;15173:2;15165:6;15161:15;15147:29;;15194:4;15207:195;15221:6;15218:1;15215:13;15207:195;;;15286:13;;-1:-1:-1;;;;;15282:39:1;15270:52;;15377:15;;;;15342:12;;;;15318:1;15236:9;15207:195;;;-1:-1:-1;;;;;;;15458:32:1;;;;15453:2;15438:18;;15431:60;-1:-1:-1;;;15522:3:1;15507:19;15500:35;15419:3;14829:712;-1:-1:-1;;;14829:712:1:o;15735:128::-;15775:3;15806:1;15802:6;15799:1;15796:13;15793:2;;;15812:18;;:::i;:::-;-1:-1:-1;15848:9:1;;15783:80::o;15868:217::-;15908:1;15934;15924:2;;-1:-1:-1;;;15959:31:1;;16013:4;16010:1;16003:15;16041:4;15966:1;16031:15;15924:2;-1:-1:-1;16070:9:1;;15914:171::o;16090:168::-;16130:7;16196:1;16192;16188:6;16184:14;16181:1;16178:21;16173:1;16166:9;16159:17;16155:45;16152:2;;;16203:18;;:::i;:::-;-1:-1:-1;16243:9:1;;16142:116::o;16263:125::-;16303:4;16331:1;16328;16325:8;16322:2;;;16336:18;;:::i;:::-;-1:-1:-1;16373:9:1;;16312:76::o;16393:135::-;16432:3;-1:-1:-1;;16453:17:1;;16450:2;;;16473:18;;:::i;:::-;-1:-1:-1;16520:1:1;16509:13;;16440:88::o;16533:127::-;16594:10;16589:3;16585:20;16582:1;16575:31;16625:4;16622:1;16615:15;16649:4;16646:1;16639:15;16665:118;16751:5;16744:13;16737:21;16730:5;16727:32;16717:2;;16773:1;16770;16763:12
Swarm Source
ipfs://db51c509fe534ac5433f2d265b7f5d604c7514d5816383db3196cc37f0292739
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.