More Info
Private Name Tags
ContractCreator
TokenTracker
Multichain Info
1 address found via
Latest 25 from a total of 1,845 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 16476873 | 42 days ago | IN | 0 ETH | 0 | ||||
Transfer | 16476843 | 42 days ago | IN | 0 ETH | 0.00000019 | ||||
Transfer | 13357229 | 114 days ago | IN | 0 ETH | 0.00000009 | ||||
Approve | 13255285 | 116 days ago | IN | 0 ETH | 0.00000005 | ||||
Transfer | 11986259 | 146 days ago | IN | 0 ETH | 0.00000009 | ||||
Approve | 10176739 | 188 days ago | IN | 0 ETH | 0.00000006 | ||||
Transfer | 8702825 | 222 days ago | IN | 0 ETH | 0.00000148 | ||||
Approve | 8130687 | 235 days ago | IN | 0 ETH | 0.00000054 | ||||
Approve | 7230374 | 256 days ago | IN | 0 ETH | 0.00000005 | ||||
Approve | 6595557 | 270 days ago | IN | 0 ETH | 0.00000014 | ||||
Approve | 6410029 | 275 days ago | IN | 0 ETH | 0.00000002 | ||||
Approve | 5030935 | 307 days ago | IN | 0 ETH | 0.00001797 | ||||
Approve | 4753770 | 313 days ago | IN | 0 ETH | 0.0000007 | ||||
Approve | 4495669 | 319 days ago | IN | 0 ETH | 0.00000047 | ||||
Transfer | 4400085 | 321 days ago | IN | 0 ETH | 0.00000206 | ||||
Approve | 4328814 | 323 days ago | IN | 0 ETH | 0.00000042 | ||||
Approve | 4207909 | 326 days ago | IN | 0 ETH | 0.00000064 | ||||
Transfer | 3737244 | 337 days ago | IN | 0 ETH | 0.00000184 | ||||
Approve | 3557404 | 341 days ago | IN | 0 ETH | 0.00000009 | ||||
Approve | 3518452 | 342 days ago | IN | 0 ETH | 0.00000054 | ||||
Transfer | 3189467 | 349 days ago | IN | 0 ETH | 0.00000528 | ||||
Transfer | 3177895 | 350 days ago | IN | 0 ETH | 0.0002745 | ||||
Transfer | 3177886 | 350 days ago | IN | 0 ETH | 0.00027448 | ||||
Transfer | 3177859 | 350 days ago | IN | 0 ETH | 0.0002745 | ||||
Transfer | 3177841 | 350 days ago | IN | 0 ETH | 0.00027447 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
219178 | 418 days ago | 0.01665862 ETH | ||||
219178 | 418 days ago | 0.00003266 ETH | ||||
219178 | 418 days ago | 0.00832931 ETH | ||||
219178 | 418 days ago | 0.02498793 ETH | ||||
217274 | 418 days ago | 0.02086764 ETH | ||||
217274 | 418 days ago | 0.00004915 ETH | ||||
217274 | 418 days ago | 0.01043382 ETH | ||||
217274 | 418 days ago | 0.03130146 ETH | ||||
216092 | 418 days ago | 0.0282339 ETH | ||||
216092 | 418 days ago | 0.00008198 ETH | ||||
216092 | 418 days ago | 0.01411695 ETH | ||||
216092 | 418 days ago | 0.04235085 ETH | ||||
215213 | 418 days ago | 0.02232028 ETH | ||||
215213 | 418 days ago | 0.00005487 ETH | ||||
215213 | 418 days ago | 0.01116014 ETH | ||||
215213 | 418 days ago | 0.03348042 ETH | ||||
214600 | 418 days ago | 0.01753318 ETH | ||||
214600 | 418 days ago | 0.00003592 ETH | ||||
214600 | 418 days ago | 0.00876659 ETH | ||||
214600 | 418 days ago | 0.02629977 ETH | ||||
213918 | 418 days ago | 0.0113925 ETH | ||||
213918 | 418 days ago | 0.00001615 ETH | ||||
213918 | 418 days ago | 0.00569625 ETH | ||||
213918 | 418 days ago | 0.01708875 ETH | ||||
213901 | 418 days ago | 0.016983 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
PACMAN
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity)
/** *Submitted for verification at blastscan.io on 2024-02-29 */ /** * PACMAN ON BLAST Pacman.wtf https://t.me/pacmanblast */ // SPDX-License-Identifier: UNLICENSE pragma solidity ^0.8.7; interface IBEP20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public 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); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } library Address { 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"); } } contract PACMAN is Context, IBEP20, Ownable { using Address for address payable; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcluded; address[] private _excluded; bool public tradingEnabled; bool public swapEnabled; bool private swapping; //Anti Dump mapping(address => uint256) private _lastSell; bool public coolDownEnabled = true; uint256 public coolDownTime = 30 seconds; IRouter public router; address public pair; uint8 private constant _decimals = 9; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1e9 * 10**_decimals; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 public swapTokensAtAmount = 1e6 * 10**9; uint256 public maxBuyLimit = 1e7 * 10**9; uint256 public maxSellLimit = 1e7 * 10**9; uint256 public maxWalletLimit = 1e7 * 10**9; uint256 public genesis_block; uint256 private deadline = 3; address public deadWallet = 0x000000000000000000000000000000000000dEaD; address public marketingWallet = 0x666DC5F72903CC8966321f3f394958279a5F706d; address public PrizePoolWallet = 0xD6098FE7742160C130433375b27F9Bf3bfBa0078; string private constant _name = "PACMAN"; string private constant _symbol = "PMAN"; struct Taxes { uint256 rfi; uint256 marketing; uint256 liquidity; uint256 PrizePoolWallet; } Taxes public taxes = Taxes(0, 2, 1, 2); Taxes public sellTaxes = Taxes(0, 5, 1, 2); Taxes private launchtax = Taxes(0, 99, 0, 0); struct TotFeesPaidStruct { uint256 rfi; uint256 marketing; uint256 liquidity; uint256 PrizePoolWallet; } TotFeesPaidStruct public totFeesPaid; struct valuesFromGetValues { uint256 rAmount; uint256 rTransferAmount; uint256 rRfi; uint256 rMarketing; uint256 rLiquidity; uint256 rPrizePoolWallet; uint256 tTransferAmount; uint256 tRfi; uint256 tMarketing; uint256 tLiquidity; uint256 tPrizePoolWallet; } event FeesChanged(); event UpdatedRouter(address oldRouter, address newRouter); modifier lockTheSwap() { swapping = true; _; swapping = false; } constructor() { address routerAddress = 0xE470699f6D0384E3eA68F1144E41d22C6c8fdEEf; IRouter _router = IRouter(routerAddress); address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH()); router = _router; pair = _pair; excludeFromReward(pair); excludeFromReward(deadWallet); excludeFromReward(PrizePoolWallet); _rOwned[owner()] = _rTotal; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[marketingWallet] = true; _isExcludedFromFee[PrizePoolWallet] = true; _isExcludedFromFee[deadWallet] = true; emit Transfer(address(0), owner(), _tTotal); } //std BEP20: 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; } //override BEP20: 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 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); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "BEP20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "BEP20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } 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, false); return s.rAmount; } else { valuesFromGetValues memory s = _getValues(tAmount, true, false, false); return s.rTransferAmount; } } function EnableTrading() external onlyOwner { require(!tradingEnabled, "Cannot re-enable trading"); tradingEnabled = !tradingEnabled; swapEnabled = true; genesis_block = block.number; } function updatedeadline(uint256 _deadline) external onlyOwner { require(!tradingEnabled, "Can't change when trading has started"); require(_deadline < 5,"Deadline should be less than 5 Blocks"); deadline = _deadline; } function tokenFromReflection(uint256 rAmount) public view returns (uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount / currentRate; } //@dev kept original RFI naming -> "reward" as in reflection function excludeFromReward(address account) public onlyOwner { require(!_isExcluded[account], "Account is already excluded"); if (_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(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 excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function setTaxes( uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _PrizePoolWallet ) public onlyOwner { require((_rfi + _marketing + _liquidity + _PrizePoolWallet ) <= 12, "Must keep fees at 12% or less"); taxes = Taxes(_rfi, _marketing, _liquidity, _PrizePoolWallet); emit FeesChanged(); } function setSellTaxes( uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _PrizePoolWallet ) public onlyOwner { require((_rfi + _marketing + _liquidity + _PrizePoolWallet ) <= 12, "Must keep fees at 12% or less"); sellTaxes = Taxes(_rfi, _marketing, _liquidity, _PrizePoolWallet); emit FeesChanged(); } function _reflectRfi(uint256 rRfi, uint256 tRfi) private { _rTotal -= rRfi; totFeesPaid.rfi += tRfi; } 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[address(this)]) { _tOwned[address(this)] += tMarketing; } _rOwned[address(this)] += rMarketing; } function _takePrizePoolWallet(uint256 rPrizePoolWallet, uint256 tPrizePoolWallet) private { totFeesPaid.PrizePoolWallet += tPrizePoolWallet; if (_isExcluded[address(this)]) { _tOwned[address(this)] += tPrizePoolWallet; } _rOwned[address(this)] += rPrizePoolWallet; } function _getValues( uint256 tAmount, bool takeFee, bool isSell, bool useLaunchTax ) private view returns (valuesFromGetValues memory to_return) { to_return = _getTValues(tAmount, takeFee, isSell, useLaunchTax); ( to_return.rAmount, to_return.rTransferAmount, to_return.rRfi, to_return.rMarketing, to_return.rLiquidity ) = _getRValues1(to_return, tAmount, takeFee, _getRate()); (to_return.rPrizePoolWallet) = _getRValues2( to_return, takeFee, _getRate() ); return to_return; } function _getTValues( uint256 tAmount, bool takeFee, bool isSell, bool useLaunchTax ) private view returns (valuesFromGetValues memory s) { if (!takeFee) { s.tTransferAmount = tAmount; return s; } Taxes memory temp; if (isSell && !useLaunchTax) temp = sellTaxes; else if (!useLaunchTax) temp = taxes; else temp = launchtax; s.tRfi = (tAmount * temp.rfi) / 100; s.tMarketing = (tAmount * temp.marketing) / 100; s.tLiquidity = (tAmount * temp.liquidity) / 100; s.tPrizePoolWallet = (tAmount * temp.PrizePoolWallet) / 100; s.tTransferAmount = tAmount - s.tRfi - s.tMarketing - s.tLiquidity - s.tPrizePoolWallet; return s; } function _getRValues1( 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; uint256 rPrizePoolWallet = s.tPrizePoolWallet * currentRate; rTransferAmount = rAmount - rRfi - rMarketing - rLiquidity - rPrizePoolWallet ; return (rAmount, rTransferAmount, rRfi, rMarketing, rLiquidity); } function _getRValues2( valuesFromGetValues memory s, bool takeFee, uint256 currentRate ) private pure returns ( uint256 rPrizePoolWallet ) { if (!takeFee) { return (0); } rPrizePoolWallet = s.tPrizePoolWallet * currentRate; return (rPrizePoolWallet); } 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), "BEP20: approve from the zero address"); require(spender != address(0), "BEP20: 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), "BEP20: transfer from the zero address"); require(to != address(0), "BEP20: 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 (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { require(tradingEnabled, "Trading not active"); } if (from == pair && !_isExcludedFromFee[to] && !swapping) { require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit"); require( balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit" ); } if ( from != pair && !_isExcludedFromFee[to] && !_isExcludedFromFee[from] && !swapping ) { require(amount <= maxSellLimit, "You are exceeding maxSellLimit"); if (to != pair) { require( balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit" ); } if (coolDownEnabled) { uint256 timePassed = block.timestamp - _lastSell[from]; require(timePassed >= coolDownTime, "Cooldown enabled"); _lastSell[from] = block.timestamp; } } bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount; if ( !swapping && swapEnabled && canSwap && from != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to] ) { if (to == pair) swapAndLiquify(swapTokensAtAmount, sellTaxes); else swapAndLiquify(swapTokensAtAmount, taxes); } bool takeFee = true; bool isSell = false; if (swapping || _isExcludedFromFee[from] || _isExcludedFromFee[to]) takeFee = false; if (to == pair) isSell = true; _tokenTransfer(from, to, amount, takeFee, isSell); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer( address sender, address recipient, uint256 tAmount, bool takeFee, bool isSell ) private { bool useLaunchTax = !_isExcludedFromFee[sender] && !_isExcludedFromFee[recipient] && block.number < genesis_block + deadline; valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSell, useLaunchTax); if (_isExcluded[sender]) { //from excluded _tOwned[sender] = _tOwned[sender] - tAmount; } if (_isExcluded[recipient]) { //to excluded _tOwned[recipient] = _tOwned[recipient] + s.tTransferAmount; } _rOwned[sender] = _rOwned[sender] - s.rAmount; _rOwned[recipient] = _rOwned[recipient] + s.rTransferAmount; if (s.rRfi > 0 || s.tRfi > 0) _reflectRfi(s.rRfi, s.tRfi); if (s.rLiquidity > 0 || s.tLiquidity > 0) { _takeLiquidity(s.rLiquidity, s.tLiquidity); emit Transfer( sender, address(this), s.tLiquidity + s.tMarketing + s.tPrizePoolWallet ); } if (s.rMarketing > 0 || s.tMarketing > 0) _takeMarketing(s.rMarketing, s.tMarketing); if (s.rPrizePoolWallet > 0 || s.tPrizePoolWallet > 0) _takePrizePoolWallet(s.rPrizePoolWallet, s.tPrizePoolWallet); emit Transfer(sender, recipient, s.tTransferAmount); } function swapAndLiquify(uint256 contractBalance, Taxes memory temp) private lockTheSwap { uint256 denominator = (temp.liquidity + temp.marketing + temp.PrizePoolWallet) * 2; if (denominator == 0){ return; } uint256 tokensToAddLiquidityWith = (contractBalance * temp.liquidity) / denominator; uint256 toSwap = contractBalance - tokensToAddLiquidityWith; uint256 initialBalance = address(this).balance; swapTokensForBNB(toSwap); uint256 deltaBalance = address(this).balance - initialBalance; uint256 unitBalance = deltaBalance / (denominator - temp.liquidity); uint256 bnbToAddLiquidityWith = unitBalance * temp.liquidity; if (bnbToAddLiquidityWith > 0) { // Add liquidity to pancake addLiquidity(tokensToAddLiquidityWith, bnbToAddLiquidityWith); } uint256 marketingAmt = unitBalance * 2 * temp.marketing; if (marketingAmt > 0) { payable(marketingWallet).sendValue(marketingAmt); } uint256 PrizePoolWalletAmt = unitBalance * 2 * temp.PrizePoolWallet; if (PrizePoolWalletAmt > 0) { payable(PrizePoolWallet).sendValue(PrizePoolWalletAmt); } } function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(router), tokenAmount); // add the liquidity router.addLiquidityETH{ value: bnbAmount }( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadWallet, block.timestamp ); } function swapTokensForBNB(uint256 tokenAmount) private { // generate the pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function bulkExcludeFee(address[] memory accounts, bool state) external onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = state; } } function updateMarketingWallet(address newWallet) external onlyOwner { require(newWallet != address(0),"Fee Address cannot be zero address"); marketingWallet = newWallet; } function updatePrizePoolWallet(address newWallet) external onlyOwner { require(newWallet != address(0),"Fee Address cannot be zero address"); PrizePoolWallet = newWallet; } function updateCooldown(bool state, uint256 time) external onlyOwner { require(time <= 60, "cooldown timer cannot exceed 1 minutes"); coolDownTime = time * 1 seconds; coolDownEnabled = state; } function updateSwapTokensAtAmount(uint256 amount) external onlyOwner { require(amount <= 1e7, "Cannot set swap threshold amount higher than 1% of tokens"); swapTokensAtAmount = amount * 10**_decimals; } function updateSwapEnabled(bool _enabled) external onlyOwner { swapEnabled = _enabled; } function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell, uint256 maxWallet) external onlyOwner { require(maxBuy >= 1e6, "Cannot set max buy amount lower than 0.1% of tokens"); require(maxSell >= 1e6, "Cannot set max sell amount lower than 0.1% of tokens%"); require(maxWallet >= 1e7, "Cannot set max wallet amount lower than 1% of tokens"); maxBuyLimit = maxBuy * 10**decimals(); maxSellLimit = maxSell * 10**decimals(); maxWalletLimit = maxWallet * 10**decimals(); } //Use this in case BNB are sent to the contract by mistake function rescueBNB(uint256 weiAmount) external onlyOwner { require(address(this).balance >= weiAmount, "insufficient BNB balance"); payable(msg.sender).transfer(weiAmount); } //Use this in case BEP20 Tokens are sent to the contract by mistake function rescueAnyBEP20Tokens(address _tokenAddr,address _to, uint256 _amount) public onlyOwner { require(_tokenAddr != address(this), "Owner can't claim contract's balance of its own tokens"); IBEP20(_tokenAddr).transfer(_to, _amount); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"}],"name":"UpdatedRouter","type":"event"},{"inputs":[],"name":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"PrizePoolWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExcludeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"coolDownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","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":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyBEP20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"PrizePoolWallet","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_PrizePoolWallet","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_PrizePoolWallet","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"PrizePoolWallet","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"PrizePoolWallet","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"updateCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updatePrizePoolWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updatedeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526009805460ff19166001178155601e600a908155620000249190620009a5565b6200003490633b9aca00620009b5565b600d81905562000046905f19620009e3565b62000053905f19620009f9565b600e5566038d7ea4c68000600f55662386f26fc10000601081905560118190556012556003601455601580546001600160a01b031990811661dead1790915560168054821673666dc5f72903cc8966321f3f394958279a5f706d1790556017805490911673d6098fe7742160c130433375b27f9bf3bfba007817905560408051608080820183525f808352600260208085018290526001858701819052606095860183905260188490556019839055601a819055601b839055865180860188528481526005818401819052818901839052908701849052601c859055601d55601e55601f9190915584519283018552818352606383820181905294830182905291909201829052819055602191909155602281905560235534801562000177575f80fd5b5062000183336200048b565b5f73e470699f6d0384e3ea68f1144e41d22c6c8fdeef90505f8190505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001dd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000203919062000a0f565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000275919062000a0f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002c0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002e6919062000a0f565b600b80546001600160a01b038086166001600160a01b031992831617909255600c805492841692909116821790559091506200032290620004da565b60155462000339906001600160a01b0316620004da565b60175462000350906001600160a01b0316620004da565b600e5460015f620003685f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120939093553083526004918290528220805460ff1916600190811790915591620003b55f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055601654821681526004909352818320805485166001908117909155601754821684528284208054861682179055601554909116835291208054909216179055620004335f546001600160a01b031690565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d546040516200047a91815260200190565b60405180910390a350505062000a61565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f546001600160a01b03163314620005395760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b0381165f9081526005602052604090205460ff1615620005a35760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640162000530565b6001600160a01b0381165f9081526001602052604090205415620005fd576001600160a01b0381165f90815260016020526040902054620005e49062000662565b6001600160a01b0382165f908152600260205260409020555b6001600160a01b03165f818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b5f600e54821115620006ca5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840162000530565b5f620006d5620006ea565b9050620006e3818462000a37565b9392505050565b5f8080620006f76200070f565b909250905062000708818362000a37565b9250505090565b600e54600d545f918291825b60065481101562000862578260015f6006848154811062000740576200074062000a4d565b5f9182526020808320909101546001600160a01b031683528201929092526040019020541180620007ac57508160025f6006848154811062000786576200078662000a4d565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b15620007c357600e54600d54945094505050509091565b60015f60068381548110620007dc57620007dc62000a4d565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546200080c9084620009f9565b925060025f6006838154811062000827576200082762000a4d565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054620008579083620009f9565b91506001016200071b565b50600d54600e5462000875919062000a37565b8210156200088d57600e54600d549350935050509091565b90939092509050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620008ea57815f1904821115620008ce57620008ce62000896565b80851615620008dc57918102915b93841c9390800290620008af565b509250929050565b5f8262000902575060016200099f565b816200091057505f6200099f565b8160018114620009295760028114620009345762000954565b60019150506200099f565b60ff84111562000948576200094862000896565b50506001821b6200099f565b5060208310610133831016604e8410600b841016171562000979575081810a6200099f565b620009858383620008aa565b805f19048211156200099b576200099b62000896565b0290505b92915050565b5f620006e360ff841683620008f2565b80820281158282048414176200099f576200099f62000896565b634e487b7160e01b5f52601260045260245ffd5b5f82620009f457620009f4620009cf565b500690565b818103818111156200099f576200099f62000896565b5f6020828403121562000a20575f80fd5b81516001600160a01b0381168114620006e3575f80fd5b5f8262000a485762000a48620009cf565b500490565b634e487b7160e01b5f52603260045260245ffd5b6136558062000a6f5f395ff3fe6080604052600436106102f6575f3560e01c806375f0a87411610189578063d257b34f116100d8578063ea2f0b3711610092578063f2fde38b1161006d578063f2fde38b1461093d578063f480fec21461095c578063f66895a31461097b578063f887ea401461099d575f80fd5b8063ea2f0b37146108e6578063edaa116814610905578063ee36e35914610924575f80fd5b8063d257b34f1461081b578063d2ce0db21461083a578063dd62ed3e1461084f578063e1b450ad14610893578063e2f45605146108b2578063e517f2b9146108c7575f80fd5b806395d89b4111610143578063a457c2d71161011e578063a457c2d71461079f578063a8aa1b31146107be578063a9059cbb146107dd578063aacebbe3146107fc575f80fd5b806395d89b41146107325780639ba5e4d51461075e578063a12a7d6114610780575f80fd5b806375f0a8741461066357806385141a771461068257806388f82020146106a15780638da5cb5b146106d85780638e2839ff146106f4578063924de9b714610713575f80fd5b80634549b03911610245578063652e2f04116101ff5780636ddd1713116101da5780636ddd1713146105d057806370a08231146105ee578063715018a61461060d578063728f8eea14610621575f80fd5b8063652e2f041461059157806366a88d96146105a65780636aa5b37f146105bb575f80fd5b80634549b039146104ad57806347c23092146104cc5780634ada218b146104eb57806352390c02146105045780635342acb414610523578063624a65a81461055a575f80fd5b80632d838119116102b0578063395093511161028b5780633950935114610431578063437823ec14610450578063441b1d301461046f578063442e801b1461048e575f80fd5b80632d838119146103d8578063313ce567146103f75780633685d41914610412575f80fd5b806306fdde0314610301578063095ea7b31461034157806318160ddd146103705780631d97b7cd1461038e57806323b872dd146103a4578063274a533c146103c3575f80fd5b366102fd57005b5f80fd5b34801561030c575f80fd5b506040805180820190915260068152652820a1a6a0a760d11b60208201525b604051610338919061305f565b60405180910390f35b34801561034c575f80fd5b5061036061035b3660046130cf565b6109bc565b6040519015158152602001610338565b34801561037b575f80fd5b50600d545b604051908152602001610338565b348015610399575f80fd5b506103a26109d2565b005b3480156103af575f80fd5b506103606103be3660046130f9565b610a79565b3480156103ce575f80fd5b5061038060135481565b3480156103e3575f80fd5b506103806103f2366004613137565b610b2a565b348015610402575f80fd5b5060405160098152602001610338565b34801561041d575f80fd5b506103a261042c36600461314e565b610ba5565b34801561043c575f80fd5b5061036061044b3660046130cf565b610d49565b34801561045b575f80fd5b506103a261046a36600461314e565b610d7f565b34801561047a575f80fd5b506103a2610489366004613137565b610dcb565b348015610499575f80fd5b506103a26104a836600461314e565b610e6e565b3480156104b8575f80fd5b506103806104c7366004613181565b610edf565b3480156104d7575f80fd5b506103a26104e63660046130f9565b610f6a565b3480156104f6575f80fd5b506007546103609060ff1681565b34801561050f575f80fd5b506103a261051e36600461314e565b611080565b34801561052e575f80fd5b5061036061053d36600461314e565b6001600160a01b03165f9081526004602052604090205460ff1690565b348015610565575f80fd5b50601754610579906001600160a01b031681565b6040516001600160a01b039091168152602001610338565b34801561059c575f80fd5b5061038060115481565b3480156105b1575f80fd5b5061038060125481565b3480156105c6575f80fd5b5061038060105481565b3480156105db575f80fd5b5060075461036090610100900460ff1681565b3480156105f9575f80fd5b5061038061060836600461314e565b6111cd565b348015610618575f80fd5b506103a2611229565b34801561062c575f80fd5b50601854601954601a54601b546106439392919084565b604080519485526020850193909352918301526060820152608001610338565b34801561066e575f80fd5b50601654610579906001600160a01b031681565b34801561068d575f80fd5b50601554610579906001600160a01b031681565b3480156106ac575f80fd5b506103606106bb36600461314e565b6001600160a01b03165f9081526005602052604090205460ff1690565b3480156106e3575f80fd5b505f546001600160a01b0316610579565b3480156106ff575f80fd5b506103a261070e3660046131c3565b61125d565b34801561071e575f80fd5b506103a261072d366004613295565b6112e5565b34801561073d575f80fd5b506040805180820190915260048152632826a0a760e11b602082015261032b565b348015610769575f80fd5b506024546025546026546027546106439392919084565b34801561078b575f80fd5b506103a261079a3660046132b0565b611328565b3480156107aa575f80fd5b506103606107b93660046130cf565b611421565b3480156107c9575f80fd5b50600c54610579906001600160a01b031681565b3480156107e8575f80fd5b506103606107f73660046130cf565b6114bb565b348015610807575f80fd5b506103a261081636600461314e565b6114c7565b348015610826575f80fd5b506103a2610835366004613137565b611538565b348015610845575f80fd5b50610380600a5481565b34801561085a575f80fd5b506103806108693660046132df565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561089e575f80fd5b506103a26108ad36600461330b565b6115f6565b3480156108bd575f80fd5b50610380600f5481565b3480156108d2575f80fd5b506103a26108e1366004613334565b6117bf565b3480156108f1575f80fd5b506103a261090036600461314e565b61186a565b348015610910575f80fd5b506103a261091f366004613137565b6118b3565b34801561092f575f80fd5b506009546103609060ff1681565b348015610948575f80fd5b506103a261095736600461314e565b6119a0565b348015610967575f80fd5b506103a26109763660046132b0565b611a3a565b348015610986575f80fd5b50601c54601d54601e54601f546106439392919084565b3480156109a8575f80fd5b50600b54610579906001600160a01b031681565b5f6109c8338484611b33565b5060015b92915050565b5f546001600160a01b03163314610a045760405162461bcd60e51b81526004016109fb90613350565b60405180910390fd5b60075460ff1615610a575760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e67000000000000000060448201526064016109fb565b6007805461ff001960ff8216151661ffff199091161761010017905543601355565b5f610a85848484611c56565b6001600160a01b0384165f90815260036020908152604080832033845290915290205482811015610b095760405162461bcd60e51b815260206004820152602860248201527f42455032303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109fb565b610b1d8533610b188685613399565b611b33565b60019150505b9392505050565b5f600e54821115610b905760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016109fb565b5f610b99612307565b9050610b2381846133ac565b5f546001600160a01b03163314610bce5760405162461bcd60e51b81526004016109fb90613350565b6001600160a01b0381165f9081526005602052604090205460ff16610c355760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c7564656400000000000000000060448201526064016109fb565b5f5b600654811015610d4557816001600160a01b031660068281548110610c5e57610c5e6133cb565b5f918252602090912001546001600160a01b031603610d3d5760068054610c8790600190613399565b81548110610c9757610c976133cb565b5f91825260209091200154600680546001600160a01b039092169183908110610cc257610cc26133cb565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556006805480610d1957610d196133df565b5f8281526020902081015f1990810180546001600160a01b03191690550190555050565b600101610c37565b5050565b335f8181526003602090815260408083206001600160a01b038716845290915281205490916109c8918590610b189086906133f3565b5f546001600160a01b03163314610da85760405162461bcd60e51b81526004016109fb90613350565b6001600160a01b03165f908152600460205260409020805460ff19166001179055565b5f546001600160a01b03163314610df45760405162461bcd60e51b81526004016109fb90613350565b80471015610e445760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e6365000000000000000060448201526064016109fb565b604051339082156108fc029083905f818181858888f19350505050158015610d45573d5f803e3d5ffd5b5f546001600160a01b03163314610e975760405162461bcd60e51b81526004016109fb90613350565b6001600160a01b038116610ebd5760405162461bcd60e51b81526004016109fb90613406565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b5f600d54831115610f325760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016109fb565b81610f4f575f610f458460015f80612328565b5191506109cc9050565b5f610f5d8460015f80612328565b6020015191506109cc9050565b5f546001600160a01b03163314610f935760405162461bcd60e51b81526004016109fb90613350565b306001600160a01b0384160361100a5760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016109fb565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303815f875af1158015611056573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061107a9190613448565b50505050565b5f546001600160a01b031633146110a95760405162461bcd60e51b81526004016109fb90613350565b6001600160a01b0381165f9081526005602052604090205460ff16156111115760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109fb565b6001600160a01b0381165f9081526001602052604090205415611168576001600160a01b0381165f9081526001602052604090205461114f90610b2a565b6001600160a01b0382165f908152600260205260409020555b6001600160a01b03165f818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6001600160a01b0381165f9081526005602052604081205460ff161561120857506001600160a01b03165f9081526002602052604090205490565b6001600160a01b0382165f908152600160205260409020546109cc90610b2a565b5f546001600160a01b031633146112525760405162461bcd60e51b81526004016109fb90613350565b61125b5f612387565b565b5f546001600160a01b031633146112865760405162461bcd60e51b81526004016109fb90613350565b5f5b82518110156112e0578160045f8584815181106112a7576112a76133cb565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101611288565b505050565b5f546001600160a01b0316331461130e5760405162461bcd60e51b81526004016109fb90613350565b600780549115156101000261ff0019909216919091179055565b5f546001600160a01b031633146113515760405162461bcd60e51b81526004016109fb90613350565b600c818361135f86886133f3565b61136991906133f3565b61137391906133f3565b11156113c15760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313225206f72206c65737300000060448201526064016109fb565b604080516080810182528581526020810185905280820184905260600182905260188590556019849055601a839055601b829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de15905f90a150505050565b335f9081526003602090815260408083206001600160a01b0386168452909152812054828110156114a25760405162461bcd60e51b815260206004820152602560248201527f42455032303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109fb565b6114b13385610b188685613399565b5060019392505050565b5f6109c8338484611c56565b5f546001600160a01b031633146114f05760405162461bcd60e51b81526004016109fb90613350565b6001600160a01b0381166115165760405162461bcd60e51b81526004016109fb90613406565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146115615760405162461bcd60e51b81526004016109fb90613350565b629896808111156115da5760405162461bcd60e51b815260206004820152603960248201527f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460448201527f20686967686572207468616e203125206f6620746f6b656e730000000000000060648201526084016109fb565b6115e66009600a613543565b6115f09082613551565b600f5550565b5f546001600160a01b0316331461161f5760405162461bcd60e51b81526004016109fb90613350565b620f424083101561168e5760405162461bcd60e51b815260206004820152603360248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152727468616e20302e3125206f6620746f6b656e7360681b60648201526084016109fb565b620f42408210156116ff5760405162461bcd60e51b815260206004820152603560248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015274207468616e20302e3125206f6620746f6b656e732560581b60648201526084016109fb565b6298968081101561176f5760405162461bcd60e51b815260206004820152603460248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f776044820152736572207468616e203125206f6620746f6b656e7360601b60648201526084016109fb565b61177b6009600a613543565b6117859084613551565b6010556117946009600a613543565b61179e9083613551565b6011556117ad6009600a613543565b6117b79082613551565b601255505050565b5f546001600160a01b031633146117e85760405162461bcd60e51b81526004016109fb90613350565b603c8111156118485760405162461bcd60e51b815260206004820152602660248201527f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642031206d604482015265696e7574657360d01b60648201526084016109fb565b611853816001613551565b600a55506009805460ff1916911515919091179055565b5f546001600160a01b031633146118935760405162461bcd60e51b81526004016109fb90613350565b6001600160a01b03165f908152600460205260409020805460ff19169055565b5f546001600160a01b031633146118dc5760405162461bcd60e51b81526004016109fb90613350565b60075460ff161561193d5760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b60648201526084016109fb565b6005811061199b5760405162461bcd60e51b815260206004820152602560248201527f446561646c696e652073686f756c64206265206c657373207468616e203520426044820152646c6f636b7360d81b60648201526084016109fb565b601455565b5f546001600160a01b031633146119c95760405162461bcd60e51b81526004016109fb90613350565b6001600160a01b038116611a2e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109fb565b611a3781612387565b50565b5f546001600160a01b03163314611a635760405162461bcd60e51b81526004016109fb90613350565b600c8183611a7186886133f3565b611a7b91906133f3565b611a8591906133f3565b1115611ad35760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313225206f72206c65737300000060448201526064016109fb565b6040805160808101825285815260208101859052808201849052606001829052601c859055601d849055601e839055601f829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de15905f90a150505050565b6001600160a01b038316611b955760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109fb565b6001600160a01b038216611bf65760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109fb565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611cba5760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109fb565b6001600160a01b038216611d1c5760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109fb565b5f8111611d7d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109fb565b611d86836111cd565b811115611def5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016109fb565b6001600160a01b0383165f9081526004602052604090205460ff16158015611e2f57506001600160a01b0382165f9081526004602052604090205460ff16155b15611e7b5760075460ff16611e7b5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b60448201526064016109fb565b600c546001600160a01b038481169116148015611eb057506001600160a01b0382165f9081526004602052604090205460ff16155b8015611ec5575060075462010000900460ff16155b15611f8157601054811115611f1c5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016109fb565b60125481611f29846111cd565b611f3391906133f3565b1115611f815760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016109fb565b600c546001600160a01b03848116911614801590611fb757506001600160a01b0382165f9081526004602052604090205460ff16155b8015611fdb57506001600160a01b0383165f9081526004602052604090205460ff16155b8015611ff0575060075462010000900460ff16155b15612151576011548111156120475760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016109fb565b600c546001600160a01b038381169116146120c15760125481612069846111cd565b61207391906133f3565b11156120c15760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016109fb565b60095460ff1615612151576001600160a01b0383165f908152600860205260408120546120ee9042613399565b9050600a548110156121355760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b60448201526064016109fb565b506001600160a01b0383165f9081526008602052604090204290555b5f600f5461215e306111cd565b600754911115915062010000900460ff161580156121835750600754610100900460ff165b801561218c5750805b80156121a65750600c546001600160a01b03858116911614155b80156121ca57506001600160a01b0384165f9081526004602052604090205460ff16155b80156121ee57506001600160a01b0383165f9081526004602052604090205460ff16155b1561227a57600c546001600160a01b039081169084160361224457600f5460408051608081018252601c548152601d546020820152601e5491810191909152601f54606082015261223f91906123d6565b61227a565b600f546040805160808101825260185481526019546020820152601a5491810191909152601b54606082015261227a91906123d6565b6007546001905f9062010000900460ff16806122ad57506001600160a01b0386165f9081526004602052604090205460ff165b806122cf57506001600160a01b0385165f9081526004602052604090205460ff165b156122d8575f91505b600c546001600160a01b03908116908616036122f2575060015b6122ff8686868585612536565b505050505050565b5f805f612312612850565b909250905061232181836133ac565b9250505090565b612330613010565b61233c858585856129c0565b905061235181868661234c612307565b612b6b565b608086015260608501526040840152602083015281526123798185612374612307565b612c17565b60a08201525b949350505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6007805462ff00001916620100001790556060810151602082015160408301515f9291612402916133f3565b61240c91906133f3565b612417906002613551565b9050805f036124265750612526565b5f818360400151856124389190613551565b61244291906133ac565b90505f61244f8286613399565b90504761245b82612c35565b5f6124668247613399565b90505f8660400151866124799190613399565b61248390836133ac565b90505f8760400151826124969190613551565b905080156124a8576124a88682612d7d565b60208801515f906124ba846002613551565b6124c49190613551565b905080156124e2576016546124e2906001600160a01b031682612e2e565b60608901515f906124f4856002613551565b6124fe9190613551565b9050801561251c5760175461251c906001600160a01b031682612e2e565b5050505050505050505b50506007805462ff000019169055565b6001600160a01b0385165f9081526004602052604081205460ff1615801561257657506001600160a01b0385165f9081526004602052604090205460ff16155b8015612590575060145460135461258d91906133f3565b43105b90505f61259f85858585612328565b6001600160a01b0388165f9081526005602052604090205490915060ff16156125fe576001600160a01b0387165f908152600260205260409020546125e5908690613399565b6001600160a01b0388165f908152600260205260409020555b6001600160a01b0386165f9081526005602052604090205460ff161561265e5760c08101516001600160a01b0387165f9081526002602052604090205461264591906133f3565b6001600160a01b0387165f908152600260205260409020555b80516001600160a01b0388165f908152600160205260409020546126829190613399565b6001600160a01b038089165f90815260016020908152604080832094909455840151918916815291909120546126b891906133f3565b6001600160a01b0387165f9081526001602052604090819020919091558101511515806126e857505f8160e00151115b156126ff576126ff81604001518260e00151612f43565b5f8160800151118061271557505f816101200151115b1561279a5761272d8160800151826101200151612f76565b306001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83610140015184610100015185610120015161277e91906133f3565b61278891906133f3565b60405190815260200160405180910390a35b5f816060015111806127b057505f816101000151115b156127c8576127c88160600151826101000151612fe8565b5f8160a0015111806127de57505f816101400151115b156127f6576127f68160a00151826101400151612ffc565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c0015160405161283f91815260200190565b60405180910390a350505050505050565b600e54600d545f918291825b60065481101561298f578260015f6006848154811061287d5761287d6133cb565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205411806128e557508160025f600684815481106128bf576128bf6133cb565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b156128fb57600e54600d54945094505050509091565b60015f60068381548110612911576129116133cb565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205461293f9084613399565b925060025f60068381548110612957576129576133cb565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546129859083613399565b915060010161285c565b50600d54600e546129a091906133ac565b8210156129b757600e54600d549350935050509091565b90939092509050565b6129c8613010565b836129d95760c0810185905261237f565b612a0060405180608001604052805f81526020015f81526020015f81526020015f81525090565b838015612a0b575082155b15612a3f575060408051608081018252601c548152601d546020820152601e5491810191909152601f546060820152612a9e565b82612a7357506040805160808101825260185481526019546020820152601a5491810191909152601b546060820152612a9e565b5060408051608081018252602080548252602154908201526022549181019190915260235460608201525b8051606490612aad9088613551565b612ab791906133ac565b60e08301526020810151606490612ace9088613551565b612ad891906133ac565b6101008301526040810151606490612af09088613551565b612afa91906133ac565b6101208301526060810151606490612b129088613551565b612b1c91906133ac565b610140830181905261012083015161010084015160e0850151612b3f908a613399565b612b499190613399565b612b539190613399565b612b5d9190613399565b60c083015250949350505050565b5f80808080612b7a8689613551565b945086612b9157508392505f915081905080612c0c565b858960e00151612ba19190613551565b925085896101000151612bb49190613551565b915085896101200151612bc79190613551565b90505f868a6101400151612bdb9190613551565b9050808284612bea878a613399565b612bf49190613399565b612bfe9190613399565b612c089190613399565b9450505b945094509450945094565b5f82612c2457505f610b23565b8184610140015161237f9190613551565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612c6857612c686133cb565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612cbf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ce39190613568565b81600181518110612cf657612cf66133cb565b6001600160a01b039283166020918202929092010152600b54612d1c9130911684611b33565b600b5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612d549085905f90869030904290600401613583565b5f604051808303815f87803b158015612d6b575f80fd5b505af11580156122ff573d5f803e3d5ffd5b600b54612d959030906001600160a01b031684611b33565b600b5460155460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612e02573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612e2791906135f4565b5050505050565b80471015612e7e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016109fb565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612ec7576040519150601f19603f3d011682016040523d82523d5f602084013e612ecc565b606091505b50509050806112e05760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016109fb565b81600e5f828254612f549190613399565b9091555050602480548291905f90612f6d9084906133f3565b90915550505050565b8060246002015f828254612f8a91906133f3565b9091555050305f9081526005602052604090205460ff1615612fca57305f9081526002602052604081208054839290612fc49084906133f3565b90915550505b305f9081526001602052604081208054849290612f6d9084906133f3565b8060246001015f828254612f8a91906133f3565b8060246003015f828254612f8a91906133f3565b6040518061016001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f602080835283518060208501525f5b8181101561308b5785810183015185820160400152820161306f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a37575f80fd5b80356130ca816130ab565b919050565b5f80604083850312156130e0575f80fd5b82356130eb816130ab565b946020939093013593505050565b5f805f6060848603121561310b575f80fd5b8335613116816130ab565b92506020840135613126816130ab565b929592945050506040919091013590565b5f60208284031215613147575f80fd5b5035919050565b5f6020828403121561315e575f80fd5b8135610b23816130ab565b8015158114611a37575f80fd5b80356130ca81613169565b5f8060408385031215613192575f80fd5b8235915060208301356131a481613169565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f80604083850312156131d4575f80fd5b823567ffffffffffffffff808211156131eb575f80fd5b818501915085601f8301126131fe575f80fd5b8135602082821115613212576132126131af565b8160051b604051601f19603f83011681018181108682111715613237576132376131af565b604052928352818301935084810182019289841115613254575f80fd5b948201945b838610156132795761326a866130bf565b85529482019493820193613259565b96506132889050878201613176565b9450505050509250929050565b5f602082840312156132a5575f80fd5b8135610b2381613169565b5f805f80608085870312156132c3575f80fd5b5050823594602084013594506040840135936060013592509050565b5f80604083850312156132f0575f80fd5b82356132fb816130ab565b915060208301356131a4816130ab565b5f805f6060848603121561331d575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215613345575f80fd5b82356130eb81613169565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156109cc576109cc613385565b5f826133c657634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b808201808211156109cc576109cc613385565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b5f60208284031215613458575f80fd5b8151610b2381613169565b600181815b8085111561349d57815f190482111561348357613483613385565b8085161561349057918102915b93841c9390800290613468565b509250929050565b5f826134b3575060016109cc565b816134bf57505f6109cc565b81600181146134d557600281146134df576134fb565b60019150506109cc565b60ff8411156134f0576134f0613385565b50506001821b6109cc565b5060208310610133831016604e8410600b841016171561351e575081810a6109cc565b6135288383613463565b805f190482111561353b5761353b613385565b029392505050565b5f610b2360ff8416836134a5565b80820281158282048414176109cc576109cc613385565b5f60208284031215613578575f80fd5b8151610b23816130ab565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156135d35784516001600160a01b0316835293830193918301916001016135ae565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215613606575f80fd5b835192506020840151915060408401519050925092509256fea264697066735822122056d7f6ad9eeb9316ce405ce3fee8165387a46ac45d2c04714222a97a92d741df64736f6c63430008180033
Deployed Bytecode
0x6080604052600436106102f6575f3560e01c806375f0a87411610189578063d257b34f116100d8578063ea2f0b3711610092578063f2fde38b1161006d578063f2fde38b1461093d578063f480fec21461095c578063f66895a31461097b578063f887ea401461099d575f80fd5b8063ea2f0b37146108e6578063edaa116814610905578063ee36e35914610924575f80fd5b8063d257b34f1461081b578063d2ce0db21461083a578063dd62ed3e1461084f578063e1b450ad14610893578063e2f45605146108b2578063e517f2b9146108c7575f80fd5b806395d89b4111610143578063a457c2d71161011e578063a457c2d71461079f578063a8aa1b31146107be578063a9059cbb146107dd578063aacebbe3146107fc575f80fd5b806395d89b41146107325780639ba5e4d51461075e578063a12a7d6114610780575f80fd5b806375f0a8741461066357806385141a771461068257806388f82020146106a15780638da5cb5b146106d85780638e2839ff146106f4578063924de9b714610713575f80fd5b80634549b03911610245578063652e2f04116101ff5780636ddd1713116101da5780636ddd1713146105d057806370a08231146105ee578063715018a61461060d578063728f8eea14610621575f80fd5b8063652e2f041461059157806366a88d96146105a65780636aa5b37f146105bb575f80fd5b80634549b039146104ad57806347c23092146104cc5780634ada218b146104eb57806352390c02146105045780635342acb414610523578063624a65a81461055a575f80fd5b80632d838119116102b0578063395093511161028b5780633950935114610431578063437823ec14610450578063441b1d301461046f578063442e801b1461048e575f80fd5b80632d838119146103d8578063313ce567146103f75780633685d41914610412575f80fd5b806306fdde0314610301578063095ea7b31461034157806318160ddd146103705780631d97b7cd1461038e57806323b872dd146103a4578063274a533c146103c3575f80fd5b366102fd57005b5f80fd5b34801561030c575f80fd5b506040805180820190915260068152652820a1a6a0a760d11b60208201525b604051610338919061305f565b60405180910390f35b34801561034c575f80fd5b5061036061035b3660046130cf565b6109bc565b6040519015158152602001610338565b34801561037b575f80fd5b50600d545b604051908152602001610338565b348015610399575f80fd5b506103a26109d2565b005b3480156103af575f80fd5b506103606103be3660046130f9565b610a79565b3480156103ce575f80fd5b5061038060135481565b3480156103e3575f80fd5b506103806103f2366004613137565b610b2a565b348015610402575f80fd5b5060405160098152602001610338565b34801561041d575f80fd5b506103a261042c36600461314e565b610ba5565b34801561043c575f80fd5b5061036061044b3660046130cf565b610d49565b34801561045b575f80fd5b506103a261046a36600461314e565b610d7f565b34801561047a575f80fd5b506103a2610489366004613137565b610dcb565b348015610499575f80fd5b506103a26104a836600461314e565b610e6e565b3480156104b8575f80fd5b506103806104c7366004613181565b610edf565b3480156104d7575f80fd5b506103a26104e63660046130f9565b610f6a565b3480156104f6575f80fd5b506007546103609060ff1681565b34801561050f575f80fd5b506103a261051e36600461314e565b611080565b34801561052e575f80fd5b5061036061053d36600461314e565b6001600160a01b03165f9081526004602052604090205460ff1690565b348015610565575f80fd5b50601754610579906001600160a01b031681565b6040516001600160a01b039091168152602001610338565b34801561059c575f80fd5b5061038060115481565b3480156105b1575f80fd5b5061038060125481565b3480156105c6575f80fd5b5061038060105481565b3480156105db575f80fd5b5060075461036090610100900460ff1681565b3480156105f9575f80fd5b5061038061060836600461314e565b6111cd565b348015610618575f80fd5b506103a2611229565b34801561062c575f80fd5b50601854601954601a54601b546106439392919084565b604080519485526020850193909352918301526060820152608001610338565b34801561066e575f80fd5b50601654610579906001600160a01b031681565b34801561068d575f80fd5b50601554610579906001600160a01b031681565b3480156106ac575f80fd5b506103606106bb36600461314e565b6001600160a01b03165f9081526005602052604090205460ff1690565b3480156106e3575f80fd5b505f546001600160a01b0316610579565b3480156106ff575f80fd5b506103a261070e3660046131c3565b61125d565b34801561071e575f80fd5b506103a261072d366004613295565b6112e5565b34801561073d575f80fd5b506040805180820190915260048152632826a0a760e11b602082015261032b565b348015610769575f80fd5b506024546025546026546027546106439392919084565b34801561078b575f80fd5b506103a261079a3660046132b0565b611328565b3480156107aa575f80fd5b506103606107b93660046130cf565b611421565b3480156107c9575f80fd5b50600c54610579906001600160a01b031681565b3480156107e8575f80fd5b506103606107f73660046130cf565b6114bb565b348015610807575f80fd5b506103a261081636600461314e565b6114c7565b348015610826575f80fd5b506103a2610835366004613137565b611538565b348015610845575f80fd5b50610380600a5481565b34801561085a575f80fd5b506103806108693660046132df565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561089e575f80fd5b506103a26108ad36600461330b565b6115f6565b3480156108bd575f80fd5b50610380600f5481565b3480156108d2575f80fd5b506103a26108e1366004613334565b6117bf565b3480156108f1575f80fd5b506103a261090036600461314e565b61186a565b348015610910575f80fd5b506103a261091f366004613137565b6118b3565b34801561092f575f80fd5b506009546103609060ff1681565b348015610948575f80fd5b506103a261095736600461314e565b6119a0565b348015610967575f80fd5b506103a26109763660046132b0565b611a3a565b348015610986575f80fd5b50601c54601d54601e54601f546106439392919084565b3480156109a8575f80fd5b50600b54610579906001600160a01b031681565b5f6109c8338484611b33565b5060015b92915050565b5f546001600160a01b03163314610a045760405162461bcd60e51b81526004016109fb90613350565b60405180910390fd5b60075460ff1615610a575760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e67000000000000000060448201526064016109fb565b6007805461ff001960ff8216151661ffff199091161761010017905543601355565b5f610a85848484611c56565b6001600160a01b0384165f90815260036020908152604080832033845290915290205482811015610b095760405162461bcd60e51b815260206004820152602860248201527f42455032303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109fb565b610b1d8533610b188685613399565b611b33565b60019150505b9392505050565b5f600e54821115610b905760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016109fb565b5f610b99612307565b9050610b2381846133ac565b5f546001600160a01b03163314610bce5760405162461bcd60e51b81526004016109fb90613350565b6001600160a01b0381165f9081526005602052604090205460ff16610c355760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c7564656400000000000000000060448201526064016109fb565b5f5b600654811015610d4557816001600160a01b031660068281548110610c5e57610c5e6133cb565b5f918252602090912001546001600160a01b031603610d3d5760068054610c8790600190613399565b81548110610c9757610c976133cb565b5f91825260209091200154600680546001600160a01b039092169183908110610cc257610cc26133cb565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556006805480610d1957610d196133df565b5f8281526020902081015f1990810180546001600160a01b03191690550190555050565b600101610c37565b5050565b335f8181526003602090815260408083206001600160a01b038716845290915281205490916109c8918590610b189086906133f3565b5f546001600160a01b03163314610da85760405162461bcd60e51b81526004016109fb90613350565b6001600160a01b03165f908152600460205260409020805460ff19166001179055565b5f546001600160a01b03163314610df45760405162461bcd60e51b81526004016109fb90613350565b80471015610e445760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e6365000000000000000060448201526064016109fb565b604051339082156108fc029083905f818181858888f19350505050158015610d45573d5f803e3d5ffd5b5f546001600160a01b03163314610e975760405162461bcd60e51b81526004016109fb90613350565b6001600160a01b038116610ebd5760405162461bcd60e51b81526004016109fb90613406565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b5f600d54831115610f325760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016109fb565b81610f4f575f610f458460015f80612328565b5191506109cc9050565b5f610f5d8460015f80612328565b6020015191506109cc9050565b5f546001600160a01b03163314610f935760405162461bcd60e51b81526004016109fb90613350565b306001600160a01b0384160361100a5760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016109fb565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303815f875af1158015611056573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061107a9190613448565b50505050565b5f546001600160a01b031633146110a95760405162461bcd60e51b81526004016109fb90613350565b6001600160a01b0381165f9081526005602052604090205460ff16156111115760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109fb565b6001600160a01b0381165f9081526001602052604090205415611168576001600160a01b0381165f9081526001602052604090205461114f90610b2a565b6001600160a01b0382165f908152600260205260409020555b6001600160a01b03165f818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6001600160a01b0381165f9081526005602052604081205460ff161561120857506001600160a01b03165f9081526002602052604090205490565b6001600160a01b0382165f908152600160205260409020546109cc90610b2a565b5f546001600160a01b031633146112525760405162461bcd60e51b81526004016109fb90613350565b61125b5f612387565b565b5f546001600160a01b031633146112865760405162461bcd60e51b81526004016109fb90613350565b5f5b82518110156112e0578160045f8584815181106112a7576112a76133cb565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101611288565b505050565b5f546001600160a01b0316331461130e5760405162461bcd60e51b81526004016109fb90613350565b600780549115156101000261ff0019909216919091179055565b5f546001600160a01b031633146113515760405162461bcd60e51b81526004016109fb90613350565b600c818361135f86886133f3565b61136991906133f3565b61137391906133f3565b11156113c15760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313225206f72206c65737300000060448201526064016109fb565b604080516080810182528581526020810185905280820184905260600182905260188590556019849055601a839055601b829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de15905f90a150505050565b335f9081526003602090815260408083206001600160a01b0386168452909152812054828110156114a25760405162461bcd60e51b815260206004820152602560248201527f42455032303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109fb565b6114b13385610b188685613399565b5060019392505050565b5f6109c8338484611c56565b5f546001600160a01b031633146114f05760405162461bcd60e51b81526004016109fb90613350565b6001600160a01b0381166115165760405162461bcd60e51b81526004016109fb90613406565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146115615760405162461bcd60e51b81526004016109fb90613350565b629896808111156115da5760405162461bcd60e51b815260206004820152603960248201527f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460448201527f20686967686572207468616e203125206f6620746f6b656e730000000000000060648201526084016109fb565b6115e66009600a613543565b6115f09082613551565b600f5550565b5f546001600160a01b0316331461161f5760405162461bcd60e51b81526004016109fb90613350565b620f424083101561168e5760405162461bcd60e51b815260206004820152603360248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152727468616e20302e3125206f6620746f6b656e7360681b60648201526084016109fb565b620f42408210156116ff5760405162461bcd60e51b815260206004820152603560248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015274207468616e20302e3125206f6620746f6b656e732560581b60648201526084016109fb565b6298968081101561176f5760405162461bcd60e51b815260206004820152603460248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f776044820152736572207468616e203125206f6620746f6b656e7360601b60648201526084016109fb565b61177b6009600a613543565b6117859084613551565b6010556117946009600a613543565b61179e9083613551565b6011556117ad6009600a613543565b6117b79082613551565b601255505050565b5f546001600160a01b031633146117e85760405162461bcd60e51b81526004016109fb90613350565b603c8111156118485760405162461bcd60e51b815260206004820152602660248201527f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642031206d604482015265696e7574657360d01b60648201526084016109fb565b611853816001613551565b600a55506009805460ff1916911515919091179055565b5f546001600160a01b031633146118935760405162461bcd60e51b81526004016109fb90613350565b6001600160a01b03165f908152600460205260409020805460ff19169055565b5f546001600160a01b031633146118dc5760405162461bcd60e51b81526004016109fb90613350565b60075460ff161561193d5760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b60648201526084016109fb565b6005811061199b5760405162461bcd60e51b815260206004820152602560248201527f446561646c696e652073686f756c64206265206c657373207468616e203520426044820152646c6f636b7360d81b60648201526084016109fb565b601455565b5f546001600160a01b031633146119c95760405162461bcd60e51b81526004016109fb90613350565b6001600160a01b038116611a2e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109fb565b611a3781612387565b50565b5f546001600160a01b03163314611a635760405162461bcd60e51b81526004016109fb90613350565b600c8183611a7186886133f3565b611a7b91906133f3565b611a8591906133f3565b1115611ad35760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313225206f72206c65737300000060448201526064016109fb565b6040805160808101825285815260208101859052808201849052606001829052601c859055601d849055601e839055601f829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de15905f90a150505050565b6001600160a01b038316611b955760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109fb565b6001600160a01b038216611bf65760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109fb565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611cba5760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109fb565b6001600160a01b038216611d1c5760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109fb565b5f8111611d7d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109fb565b611d86836111cd565b811115611def5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016109fb565b6001600160a01b0383165f9081526004602052604090205460ff16158015611e2f57506001600160a01b0382165f9081526004602052604090205460ff16155b15611e7b5760075460ff16611e7b5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b60448201526064016109fb565b600c546001600160a01b038481169116148015611eb057506001600160a01b0382165f9081526004602052604090205460ff16155b8015611ec5575060075462010000900460ff16155b15611f8157601054811115611f1c5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016109fb565b60125481611f29846111cd565b611f3391906133f3565b1115611f815760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016109fb565b600c546001600160a01b03848116911614801590611fb757506001600160a01b0382165f9081526004602052604090205460ff16155b8015611fdb57506001600160a01b0383165f9081526004602052604090205460ff16155b8015611ff0575060075462010000900460ff16155b15612151576011548111156120475760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016109fb565b600c546001600160a01b038381169116146120c15760125481612069846111cd565b61207391906133f3565b11156120c15760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016109fb565b60095460ff1615612151576001600160a01b0383165f908152600860205260408120546120ee9042613399565b9050600a548110156121355760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b60448201526064016109fb565b506001600160a01b0383165f9081526008602052604090204290555b5f600f5461215e306111cd565b600754911115915062010000900460ff161580156121835750600754610100900460ff165b801561218c5750805b80156121a65750600c546001600160a01b03858116911614155b80156121ca57506001600160a01b0384165f9081526004602052604090205460ff16155b80156121ee57506001600160a01b0383165f9081526004602052604090205460ff16155b1561227a57600c546001600160a01b039081169084160361224457600f5460408051608081018252601c548152601d546020820152601e5491810191909152601f54606082015261223f91906123d6565b61227a565b600f546040805160808101825260185481526019546020820152601a5491810191909152601b54606082015261227a91906123d6565b6007546001905f9062010000900460ff16806122ad57506001600160a01b0386165f9081526004602052604090205460ff165b806122cf57506001600160a01b0385165f9081526004602052604090205460ff165b156122d8575f91505b600c546001600160a01b03908116908616036122f2575060015b6122ff8686868585612536565b505050505050565b5f805f612312612850565b909250905061232181836133ac565b9250505090565b612330613010565b61233c858585856129c0565b905061235181868661234c612307565b612b6b565b608086015260608501526040840152602083015281526123798185612374612307565b612c17565b60a08201525b949350505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6007805462ff00001916620100001790556060810151602082015160408301515f9291612402916133f3565b61240c91906133f3565b612417906002613551565b9050805f036124265750612526565b5f818360400151856124389190613551565b61244291906133ac565b90505f61244f8286613399565b90504761245b82612c35565b5f6124668247613399565b90505f8660400151866124799190613399565b61248390836133ac565b90505f8760400151826124969190613551565b905080156124a8576124a88682612d7d565b60208801515f906124ba846002613551565b6124c49190613551565b905080156124e2576016546124e2906001600160a01b031682612e2e565b60608901515f906124f4856002613551565b6124fe9190613551565b9050801561251c5760175461251c906001600160a01b031682612e2e565b5050505050505050505b50506007805462ff000019169055565b6001600160a01b0385165f9081526004602052604081205460ff1615801561257657506001600160a01b0385165f9081526004602052604090205460ff16155b8015612590575060145460135461258d91906133f3565b43105b90505f61259f85858585612328565b6001600160a01b0388165f9081526005602052604090205490915060ff16156125fe576001600160a01b0387165f908152600260205260409020546125e5908690613399565b6001600160a01b0388165f908152600260205260409020555b6001600160a01b0386165f9081526005602052604090205460ff161561265e5760c08101516001600160a01b0387165f9081526002602052604090205461264591906133f3565b6001600160a01b0387165f908152600260205260409020555b80516001600160a01b0388165f908152600160205260409020546126829190613399565b6001600160a01b038089165f90815260016020908152604080832094909455840151918916815291909120546126b891906133f3565b6001600160a01b0387165f9081526001602052604090819020919091558101511515806126e857505f8160e00151115b156126ff576126ff81604001518260e00151612f43565b5f8160800151118061271557505f816101200151115b1561279a5761272d8160800151826101200151612f76565b306001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83610140015184610100015185610120015161277e91906133f3565b61278891906133f3565b60405190815260200160405180910390a35b5f816060015111806127b057505f816101000151115b156127c8576127c88160600151826101000151612fe8565b5f8160a0015111806127de57505f816101400151115b156127f6576127f68160a00151826101400151612ffc565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c0015160405161283f91815260200190565b60405180910390a350505050505050565b600e54600d545f918291825b60065481101561298f578260015f6006848154811061287d5761287d6133cb565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205411806128e557508160025f600684815481106128bf576128bf6133cb565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b156128fb57600e54600d54945094505050509091565b60015f60068381548110612911576129116133cb565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205461293f9084613399565b925060025f60068381548110612957576129576133cb565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546129859083613399565b915060010161285c565b50600d54600e546129a091906133ac565b8210156129b757600e54600d549350935050509091565b90939092509050565b6129c8613010565b836129d95760c0810185905261237f565b612a0060405180608001604052805f81526020015f81526020015f81526020015f81525090565b838015612a0b575082155b15612a3f575060408051608081018252601c548152601d546020820152601e5491810191909152601f546060820152612a9e565b82612a7357506040805160808101825260185481526019546020820152601a5491810191909152601b546060820152612a9e565b5060408051608081018252602080548252602154908201526022549181019190915260235460608201525b8051606490612aad9088613551565b612ab791906133ac565b60e08301526020810151606490612ace9088613551565b612ad891906133ac565b6101008301526040810151606490612af09088613551565b612afa91906133ac565b6101208301526060810151606490612b129088613551565b612b1c91906133ac565b610140830181905261012083015161010084015160e0850151612b3f908a613399565b612b499190613399565b612b539190613399565b612b5d9190613399565b60c083015250949350505050565b5f80808080612b7a8689613551565b945086612b9157508392505f915081905080612c0c565b858960e00151612ba19190613551565b925085896101000151612bb49190613551565b915085896101200151612bc79190613551565b90505f868a6101400151612bdb9190613551565b9050808284612bea878a613399565b612bf49190613399565b612bfe9190613399565b612c089190613399565b9450505b945094509450945094565b5f82612c2457505f610b23565b8184610140015161237f9190613551565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612c6857612c686133cb565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612cbf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ce39190613568565b81600181518110612cf657612cf66133cb565b6001600160a01b039283166020918202929092010152600b54612d1c9130911684611b33565b600b5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612d549085905f90869030904290600401613583565b5f604051808303815f87803b158015612d6b575f80fd5b505af11580156122ff573d5f803e3d5ffd5b600b54612d959030906001600160a01b031684611b33565b600b5460155460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612e02573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612e2791906135f4565b5050505050565b80471015612e7e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016109fb565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612ec7576040519150601f19603f3d011682016040523d82523d5f602084013e612ecc565b606091505b50509050806112e05760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016109fb565b81600e5f828254612f549190613399565b9091555050602480548291905f90612f6d9084906133f3565b90915550505050565b8060246002015f828254612f8a91906133f3565b9091555050305f9081526005602052604090205460ff1615612fca57305f9081526002602052604081208054839290612fc49084906133f3565b90915550505b305f9081526001602052604081208054849290612f6d9084906133f3565b8060246001015f828254612f8a91906133f3565b8060246003015f828254612f8a91906133f3565b6040518061016001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f602080835283518060208501525f5b8181101561308b5785810183015185820160400152820161306f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a37575f80fd5b80356130ca816130ab565b919050565b5f80604083850312156130e0575f80fd5b82356130eb816130ab565b946020939093013593505050565b5f805f6060848603121561310b575f80fd5b8335613116816130ab565b92506020840135613126816130ab565b929592945050506040919091013590565b5f60208284031215613147575f80fd5b5035919050565b5f6020828403121561315e575f80fd5b8135610b23816130ab565b8015158114611a37575f80fd5b80356130ca81613169565b5f8060408385031215613192575f80fd5b8235915060208301356131a481613169565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f80604083850312156131d4575f80fd5b823567ffffffffffffffff808211156131eb575f80fd5b818501915085601f8301126131fe575f80fd5b8135602082821115613212576132126131af565b8160051b604051601f19603f83011681018181108682111715613237576132376131af565b604052928352818301935084810182019289841115613254575f80fd5b948201945b838610156132795761326a866130bf565b85529482019493820193613259565b96506132889050878201613176565b9450505050509250929050565b5f602082840312156132a5575f80fd5b8135610b2381613169565b5f805f80608085870312156132c3575f80fd5b5050823594602084013594506040840135936060013592509050565b5f80604083850312156132f0575f80fd5b82356132fb816130ab565b915060208301356131a4816130ab565b5f805f6060848603121561331d575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215613345575f80fd5b82356130eb81613169565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156109cc576109cc613385565b5f826133c657634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b808201808211156109cc576109cc613385565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b5f60208284031215613458575f80fd5b8151610b2381613169565b600181815b8085111561349d57815f190482111561348357613483613385565b8085161561349057918102915b93841c9390800290613468565b509250929050565b5f826134b3575060016109cc565b816134bf57505f6109cc565b81600181146134d557600281146134df576134fb565b60019150506109cc565b60ff8411156134f0576134f0613385565b50506001821b6109cc565b5060208310610133831016604e8410600b841016171561351e575081810a6109cc565b6135288383613463565b805f190482111561353b5761353b613385565b029392505050565b5f610b2360ff8416836134a5565b80820281158282048414176109cc576109cc613385565b5f60208284031215613578575f80fd5b8151610b23816130ab565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156135d35784516001600160a01b0316835293830193918301916001016135ae565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215613606575f80fd5b835192506020840151915060408401519050925092509256fea264697066735822122056d7f6ad9eeb9316ce405ce3fee8165387a46ac45d2c04714222a97a92d741df64736f6c63430008180033
Deployed Bytecode Sourcemap
3386:22705:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6765:83;;;;;;;;;;-1:-1:-1;6835:5:0;;;;;;;;;;;;-1:-1:-1;;;6835:5:0;;;;6765:83;;;;;;;:::i;:::-;;;;;;;;7525:161;;;;;;;;;;-1:-1:-1;7525:161:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;7525:161:0;1162:187:1;7065:95:0;;;;;;;;;;-1:-1:-1;7145:7:0;;7065:95;;;1500:25:1;;;1488:2;1473:18;7065:95:0;1354:177:1;9591:226:0;;;;;;;;;;;;;:::i;:::-;;7694:448;;;;;;;;;;-1:-1:-1;7694:448:0;;;;;:::i;:::-;;:::i;4513:28::-;;;;;;;;;;;;;;;;10083:250;;;;;;;;;;-1:-1:-1;10083:250:0;;;;;:::i;:::-;;:::i;6951:83::-;;;;;;;;;;-1:-1:-1;6951:83:0;;4143:1;2324:36:1;;2312:2;2297:18;6951:83:0;2182:184:1;10747:473:0;;;;;;;;;;-1:-1:-1;10747:473:0;;;;;:::i;:::-;;:::i;8150:207::-;;;;;;;;;;-1:-1:-1;8150:207:0;;;;;:::i;:::-;;:::i;11228:111::-;;;;;;;;;;-1:-1:-1;11228:111:0;;;;;:::i;:::-;;:::i;25512:197::-;;;;;;;;;;-1:-1:-1;25512:197:0;;;;;:::i;:::-;;:::i;24133:195::-;;;;;;;;;;-1:-1:-1;24133:195:0;;;;;:::i;:::-;;:::i;9066:517::-;;;;;;;;;;-1:-1:-1;9066:517:0;;;;;:::i;:::-;;:::i;25790:261::-;;;;;;;;;;-1:-1:-1;25790:261:0;;;;;:::i;:::-;;:::i;3800:26::-;;;;;;;;;;-1:-1:-1;3800:26:0;;;;;;;;10407:332;;;;;;;;;;-1:-1:-1;10407:332:0;;;;;:::i;:::-;;:::i;11465:124::-;;;;;;;;;;-1:-1:-1;11465:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;11554:27:0;11530:4;11554:27;;;:18;:27;;;;;;;;;11465:124;4744:75;;;;;;;;;;-1:-1:-1;4744:75:0;;;;-1:-1:-1;;;;;4744:75:0;;;;;;-1:-1:-1;;;;;3357:32:1;;;3339:51;;3327:2;3312:18;4744:75:0;3193:203:1;4413:41:0;;;;;;;;;;;;;;;;4461:43;;;;;;;;;;;;;;;;4366:40;;;;;;;;;;;;;;;;3833:23;;;;;;;;;;-1:-1:-1;3833:23:0;;;;;;;;;;;7168:198;;;;;;;;;;-1:-1:-1;7168:198:0;;;;;:::i;:::-;;:::i;1700:94::-;;;;;;;;;;;;;:::i;5065:38::-;;;;;;;;;;-1:-1:-1;5065:38:0;;;;;;;;;;;;;;;;;;;3632:25:1;;;3688:2;3673:18;;3666:34;;;;3716:18;;;3709:34;3774:2;3759:18;;3752:34;3619:3;3604:19;5065:38:0;3401:391:1;4662:75:0;;;;;;;;;;-1:-1:-1;4662:75:0;;;;-1:-1:-1;;;;;4662:75:0;;;4585:70;;;;;;;;;;-1:-1:-1;4585:70:0;;;;-1:-1:-1;;;;;4585:70:0;;;8938:120;;;;;;;;;;-1:-1:-1;8938:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;9030:20:0;9006:4;9030:20;;;:11;:20;;;;;;;;;8938:120;1477:87;;;;;;;;;;-1:-1:-1;1523:7:0;1550:6;-1:-1:-1;;;;;1550:6:0;1477:87;;23710:212;;;;;;;;;;-1:-1:-1;23710:212:0;;;;;:::i;:::-;;:::i;24802:102::-;;;;;;;;;;-1:-1:-1;24802:102:0;;;;;:::i;:::-;;:::i;6856:87::-;;;;;;;;;;-1:-1:-1;6928:7:0;;;;;;;;;;;;-1:-1:-1;;;6928:7:0;;;;6856:87;;5365:36;;;;;;;;;;-1:-1:-1;5365:36:0;;;;;;;;;;;;;;;11597:378;;;;;;;;;;-1:-1:-1;11597:378:0;;;;;:::i;:::-;;:::i;8365:392::-;;;;;;;;;;-1:-1:-1;8365:392:0;;;;;:::i;:::-;;:::i;4080:19::-;;;;;;;;;;-1:-1:-1;4080:19:0;;;;-1:-1:-1;;;;;4080:19:0;;;8765:165;;;;;;;;;;-1:-1:-1;8765:165:0;;;;;:::i;:::-;;:::i;23930:195::-;;;;;;;;;;-1:-1:-1;23930:195:0;;;;;:::i;:::-;;:::i;24569:225::-;;;;;;;;;;-1:-1:-1;24569:225:0;;;;;:::i;:::-;;:::i;4003:40::-;;;;;;;;;;;;;;;;7374:143;;;;;;;;;;-1:-1:-1;7374:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7482:18:0;;;7455:7;7482:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7374:143;24912:528;;;;;;;;;;-1:-1:-1;24912:528:0;;;;;:::i;:::-;;:::i;4312:47::-;;;;;;;;;;;;;;;;24336:225;;;;;;;;;;-1:-1:-1;24336:225:0;;;;;:::i;:::-;;:::i;11347:110::-;;;;;;;;;;-1:-1:-1;11347:110:0;;;;;:::i;:::-;;:::i;9825:250::-;;;;;;;;;;-1:-1:-1;9825:250:0;;;;;:::i;:::-;;:::i;3962:34::-;;;;;;;;;;-1:-1:-1;3962:34:0;;;;;;;;1802:192;;;;;;;;;;-1:-1:-1;1802:192:0;;;;;:::i;:::-;;:::i;11983:386::-;;;;;;;;;;-1:-1:-1;11983:386:0;;;;;:::i;:::-;;:::i;5110:42::-;;;;;;;;;;-1:-1:-1;5110:42:0;;;;;;;;;;;;;;;4052:21;;;;;;;;;;-1:-1:-1;4052:21:0;;;;-1:-1:-1;;;;;4052:21:0;;;7525:161;7600:4;7617:39;978:10;7640:7;7649:6;7617:8;:39::i;:::-;-1:-1:-1;7674:4:0;7525:161;;;;;:::o;9591:226::-;1523:7;1550:6;-1:-1:-1;;;;;1550:6:0;978:10;1612:23;1604:68;;;;-1:-1:-1;;;1604:68:0;;;;;;;:::i;:::-;;;;;;;;;9655:14:::1;::::0;::::1;;9654:15;9646:52;;;::::0;-1:-1:-1;;;9646:52:0;;7575:2:1;9646:52:0::1;::::0;::::1;7557:21:1::0;7614:2;7594:18;;;7587:30;7653:26;7633:18;;;7626:54;7697:18;;9646:52:0::1;7373:348:1::0;9646:52:0::1;9727:14;::::0;;-1:-1:-1;;9727:14:0::1;::::0;::::1;9726:15;9752:18:::0;-1:-1:-1;;9752:18:0;;;;9727:14:::1;9752:18;::::0;;9797:12:::1;9781:13;:28:::0;9591:226::o;7694:448::-;7826:4;7843:36;7853:6;7861:9;7872:6;7843:9;:36::i;:::-;-1:-1:-1;;;;;7919:19:0;;7892:24;7919:19;;;:11;:19;;;;;;;;978:10;7919:33;;;;;;;;7971:26;;;;7963:79;;;;-1:-1:-1;;;7963:79:0;;7928:2:1;7963:79:0;;;7910:21:1;7967:2;7947:18;;;7940:30;8006:34;7986:18;;;7979:62;-1:-1:-1;;;8057:18:1;;;8050:38;8105:19;;7963:79:0;7726:404:1;7963:79:0;8053:57;8062:6;978:10;8084:25;8103:6;8084:16;:25;:::i;:::-;8053:8;:57::i;:::-;8130:4;8123:11;;;7694:448;;;;;;:::o;10083:250::-;10150:7;10189;;10178;:18;;10170:73;;;;-1:-1:-1;;;10170:73:0;;8602:2:1;10170:73:0;;;8584:21:1;8641:2;8621:18;;;8614:30;8680:34;8660:18;;;8653:62;-1:-1:-1;;;8731:18:1;;;8724:40;8781:19;;10170:73:0;8400:406:1;10170:73:0;10254:19;10276:10;:8;:10::i;:::-;10254:32;-1:-1:-1;10304:21:0;10254:32;10304:7;:21;:::i;10747:473::-;1523:7;1550:6;-1:-1:-1;;;;;1550:6:0;978:10;1612:23;1604:68;;;;-1:-1:-1;;;1604:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10827:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;10819:56;;;::::0;-1:-1:-1;;;10819:56:0;;9235:2:1;10819:56:0::1;::::0;::::1;9217:21:1::0;9274:2;9254:18;;;9247:30;9313:25;9293:18;;;9286:53;9356:18;;10819:56:0::1;9033:347:1::0;10819:56:0::1;10891:9;10886:327;10910:9;:16:::0;10906:20;::::1;10886:327;;;10968:7;-1:-1:-1::0;;;;;10952:23:0::1;:9;10962:1;10952:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;10952:12:0::1;:23:::0;10948:254:::1;;11011:9;11021:16:::0;;:20:::1;::::0;11040:1:::1;::::0;11021:20:::1;:::i;:::-;11011:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;10996:9:::1;:12:::0;;-1:-1:-1;;;;;11011:31:0;;::::1;::::0;11006:1;;10996:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;10996:46:0::1;-1:-1:-1::0;;;;;10996:46:0;;::::1;;::::0;;11061:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;11100:11:::1;:20:::0;;;;:28;;-1:-1:-1;;11100:28:0::1;::::0;;11147:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;11147:15:0;;;;;-1:-1:-1;;;;;;11147:15:0::1;::::0;;;;;10886:327:::1;10747:473:::0;:::o;10948:254::-:1;10928:3;;10886:327;;;;10747:473:::0;:::o;8150:207::-;978:10;8230:4;8279:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8279:34:0;;;;;;;;;;8230:4;;8247:80;;8270:7;;8279:47;;8316:10;;8279:47;:::i;11228:111::-;1523:7;1550:6;-1:-1:-1;;;;;1550:6:0;978:10;1612:23;1604:68;;;;-1:-1:-1;;;1604:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11297:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;11297:34:0::1;11327:4;11297:34;::::0;;11228:111::o;25512:197::-;1523:7;1550:6;-1:-1:-1;;;;;1550:6:0;978:10;1612:23;1604:68;;;;-1:-1:-1;;;1604:68:0;;;;;;;:::i;:::-;25613:9:::1;25588:21;:34;;25580:71;;;::::0;-1:-1:-1;;;25580:71:0;;9981:2:1;25580:71:0::1;::::0;::::1;9963:21:1::0;10020:2;10000:18;;;9993:30;10059:26;10039:18;;;10032:54;10103:18;;25580:71:0::1;9779:348:1::0;25580:71:0::1;25662:39;::::0;25670:10:::1;::::0;25662:39;::::1;;;::::0;25691:9;;25662:39:::1;::::0;;;25691:9;25670:10;25662:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;24133:195:::0;1523:7;1550:6;-1:-1:-1;;;;;1550:6:0;978:10;1612:23;1604:68;;;;-1:-1:-1;;;1604:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24221:23:0;::::1;24213:69;;;;-1:-1:-1::0;;;24213:69:0::1;;;;;;;:::i;:::-;24293:15;:27:::0;;-1:-1:-1;;;;;;24293:27:0::1;-1:-1:-1::0;;;;;24293:27:0;;;::::1;::::0;;;::::1;::::0;;24133:195::o;9066:517::-;9184:7;9228;;9217;:18;;9209:62;;;;-1:-1:-1;;;9209:62:0;;10737:2:1;9209:62:0;;;10719:21:1;10776:2;10756:18;;;10749:30;10815:33;10795:18;;;10788:61;10866:18;;9209:62:0;10535:355:1;9209:62:0;9287:17;9282:294;;9321:28;9352:39;9363:7;9372:4;9378:5;9385;9352:10;:39::i;:::-;9413:9;;-1:-1:-1;9406:16:0;;-1:-1:-1;9406:16:0;9282:294;9455:28;9486:39;9497:7;9506:4;9512:5;9519;9486:10;:39::i;:::-;9547:17;;;;-1:-1:-1;9540:24:0;;-1:-1:-1;9540:24:0;25790:261;1523:7;1550:6;-1:-1:-1;;;;;1550:6:0;978:10;1612:23;1604:68;;;;-1:-1:-1;;;1604:68:0;;;;;;;:::i;:::-;25927:4:::1;-1:-1:-1::0;;;;;25905:27:0;::::1;::::0;25897:94:::1;;;::::0;-1:-1:-1;;;25897:94:0;;11097:2:1;25897:94:0::1;::::0;::::1;11079:21:1::0;11136:2;11116:18;;;11109:30;11175:34;11155:18;;;11148:62;-1:-1:-1;;;11226:18:1;;;11219:52;11288:19;;25897:94:0::1;10895:418:1::0;25897:94:0::1;26002:41;::::0;-1:-1:-1;;;26002:41:0;;-1:-1:-1;;;;;11510:32:1;;;26002:41:0::1;::::0;::::1;11492:51:1::0;11559:18;;;11552:34;;;26002:27:0;::::1;::::0;::::1;::::0;11465:18:1;;26002:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25790:261:::0;;;:::o;10407:332::-;1523:7;1550:6;-1:-1:-1;;;;;1550:6:0;978:10;1612:23;1604:68;;;;-1:-1:-1;;;1604:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10488:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;10487:21;10479:61;;;::::0;-1:-1:-1;;;10479:61:0;;12049:2:1;10479:61:0::1;::::0;::::1;12031:21:1::0;12088:2;12068:18;;;12061:30;12127:29;12107:18;;;12100:57;12174:18;;10479:61:0::1;11847:351:1::0;10479:61:0::1;-1:-1:-1::0;;;;;10555:16:0;::::1;10574:1;10555:16:::0;;;:7:::1;:16;::::0;;;;;:20;10551:109:::1;;-1:-1:-1::0;;;;;10631:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;10611:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;10592:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;10551:109:::1;-1:-1:-1::0;;;;;10670:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;10670:27:0::1;10693:4;10670:27:::0;;::::1;::::0;;;10708:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;10708:23:0::1;::::0;;::::1;::::0;;10407:332::o;7168:198::-;-1:-1:-1;;;;;7258:20:0;;7234:7;7258:20;;;:11;:20;;;;;;;;7254:49;;;-1:-1:-1;;;;;;7287:16:0;;;;;:7;:16;;;;;;;7168:198::o;7254:49::-;-1:-1:-1;;;;;7341:16:0;;;;;;:7;:16;;;;;;7321:37;;:19;:37::i;1700:94::-;1523:7;1550:6;-1:-1:-1;;;;;1550:6:0;978:10;1612:23;1604:68;;;;-1:-1:-1;;;1604:68:0;;;;;;;:::i;:::-;1765:21:::1;1783:1;1765:9;:21::i;:::-;1700:94::o:0;23710:212::-;1523:7;1550:6;-1:-1:-1;;;;;1550:6:0;978:10;1612:23;1604:68;;;;-1:-1:-1;;;1604:68:0;;;;;;;:::i;:::-;23808:9:::1;23803:112;23827:8;:15;23823:1;:19;23803:112;;;23898:5;23864:18;:31;23883:8;23892:1;23883:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;23864:31:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;23864:31:0;:39;;-1:-1:-1;;23864:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;23844:3:0::1;23803:112;;;;23710:212:::0;;:::o;24802:102::-;1523:7;1550:6;-1:-1:-1;;;;;1550:6:0;978:10;1612:23;1604:68;;;;-1:-1:-1;;;1604:68:0;;;;;;;:::i;:::-;24874:11:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;24874:22:0;;::::1;::::0;;;::::1;::::0;;24802:102::o;11597:378::-;1523:7;1550:6;-1:-1:-1;;;;;1550:6:0;978:10;1612:23;1604:68;;;;-1:-1:-1;;;1604:68:0;;;;;;;:::i;:::-;11830:2:::1;11808:16:::0;11795:10;11775:17:::1;11782:10:::0;11775:4;:17:::1;:::i;:::-;:30;;;;:::i;:::-;:49;;;;:::i;:::-;11774:58;;11766:100;;;::::0;-1:-1:-1;;;11766:100:0;;12405:2:1;11766:100:0::1;::::0;::::1;12387:21:1::0;12444:2;12424:18;;;12417:30;12483:31;12463:18;;;12456:59;12532:18;;11766:100:0::1;12203:353:1::0;11766:100:0::1;11885:53;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;11877:5:::1;:61:::0;;;;;;;;;;;;;;;11954:13;::::1;::::0;-1:-1:-1;;11954:13:0::1;11597:378:::0;;;;:::o;8365:392::-;978:10;8468:4;8517:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8517:34:0;;;;;;;;;;8570:35;;;;8562:85;;;;-1:-1:-1;;;8562:85:0;;12763:2:1;8562:85:0;;;12745:21:1;12802:2;12782:18;;;12775:30;12841:34;12821:18;;;12814:62;-1:-1:-1;;;12892:18:1;;;12885:35;12937:19;;8562:85:0;12561:401:1;8562:85:0;8658:67;978:10;8681:7;8690:34;8709:15;8690:16;:34;:::i;8658:67::-;-1:-1:-1;8745:4:0;;8365:392;-1:-1:-1;;;8365:392:0:o;8765:165::-;8843:4;8860:40;8870:10;8882:9;8893:6;8860:9;:40::i;23930:195::-;1523:7;1550:6;-1:-1:-1;;;;;1550:6:0;978:10;1612:23;1604:68;;;;-1:-1:-1;;;1604:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24018:23:0;::::1;24010:69;;;;-1:-1:-1::0;;;24010:69:0::1;;;;;;;:::i;:::-;24090:15;:27:::0;;-1:-1:-1;;;;;;24090:27:0::1;-1:-1:-1::0;;;;;24090:27:0;;;::::1;::::0;;;::::1;::::0;;23930:195::o;24569:225::-;1523:7;1550:6;-1:-1:-1;;;;;1550:6:0;978:10;1612:23;1604:68;;;;-1:-1:-1;;;1604:68:0;;;;;;;:::i;:::-;24667:3:::1;24657:6;:13;;24649:83;;;::::0;-1:-1:-1;;;24649:83:0;;13169:2:1;24649:83:0::1;::::0;::::1;13151:21:1::0;13208:2;13188:18;;;13181:30;13247:34;13227:18;;;13220:62;13318:27;13298:18;;;13291:55;13363:19;;24649:83:0::1;12967:421:1::0;24649:83:0::1;24773:13;4143:1;24773:2;:13;:::i;:::-;24764:22;::::0;:6;:22:::1;:::i;:::-;24743:18;:43:::0;-1:-1:-1;24569:225:0:o;24912:528::-;1523:7;1550:6;-1:-1:-1;;;;;1550:6:0;978:10;1612:23;1604:68;;;;-1:-1:-1;;;1604:68:0;;;;;;;:::i;:::-;25038:3:::1;25028:6;:13;;25020:77;;;::::0;-1:-1:-1;;;25020:77:0;;15145:2:1;25020:77:0::1;::::0;::::1;15127:21:1::0;15184:2;15164:18;;;15157:30;15223:34;15203:18;;;15196:62;-1:-1:-1;;;15274:18:1;;;15267:49;15333:19;;25020:77:0::1;14943:415:1::0;25020:77:0::1;25127:3;25116:7;:14;;25108:80;;;::::0;-1:-1:-1;;;25108:80:0;;15565:2:1;25108:80:0::1;::::0;::::1;15547:21:1::0;15604:2;15584:18;;;15577:30;15643:34;15623:18;;;15616:62;-1:-1:-1;;;15694:18:1;;;15687:51;15755:19;;25108:80:0::1;15363:417:1::0;25108:80:0::1;25220:3;25207:9;:16;;25199:81;;;::::0;-1:-1:-1;;;25199:81:0;;15987:2:1;25199:81:0::1;::::0;::::1;15969:21:1::0;16026:2;16006:18;;;15999:30;16065:34;16045:18;;;16038:62;-1:-1:-1;;;16116:18:1;;;16109:50;16176:19;;25199:81:0::1;15785:416:1::0;25199:81:0::1;25314:14;4143:1:::0;25314:2:::1;:14;:::i;:::-;25305:23;::::0;:6;:23:::1;:::i;:::-;25291:11;:37:::0;25364:14:::1;4143:1:::0;25364:2:::1;:14;:::i;:::-;25354:24;::::0;:7;:24:::1;:::i;:::-;25339:12;:39:::0;25418:14:::1;4143:1:::0;25418:2:::1;:14;:::i;:::-;25406:26;::::0;:9;:26:::1;:::i;:::-;25389:14;:43:::0;-1:-1:-1;;;24912:528:0:o;24336:225::-;1523:7;1550:6;-1:-1:-1;;;;;1550:6:0;978:10;1612:23;1604:68;;;;-1:-1:-1;;;1604:68:0;;;;;;;:::i;:::-;24432:2:::1;24424:4;:10;;24416:61;;;::::0;-1:-1:-1;;;24416:61:0;;16408:2:1;24416:61:0::1;::::0;::::1;16390:21:1::0;16447:2;16427:18;;;16420:30;16486:34;16466:18;;;16459:62;-1:-1:-1;;;16537:18:1;;;16530:36;16583:19;;24416:61:0::1;16206:402:1::0;24416:61:0::1;24503:16;:4:::0;24510:9:::1;24503:16;:::i;:::-;24488:12;:31:::0;-1:-1:-1;24530:15:0::1;:23:::0;;-1:-1:-1;;24530:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24336:225::o;11347:110::-;1523:7;1550:6;-1:-1:-1;;;;;1550:6:0;978:10;1612:23;1604:68;;;;-1:-1:-1;;;1604:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11414:27:0::1;11444:5;11414:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;11414:35:0::1;::::0;;11347:110::o;9825:250::-;1523:7;1550:6;-1:-1:-1;;;;;1550:6:0;978:10;1612:23;1604:68;;;;-1:-1:-1;;;1604:68:0;;;;;;;:::i;:::-;9907:14:::1;::::0;::::1;;9906:15;9898:65;;;::::0;-1:-1:-1;;;9898:65:0;;16815:2:1;9898:65:0::1;::::0;::::1;16797:21:1::0;16854:2;16834:18;;;16827:30;16893:34;16873:18;;;16866:62;-1:-1:-1;;;16944:18:1;;;16937:35;16989:19;;9898:65:0::1;16613:401:1::0;9898:65:0::1;9994:1;9982:9;:13;9974:62;;;::::0;-1:-1:-1;;;9974:62:0;;17221:2:1;9974:62:0::1;::::0;::::1;17203:21:1::0;17260:2;17240:18;;;17233:30;17299:34;17279:18;;;17272:62;-1:-1:-1;;;17350:18:1;;;17343:35;17395:19;;9974:62:0::1;17019:401:1::0;9974:62:0::1;10047:8;:20:::0;9825:250::o;1802:192::-;1523:7;1550:6;-1:-1:-1;;;;;1550:6:0;978:10;1612:23;1604:68;;;;-1:-1:-1;;;1604:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1891:22:0;::::1;1883:73;;;::::0;-1:-1:-1;;;1883:73:0;;17627:2:1;1883:73:0::1;::::0;::::1;17609:21:1::0;17666:2;17646:18;;;17639:30;17705:34;17685:18;;;17678:62;-1:-1:-1;;;17756:18:1;;;17749:36;17802:19;;1883:73:0::1;17425:402:1::0;1883:73:0::1;1967:19;1977:8;1967:9;:19::i;:::-;1802:192:::0;:::o;11983:386::-;1523:7;1550:6;-1:-1:-1;;;;;1550:6:0;978:10;1612:23;1604:68;;;;-1:-1:-1;;;1604:68:0;;;;;;;:::i;:::-;12220:2:::1;12198:16:::0;12185:10;12165:17:::1;12172:10:::0;12165:4;:17:::1;:::i;:::-;:30;;;;:::i;:::-;:49;;;;:::i;:::-;12164:58;;12156:100;;;::::0;-1:-1:-1;;;12156:100:0;;12405:2:1;12156:100:0::1;::::0;::::1;12387:21:1::0;12444:2;12424:18;;;12417:30;12483:31;12463:18;;;12456:59;12532:18;;12156:100:0::1;12203:353:1::0;12156:100:0::1;12279:53;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;12267:9:::1;:65:::0;;;;;;;;;;;;;;;12348:13;::::1;::::0;-1:-1:-1;;12348:13:0::1;11983:386:::0;;;;:::o;17080:369::-;-1:-1:-1;;;;;17207:19:0;;17199:68;;;;-1:-1:-1;;;17199:68:0;;18034:2:1;17199:68:0;;;18016:21:1;18073:2;18053:18;;;18046:30;18112:34;18092:18;;;18085:62;-1:-1:-1;;;18163:18:1;;;18156:34;18207:19;;17199:68:0;17832:400:1;17199:68:0;-1:-1:-1;;;;;17286:21:0;;17278:68;;;;-1:-1:-1;;;17278:68:0;;18439:2:1;17278:68:0;;;18421:21:1;18478:2;18458:18;;;18451:30;18517:34;18497:18;;;18490:62;-1:-1:-1;;;18568:18:1;;;18561:32;18610:19;;17278:68:0;18237:398:1;17278:68:0;-1:-1:-1;;;;;17357:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17409:32;;1500:25:1;;;17409:32:0;;1473:18:1;17409:32:0;;;;;;;17080:369;;;:::o;17457:2293::-;-1:-1:-1;;;;;17579:18:0;;17571:68;;;;-1:-1:-1;;;17571:68:0;;18842:2:1;17571:68:0;;;18824:21:1;18881:2;18861:18;;;18854:30;18920:34;18900:18;;;18893:62;-1:-1:-1;;;18971:18:1;;;18964:35;19016:19;;17571:68:0;18640:401:1;17571:68:0;-1:-1:-1;;;;;17658:16:0;;17650:64;;;;-1:-1:-1;;;17650:64:0;;19248:2:1;17650:64:0;;;19230:21:1;19287:2;19267:18;;;19260:30;19326:34;19306:18;;;19299:62;-1:-1:-1;;;19377:18:1;;;19370:33;19420:19;;17650:64:0;19046:399:1;17650:64:0;17742:1;17733:6;:10;17725:64;;;;-1:-1:-1;;;17725:64:0;;19652:2:1;17725:64:0;;;19634:21:1;19691:2;19671:18;;;19664:30;19730:34;19710:18;;;19703:62;-1:-1:-1;;;19781:18:1;;;19774:39;19830:19;;17725:64:0;19450:405:1;17725:64:0;17832:15;17842:4;17832:9;:15::i;:::-;17822:6;:25;;17800:124;;;;-1:-1:-1;;;17800:124:0;;20062:2:1;17800:124:0;;;20044:21:1;20101:2;20081:18;;;20074:30;20140:34;20120:18;;;20113:62;-1:-1:-1;;;20191:18:1;;;20184:47;20248:19;;17800:124:0;19860:413:1;17800:124:0;-1:-1:-1;;;;;17942:24:0;;;;;;:18;:24;;;;;;;;17941:25;:52;;;;-1:-1:-1;;;;;;17971:22:0;;;;;;:18;:22;;;;;;;;17970:23;17941:52;17937:130;;;18018:14;;;;18010:45;;;;-1:-1:-1;;;18010:45:0;;20480:2:1;18010:45:0;;;20462:21:1;20519:2;20499:18;;;20492:30;-1:-1:-1;;;20538:18:1;;;20531:48;20596:18;;18010:45:0;20278:342:1;18010:45:0;18091:4;;-1:-1:-1;;;;;18083:12:0;;;18091:4;;18083:12;:39;;;;-1:-1:-1;;;;;;18100:22:0;;;;;;:18;:22;;;;;;;;18099:23;18083:39;:52;;;;-1:-1:-1;18127:8:0;;;;;;;18126:9;18083:52;18079:297;;;18170:11;;18160:6;:21;;18152:63;;;;-1:-1:-1;;;18152:63:0;;20827:2:1;18152:63:0;;;20809:21:1;20866:2;20846:18;;;20839:30;20905:31;20885:18;;;20878:59;20954:18;;18152:63:0;20625:353:1;18152:63:0;18282:14;;18272:6;18256:13;18266:2;18256:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18230:134;;;;-1:-1:-1;;;18230:134:0;;21185:2:1;18230:134:0;;;21167:21:1;;;21204:18;;;21197:30;21263:34;21243:18;;;21236:62;21315:18;;18230:134:0;20983:356:1;18230:134:0;18414:4;;-1:-1:-1;;;;;18406:12:0;;;18414:4;;18406:12;;;;:39;;-1:-1:-1;;;;;;18423:22:0;;;;;;:18;:22;;;;;;;;18422:23;18406:39;:68;;;;-1:-1:-1;;;;;;18450:24:0;;;;;;:18;:24;;;;;;;;18449:25;18406:68;:81;;;;-1:-1:-1;18479:8:0;;;;;;;18478:9;18406:81;18388:664;;;18532:12;;18522:6;:22;;18514:65;;;;-1:-1:-1;;;18514:65:0;;21546:2:1;18514:65:0;;;21528:21:1;21585:2;21565:18;;;21558:30;21624:32;21604:18;;;21597:60;21674:18;;18514:65:0;21344:354:1;18514:65:0;18604:4;;-1:-1:-1;;;;;18598:10:0;;;18604:4;;18598:10;18594:197;;18685:14;;18675:6;18659:13;18669:2;18659:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18629:146;;;;-1:-1:-1;;;18629:146:0;;21185:2:1;18629:146:0;;;21167:21:1;;;21204:18;;;21197:30;21263:34;21243:18;;;21236:62;21315:18;;18629:146:0;20983:356:1;18629:146:0;18809:15;;;;18805:236;;;-1:-1:-1;;;;;18884:15:0;;18845:18;18884:15;;;:9;:15;;;;;;18866:33;;:15;:33;:::i;:::-;18845:54;;18940:12;;18926:10;:26;;18918:55;;;;-1:-1:-1;;;18918:55:0;;21905:2:1;18918:55:0;;;21887:21:1;21944:2;21924:18;;;21917:30;-1:-1:-1;;;21963:18:1;;;21956:46;22019:18;;18918:55:0;21703:340:1;18918:55:0;-1:-1:-1;;;;;;18992:15:0;;;;;;:9;:15;;;;;19010;18992:33;;18805:236;19064:12;19107:18;;19079:24;19097:4;19079:9;:24::i;:::-;19155:8;;-1:-1:-1;;19079:46:0;;-1:-1:-1;19155:8:0;;;;;19154:9;:37;;;;-1:-1:-1;19180:11:0;;;;;;;19154:37;:61;;;;;19208:7;19154:61;:90;;;;-1:-1:-1;19240:4:0;;-1:-1:-1;;;;;19232:12:0;;;19240:4;;19232:12;;19154:90;:132;;;;-1:-1:-1;;;;;;19262:24:0;;;;;;:18;:24;;;;;;;;19261:25;19154:132;:172;;;;-1:-1:-1;;;;;;19304:22:0;;;;;;:18;:22;;;;;;;;19303:23;19154:172;19136:351;;;19363:4;;-1:-1:-1;;;;;19363:4:0;;;19357:10;;;;19353:122;;19384:18;;19369:45;;;;;;;;19404:9;19369:45;;;;;;;;;;;;;;;;;;;;;;;;;;19384:18;19369:14;:45::i;:::-;19353:122;;;19449:18;;19434:41;;;;;;;;19469:5;19434:41;;;;;;;;;;;;;;;;;;;;;;;;;;19449:18;19434:14;:41::i;:::-;19561:8;;19512:4;;19497:12;;19561:8;;;;;;:36;;-1:-1:-1;;;;;;19573:24:0;;;;;;:18;:24;;;;;;;;19561:36;:62;;;-1:-1:-1;;;;;;19601:22:0;;;;;;:18;:22;;;;;;;;19561:62;19557:83;;;19635:5;19625:15;;19557:83;19661:4;;-1:-1:-1;;;;;19661:4:0;;;19655:10;;;;19651:29;;-1:-1:-1;19676:4:0;19651:29;19693:49;19708:4;19714:2;19718:6;19726:7;19735:6;19693:14;:49::i;:::-;17560:2190;;;17457:2293;;;:::o;16339:161::-;16381:7;16402:15;16419;16438:19;:17;:19::i;:::-;16401:56;;-1:-1:-1;16401:56:0;-1:-1:-1;16475:17:0;16401:56;;16475:17;:::i;:::-;16468:24;;;;16339:161;:::o;13416:682::-;13564:36;;:::i;:::-;13625:51;13637:7;13646;13655:6;13663:12;13625:11;:51::i;:::-;13613:63;;13872:53;13885:9;13896:7;13905;13914:10;:8;:10::i;:::-;13872:12;:53::i;:::-;13838:20;;;13687:238;13803:20;;;13687:238;13774:14;;;13687:238;13734:25;;;13687:238;;;13967:94;13702:9;14018:7;14040:10;:8;:10::i;:::-;13967:12;:94::i;:::-;13937:26;;;13936:125;13416:682;;;;;;;:::o;2002:173::-;2058:16;2077:6;;-1:-1:-1;;;;;2094:17:0;;;-1:-1:-1;;;;;;2094:17:0;;;;;;2127:40;;2077:6;;;;;;;2127:40;;2058:16;2127:40;2047:128;2002:173;:::o;21320:1312::-;5905:8;:15;;-1:-1:-1;;5905:15:0;;;;;21502:20:::1;::::0;::::1;::::0;21472:14:::1;::::0;::::1;::::0;21442::::1;::::0;::::1;::::0;5905:15;;21502:20;21442:44:::1;::::0;::::1;:::i;:::-;:80;;;;:::i;:::-;21441:86;::::0;21526:1:::1;21441:86;:::i;:::-;21419:108;;21544:11;21559:1;21544:16:::0;21540:54:::1;;21576:7;;;21540:54;21606:32;21678:11;21660:4;:14;;;21642:15;:32;;;;:::i;:::-;21641:48;;;;:::i;:::-;21606:83:::0;-1:-1:-1;21700:14:0::1;21717:42;21606:83:::0;21717:15;:42:::1;:::i;:::-;21700:59:::0;-1:-1:-1;21797:21:0::1;21831:24;21700:59:::0;21831:16:::1;:24::i;:::-;21868:20;21891:38;21915:14:::0;21891:21:::1;:38;:::i;:::-;21868:61;;21940:19;21992:4;:14;;;21978:11;:28;;;;:::i;:::-;21962:45;::::0;:12;:45:::1;:::i;:::-;21940:67;;22018:29;22064:4;:14;;;22050:11;:28;;;;:::i;:::-;22018:60:::0;-1:-1:-1;22095:25:0;;22091:160:::1;;22178:61;22191:24;22217:21;22178:12;:61::i;:::-;22304:14;::::0;::::1;::::0;22263:20:::1;::::0;22286:15:::1;:11:::0;22300:1:::1;22286:15;:::i;:::-;:32;;;;:::i;:::-;22263:55:::0;-1:-1:-1;22333:16:0;;22329:97:::1;;22374:15;::::0;22366:48:::1;::::0;-1:-1:-1;;;;;22374:15:0::1;22401:12:::0;22366:34:::1;:48::i;:::-;22485:20;::::0;::::1;::::0;22438:26:::1;::::0;22467:15:::1;:11:::0;22481:1:::1;22467:15;:::i;:::-;:38;;;;:::i;:::-;22438:67:::0;-1:-1:-1;22520:22:0;;22516:109:::1;;22567:15;::::0;22559:54:::1;::::0;-1:-1:-1;;;;;22567:15:0::1;22594:18:::0;22559:34:::1;:54::i;:::-;21408:1224;;;;;;;;;5931:1;-1:-1:-1::0;;5943:8:0;:16;;-1:-1:-1;;5943:16:0;;;21320:1312::o;19831:1481::-;-1:-1:-1;;;;;20026:26:0;;20005:17;20026:26;;;:18;:26;;;;;;;;20025:27;:74;;;;-1:-1:-1;;;;;;20070:29:0;;;;;;:18;:29;;;;;;;;20069:30;20025:74;:130;;;;;20147:8;;20131:13;;:24;;;;:::i;:::-;20116:12;:39;20025:130;20005:150;;20168:28;20199:50;20210:7;20219;20228:6;20236:12;20199:10;:50::i;:::-;-1:-1:-1;;;;;20266:19:0;;;;;;:11;:19;;;;;;20168:81;;-1:-1:-1;20266:19:0;;20262:124;;;-1:-1:-1;;;;;20349:15:0;;;;;;:7;:15;;;;;;:25;;20367:7;;20349:25;:::i;:::-;-1:-1:-1;;;;;20331:15:0;;;;;;:7;:15;;;;;:43;20262:124;-1:-1:-1;;;;;20400:22:0;;;;;;:11;:22;;;;;;;;20396:141;;;20508:17;;;;-1:-1:-1;;;;;20487:18:0;;;;;;:7;:18;;;;;;:38;;20508:17;20487:38;:::i;:::-;-1:-1:-1;;;;;20466:18:0;;;;;;:7;:18;;;;;:59;20396:141;20585:9;;-1:-1:-1;;;;;20567:15:0;;20585:9;20567:15;;;:7;:15;;;;;;:27;;20585:9;20567:27;:::i;:::-;-1:-1:-1;;;;;20549:15:0;;;;;;;:7;:15;;;;;;;;:45;;;;20647:17;;;20626:18;;;;;;;;;;:38;;20647:17;20626:38;:::i;:::-;-1:-1:-1;;;;;20605:18:0;;;;;;:7;:18;;;;;;;:59;;;;20681:6;;;:10;;;:24;;;20704:1;20695;:6;;;:10;20681:24;20677:57;;;20707:27;20719:1;:6;;;20727:1;:6;;;20707:11;:27::i;:::-;20764:1;20749;:12;;;:16;:36;;;;20784:1;20769;:12;;;:16;20749:36;20745:278;;;20802:42;20817:1;:12;;;20831:1;:12;;;20802:14;:42::i;:::-;20924:4;-1:-1:-1;;;;;20864:147:0;20891:6;-1:-1:-1;;;;;20864:147:0;;20978:1;:18;;;20963:1;:12;;;20948:1;:12;;;:27;;;;:::i;:::-;:48;;;;:::i;:::-;20864:147;;1500:25:1;;;1488:2;1473:18;20864:147:0;;;;;;;20745:278;21052:1;21037;:12;;;:16;:36;;;;21072:1;21057;:12;;;:16;21037:36;21033:84;;;21075:42;21090:1;:12;;;21104:1;:12;;;21075:14;:42::i;:::-;21153:1;21132;:18;;;:22;:48;;;;21179:1;21158;:18;;;:22;21132:48;21128:114;;;21182:60;21203:1;:18;;;21223:1;:18;;;21182:20;:60::i;:::-;21275:9;-1:-1:-1;;;;;21258:46:0;21267:6;-1:-1:-1;;;;;21258:46:0;;21286:1;:17;;;21258:46;;;;1500:25:1;;1488:2;1473:18;;1354:177;21258:46:0;;;;;;;;19994:1318;;19831:1481;;;;;:::o;16508:564::-;16606:7;;16642;;16559;;;;;16660:300;16684:9;:16;16680:20;;16660:300;;;16750:7;16726;:21;16734:9;16744:1;16734:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16734:12:0;16726:21;;;;;;;;;;;;;:31;;:66;;;16785:7;16761;:21;16769:9;16779:1;16769:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16769:12:0;16761:21;;;;;;;;;;;;;:31;16726:66;16722:114;;;16819:7;;16828;;16811:25;;;;;;;16508:564;;:::o;16722:114::-;16871:7;:21;16879:9;16889:1;16879:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16879:12:0;16871:21;;;;;;;;;;;;;16861:31;;:7;:31;:::i;:::-;16851:41;;16927:7;:21;16935:9;16945:1;16935:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16935:12:0;16927:21;;;;;;;;;;;;;16917:31;;:7;:31;:::i;:::-;16907:41;-1:-1:-1;16702:3:0;;16660:300;;;;16994:7;;16984;;:17;;;;:::i;:::-;16974:7;:27;16970:58;;;17011:7;;17020;;17003:25;;;;;;16508:564;;:::o;16970:58::-;17047:7;;17056;;-1:-1:-1;16508:564:0;-1:-1:-1;16508:564:0:o;14106:867::-;14255:28;;:::i;:::-;14301:7;14296:91;;14325:17;;;:27;;;14367:8;;14296:91;14397:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14397:17:0;14429:6;:23;;;;;14440:12;14439:13;14429:23;14425:124;;;-1:-1:-1;14454:16:0;;;;;;;;14461:9;14454:16;;;;;;;;;;;;;;;;;;;;;;;;14425:124;;;14491:12;14486:63;;-1:-1:-1;14505:12:0;;;;;;;;14512:5;14505:12;;;;;;;;;;;;;;;;;;;;;;;;14486:63;;;-1:-1:-1;14533:16:0;;;;;;;;14540:9;14533:16;;;;;;;;;;;;;;;;;;;;;;;;;14486:63;14582:8;;14594:3;;14572:18;;:7;:18;:::i;:::-;14571:26;;;;:::i;:::-;14562:6;;;:35;14634:14;;;;14652:3;;14624:24;;:7;:24;:::i;:::-;14623:32;;;;:::i;:::-;14608:12;;;:47;14692:14;;;;14710:3;;14682:24;;:7;:24;:::i;:::-;14681:32;;;;:::i;:::-;14666:12;;;:47;14756:20;;;;14780:3;;14746:30;;:7;:30;:::i;:::-;14745:38;;;;:::i;:::-;14724:18;;;:59;;;14900:12;;;;14872;;;;14850:6;;;;14827:29;;:7;:29;:::i;:::-;:57;;;;:::i;:::-;:85;;;;:::i;:::-;:119;;;;:::i;:::-;14794:17;;;:152;-1:-1:-1;14106:867:0;;;;;;:::o;14981:948::-;15191:15;;;;;15375:21;15385:11;15375:7;:21;:::i;:::-;15365:31;;15414:7;15409:75;;-1:-1:-1;15446:7:0;;-1:-1:-1;15464:1:0;;-1:-1:-1;15464:1:0;;-1:-1:-1;15464:1:0;15438:34;;15409:75;15512:11;15503:1;:6;;;:20;;;;:::i;:::-;15496:27;;15562:11;15547:1;:12;;;:26;;;;:::i;:::-;15534:39;;15612:11;15597:1;:12;;;:26;;;;:::i;:::-;15584:39;;15634:24;15682:11;15661:1;:18;;;:32;;;;:::i;:::-;15634:59;-1:-1:-1;15634:59:0;15804:10;15778;15735:27;15758:4;15735:7;:27;:::i;:::-;:53;;;;:::i;:::-;:79;;;;:::i;:::-;:111;;;;:::i;:::-;15704:142;;15858:63;14981:948;;;;;;;;;;:::o;15937:394::-;16121:24;16178:7;16173:51;;-1:-1:-1;16210:1:0;16202:10;;16173:51;16276:11;16255:1;:18;;;:32;;;;:::i;23148:554::-;23290:16;;;23304:1;23290:16;;;;;;;;23266:21;;23290:16;;;;;;;;;;-1:-1:-1;23290:16:0;23266:40;;23335:4;23317;23322:1;23317:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23317:23:0;;;:7;;;;;;;;;;:23;;;;23361:6;;:13;;;-1:-1:-1;;;23361:13:0;;;;:6;;;;;:11;;:13;;;;;23317:7;;23361:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23351:4;23356:1;23351:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23351:23:0;;;:7;;;;;;;;;:23;23419:6;;23387:53;;23404:4;;23419:6;23428:11;23387:8;:53::i;:::-;23479:6;;:215;;-1:-1:-1;;;23479:215:0;;-1:-1:-1;;;;;23479:6:0;;;;:57;;:215;;23551:11;;23479:6;;23621:4;;23648;;23668:15;;23479:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22640:500;22820:6;;22788:53;;22805:4;;-1:-1:-1;;;;;22820:6:0;22829:11;22788:8;:53::i;:::-;22884:6;;23081:10;;22884:248;;-1:-1:-1;;;22884:248:0;;22949:4;22884:248;;;23630:34:1;23680:18;;;23673:34;;;22884:6:0;23723:18:1;;;23716:34;;;23766:18;;;23759:34;-1:-1:-1;;;;;23081:10:0;;;23809:19:1;;;23802:44;23106:15:0;23862:19:1;;;23855:35;22884:6:0;;;:22;;22915:9;;23564:19:1;;22884:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22640:500;;:::o;3060:319::-;3175:6;3150:21;:31;;3142:73;;;;-1:-1:-1;;;3142:73:0;;24414:2:1;3142:73:0;;;24396:21:1;24453:2;24433:18;;;24426:30;24492:31;24472:18;;;24465:59;24541:18;;3142:73:0;24212:353:1;3142:73:0;3229:12;3247:9;-1:-1:-1;;;;;3247:14:0;3270:6;3247:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3228:54;;;3301:7;3293:78;;;;-1:-1:-1;;;3293:78:0;;24982:2:1;3293:78:0;;;24964:21:1;25021:2;25001:18;;;24994:30;25060:34;25040:18;;;25033:62;25131:28;25111:18;;;25104:56;25177:19;;3293:78:0;24780:422:1;12377:125:0;12456:4;12445:7;;:15;;;;;;;:::i;:::-;;;;-1:-1:-1;;12471:11:0;:23;;12490:4;;12471:11;:15;;:23;;12490:4;;12471:23;:::i;:::-;;;;-1:-1:-1;;;;12377:125:0:o;12510:280::-;12618:10;12593:11;:21;;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;;12665:4:0;12645:26;;;;:11;:26;;;;;;;;12641:95;;;12704:4;12688:22;;;;:7;:22;;;;;:36;;12714:10;;12688:22;:36;;12714:10;;12688:36;:::i;:::-;;;;-1:-1:-1;;12641:95:0;12762:4;12746:22;;;;:7;:22;;;;;:36;;12772:10;;12746:22;:36;;12772:10;;12746:36;:::i;12798:280::-;12906:10;12881:11;:21;;;:35;;;;;;;:::i;13086:322::-;13218:16;13187:11;:27;;;:47;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1536:456::-;1613:6;1621;1629;1682:2;1670:9;1661:7;1657:23;1653:32;1650:52;;;1698:1;1695;1688:12;1650:52;1737:9;1724:23;1756:31;1781:5;1756:31;:::i;:::-;1806:5;-1:-1:-1;1863:2:1;1848:18;;1835:32;1876:33;1835:32;1876:33;:::i;:::-;1536:456;;1928:7;;-1:-1:-1;;;1982:2:1;1967:18;;;;1954:32;;1536:456::o;1997:180::-;2056:6;2109:2;2097:9;2088:7;2084:23;2080:32;2077:52;;;2125:1;2122;2115:12;2077:52;-1:-1:-1;2148:23:1;;1997:180;-1:-1:-1;1997:180:1:o;2371:247::-;2430:6;2483:2;2471:9;2462:7;2458:23;2454:32;2451:52;;;2499:1;2496;2489:12;2451:52;2538:9;2525:23;2557:31;2582:5;2557:31;:::i;2623:118::-;2709:5;2702:13;2695:21;2688:5;2685:32;2675:60;;2731:1;2728;2721:12;2746:128;2811:20;;2840:28;2811:20;2840:28;:::i;2879:309::-;2944:6;2952;3005:2;2993:9;2984:7;2980:23;2976:32;2973:52;;;3021:1;3018;3011:12;2973:52;3057:9;3044:23;3034:33;;3117:2;3106:9;3102:18;3089:32;3130:28;3152:5;3130:28;:::i;:::-;3177:5;3167:15;;;2879:309;;;;;:::o;3797:127::-;3858:10;3853:3;3849:20;3846:1;3839:31;3889:4;3886:1;3879:15;3913:4;3910:1;3903:15;3929:1191;4019:6;4027;4080:2;4068:9;4059:7;4055:23;4051:32;4048:52;;;4096:1;4093;4086:12;4048:52;4136:9;4123:23;4165:18;4206:2;4198:6;4195:14;4192:34;;;4222:1;4219;4212:12;4192:34;4260:6;4249:9;4245:22;4235:32;;4305:7;4298:4;4294:2;4290:13;4286:27;4276:55;;4327:1;4324;4317:12;4276:55;4363:2;4350:16;4385:4;4408:2;4404;4401:10;4398:36;;;4414:18;;:::i;:::-;4460:2;4457:1;4453:10;4492:2;4486:9;4555:2;4551:7;4546:2;4542;4538:11;4534:25;4526:6;4522:38;4610:6;4598:10;4595:22;4590:2;4578:10;4575:18;4572:46;4569:72;;;4621:18;;:::i;:::-;4657:2;4650:22;4707:18;;;4741:15;;;;-1:-1:-1;4783:11:1;;;4779:20;;;4811:19;;;4808:39;;;4843:1;4840;4833:12;4808:39;4867:11;;;;4887:148;4903:6;4898:3;4895:15;4887:148;;;4969:23;4988:3;4969:23;:::i;:::-;4957:36;;4920:12;;;;5013;;;;4887:148;;;5054:6;-1:-1:-1;5079:35:1;;-1:-1:-1;5095:18:1;;;5079:35;:::i;:::-;5069:45;;;;;;3929:1191;;;;;:::o;5125:241::-;5181:6;5234:2;5222:9;5213:7;5209:23;5205:32;5202:52;;;5250:1;5247;5240:12;5202:52;5289:9;5276:23;5308:28;5330:5;5308:28;:::i;5371:385::-;5457:6;5465;5473;5481;5534:3;5522:9;5513:7;5509:23;5505:33;5502:53;;;5551:1;5548;5541:12;5502:53;-1:-1:-1;;5574:23:1;;;5644:2;5629:18;;5616:32;;-1:-1:-1;5695:2:1;5680:18;;5667:32;;5746:2;5731:18;5718:32;;-1:-1:-1;5371:385:1;-1:-1:-1;5371:385:1:o;5761:388::-;5829:6;5837;5890:2;5878:9;5869:7;5865:23;5861:32;5858:52;;;5906:1;5903;5896:12;5858:52;5945:9;5932:23;5964:31;5989:5;5964:31;:::i;:::-;6014:5;-1:-1:-1;6071:2:1;6056:18;;6043:32;6084:33;6043:32;6084:33;:::i;6154:316::-;6231:6;6239;6247;6300:2;6288:9;6279:7;6275:23;6271:32;6268:52;;;6316:1;6313;6306:12;6268:52;-1:-1:-1;;6339:23:1;;;6409:2;6394:18;;6381:32;;-1:-1:-1;6460:2:1;6445:18;;;6432:32;;6154:316;-1:-1:-1;6154:316:1:o;6475:309::-;6540:6;6548;6601:2;6589:9;6580:7;6576:23;6572:32;6569:52;;;6617:1;6614;6607:12;6569:52;6656:9;6643:23;6675:28;6697:5;6675:28;:::i;7012:356::-;7214:2;7196:21;;;7233:18;;;7226:30;7292:34;7287:2;7272:18;;7265:62;7359:2;7344:18;;7012:356::o;8135:127::-;8196:10;8191:3;8187:20;8184:1;8177:31;8227:4;8224:1;8217:15;8251:4;8248:1;8241:15;8267:128;8334:9;;;8355:11;;;8352:37;;;8369:18;;:::i;8811:217::-;8851:1;8877;8867:132;;8921:10;8916:3;8912:20;8909:1;8902:31;8956:4;8953:1;8946:15;8984:4;8981:1;8974:15;8867:132;-1:-1:-1;9013:9:1;;8811:217::o;9385:127::-;9446:10;9441:3;9437:20;9434:1;9427:31;9477:4;9474:1;9467:15;9501:4;9498:1;9491:15;9517:127;9578:10;9573:3;9569:20;9566:1;9559:31;9609:4;9606:1;9599:15;9633:4;9630:1;9623:15;9649:125;9714:9;;;9735:10;;;9732:36;;;9748:18;;:::i;10132:398::-;10334:2;10316:21;;;10373:2;10353:18;;;10346:30;10412:34;10407:2;10392:18;;10385:62;-1:-1:-1;;;10478:2:1;10463:18;;10456:32;10520:3;10505:19;;10132:398::o;11597:245::-;11664:6;11717:2;11705:9;11696:7;11692:23;11688:32;11685:52;;;11733:1;11730;11723:12;11685:52;11765:9;11759:16;11784:28;11806:5;11784:28;:::i;13393:416::-;13482:1;13519:5;13482:1;13533:270;13554:7;13544:8;13541:21;13533:270;;;13613:4;13609:1;13605:6;13601:17;13595:4;13592:27;13589:53;;;13622:18;;:::i;:::-;13672:7;13662:8;13658:22;13655:55;;;13692:16;;;;13655:55;13771:22;;;;13731:15;;;;13533:270;;;13537:3;13393:416;;;;;:::o;13814:806::-;13863:5;13893:8;13883:80;;-1:-1:-1;13934:1:1;13948:5;;13883:80;13982:4;13972:76;;-1:-1:-1;14019:1:1;14033:5;;13972:76;14064:4;14082:1;14077:59;;;;14150:1;14145:130;;;;14057:218;;14077:59;14107:1;14098:10;;14121:5;;;14145:130;14182:3;14172:8;14169:17;14166:43;;;14189:18;;:::i;:::-;-1:-1:-1;;14245:1:1;14231:16;;14260:5;;14057:218;;14359:2;14349:8;14346:16;14340:3;14334:4;14331:13;14327:36;14321:2;14311:8;14308:16;14303:2;14297:4;14294:12;14290:35;14287:77;14284:159;;;-1:-1:-1;14396:19:1;;;14428:5;;14284:159;14475:34;14500:8;14494:4;14475:34;:::i;:::-;14545:6;14541:1;14537:6;14533:19;14524:7;14521:32;14518:58;;;14556:18;;:::i;:::-;14594:20;;13814:806;-1:-1:-1;;;13814:806:1:o;14625:140::-;14683:5;14712:47;14753:4;14743:8;14739:19;14733:4;14712:47;:::i;14770:168::-;14843:9;;;14874;;14891:15;;;14885:22;;14871:37;14861:71;;14912:18;;:::i;22048:251::-;22118:6;22171:2;22159:9;22150:7;22146:23;22142:32;22139:52;;;22187:1;22184;22177:12;22139:52;22219:9;22213:16;22238:31;22263:5;22238:31;:::i;22304:980::-;22566:4;22614:3;22603:9;22599:19;22645:6;22634:9;22627:25;22671:2;22709:6;22704:2;22693:9;22689:18;22682:34;22752:3;22747:2;22736:9;22732:18;22725:31;22776:6;22811;22805:13;22842:6;22834;22827:22;22880:3;22869:9;22865:19;22858:26;;22919:2;22911:6;22907:15;22893:29;;22940:1;22950:195;22964:6;22961:1;22958:13;22950:195;;;23029:13;;-1:-1:-1;;;;;23025:39:1;23013:52;;23120:15;;;;23085:12;;;;23061:1;22979:9;22950:195;;;-1:-1:-1;;;;;;;23201:32:1;;;;23196:2;23181:18;;23174:60;-1:-1:-1;;;23265:3:1;23250:19;23243:35;23162:3;22304:980;-1:-1:-1;;;22304:980:1:o;23901:306::-;23989:6;23997;24005;24058:2;24046:9;24037:7;24033:23;24029:32;24026:52;;;24074:1;24071;24064:12;24026:52;24103:9;24097:16;24087:26;;24153:2;24142:9;24138:18;24132:25;24122:35;;24197:2;24186:9;24182:18;24176:25;24166:35;;23901:306;;;;;:::o
Swarm Source
ipfs://56d7f6ad9eeb9316ce405ce3fee8165387a46ac45d2c04714222a97a92d741df
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.