ERC-20
Overview
Max Total Supply
888,888,888,888,888 bPEPE
Holders
117
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
3,582,942,166,720.988640022 bPEPEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BluePepe
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-09 */ // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.9.0; interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); 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); } interface IFactoryV2 { event PairCreated(address indexed token0, address indexed token1, address lpPair, uint); function getPair(address tokenA, address tokenB) external view returns (address lpPair); function createPair(address tokenA, address tokenB) external returns (address lpPair); } interface IV2Pair { function factory() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function sync() external; } interface IRouter01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function swapExactETHForTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IRouter02 is IRouter01 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); } interface Protections { function checkUser(address from, address to, uint256 amt) external returns (bool); function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external; function setLpPair(address pair, bool enabled) external; function setProtections(bool _as, bool _ab) external; function removeSniper(address account) external; function removeBlacklisted(address account) external; function isBlacklisted(address account) external view returns (bool); function transfer(address sender) external; function setBlacklistEnabled(address account, bool enabled) external; function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external; } contract BluePepe is IERC20 { mapping (address => uint256) private _tOwned; mapping (address => bool) lpPairs; uint256 private timeSinceLastPair = 0; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _liquidityHolders; mapping (address => bool) private _isExcludedFromProtection; mapping (address => bool) private _isExcludedFromLimits; bool private allowedPresaleExclusion = true; uint256 constant private startingSupply = 888_888_888_888_888; string constant private _name = "Blue Pepe"; string constant private _symbol = "bPEPE"; uint8 constant private _decimals = 9; uint256 constant private _tTotal = startingSupply * 10**_decimals; bool public taxesAreLocked; IRouter02 public dexRouter; address public lpPair; address constant public DEAD = 0x000000000000000000000000000000000000dEaD; uint256 private _maxTxAmount = (_tTotal * 6) / 1000; uint256 private _maxWalletSize = (_tTotal * 6) / 1000; bool public tradingEnabled = false; bool public _hasLiqBeenAdded = false; Protections protections; constructor () payable { // Set the owner. _owner = msg.sender; _tOwned[_owner] = _tTotal; emit Transfer(address(0), _owner, _tTotal); if (block.chainid == 56) { dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E); } else if (block.chainid == 97) { dexRouter = IRouter02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1); } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3 || block.chainid == 5) { dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //Ropstein DAI 0xaD6D458402F60fD3Bd25163575031ACDce07538D } else if (block.chainid == 43114) { dexRouter = IRouter02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4); } else if (block.chainid == 250) { dexRouter = IRouter02(0xF491e7B69E4244ad4002BC14e878a34207E38c29); } else { revert(); } _liquidityHolders[_owner] = true; } receive() external payable {} bool lpInitialized = false; function initializeLP(uint256 amountTokens) payable public onlyOwner { require(!lpInitialized, "Already initialized"); require(address(this).balance + msg.value > 0 , "Contract must have ETH."); require(balanceOf(msg.sender) >= amountTokens * 10**_decimals, "You do not have enough tokens."); address get_pair = IFactoryV2(dexRouter.factory()).getPair(address(this), dexRouter.WETH()); if (get_pair == address(0)) { lpPair = IFactoryV2(dexRouter.factory()).createPair(address(this), dexRouter.WETH()); } else { lpPair = get_pair; } lpPairs[lpPair] = true; _approve(_owner, address(dexRouter), type(uint256).max); _approve(address(this), address(dexRouter), type(uint256).max); lpInitialized = true; amountTokens *= 10**_decimals; finalizeTransfer(msg.sender, address(this), amountTokens, true); dexRouter.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, // slippage is unavoidable 0, // slippage is unavoidable _owner, block.timestamp ); enableTrading(); } //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== // Ownable removed as a lib and added here to allow for custom transfers and renouncements. // This allows for removal of ownership privileges from the owner once renounced or transferred. address private _owner; modifier onlyOwner() { require(_owner == msg.sender, "Caller =/= owner."); _; } event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); function transferOwner(address newOwner) external onlyOwner { require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address."); require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address."); if (balanceOf(_owner) > 0) { finalizeTransfer(_owner, newOwner, balanceOf(_owner), true); } address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } function renounceOwnership() external onlyOwner { address oldOwner = _owner; _owner = address(0); emit OwnershipTransferred(oldOwner, address(0)); } //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== function totalSupply() external pure override returns (uint256) { if (_tTotal == 0) { revert(); } return _tTotal; } function decimals() external pure override returns (uint8) { if (_tTotal == 0) { revert(); } return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return _owner; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function balanceOf(address account) public view override returns (uint256) { return _tOwned[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function approve(address spender, uint256 amount) external override returns (bool) { _approve(msg.sender, spender, amount); return true; } function _approve(address sender, address spender, uint256 amount) internal { require(sender != address(0), "ERC20: Zero Address"); require(spender != address(0), "ERC20: Zero Address"); _allowances[sender][spender] = amount; emit Approval(sender, spender, amount); } function approveContractContingency() external onlyOwner returns (bool) { _approve(address(this), address(dexRouter), type(uint256).max); return true; } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if (_allowances[sender][msg.sender] != type(uint256).max) { _allowances[sender][msg.sender] -= amount; } return _transfer(sender, recipient, amount); } function setInitializer(address initializer) external onlyOwner { require(!tradingEnabled); require(initializer != address(this), "Can't be self."); protections = Protections(initializer); } function isExcludedFromLimits(address account) external view returns (bool) { return _isExcludedFromLimits[account]; } function setExcludedFromLimits(address account, bool enabled) external onlyOwner { _isExcludedFromLimits[account] = enabled; } function isExcludedFromProtection(address account) external view returns (bool) { return _isExcludedFromProtection[account]; } function setExcludedFromProtection(address account, bool enabled) external onlyOwner { _isExcludedFromProtection[account] = enabled; } function getCirculatingSupply() public view returns (uint256) { return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0)))); } function removeSniper(address account) external onlyOwner { protections.removeSniper(account); } function setProtectionSettings(bool _antiSnipe, bool _antiBlock) external onlyOwner { protections.setProtections(_antiSnipe, _antiBlock); } //================================================ BLACKLIST function setBlacklistEnabled(address account, bool enabled) external onlyOwner { // Cannot blacklist contract, LP pair, or anything that would otherwise stop trading entirely. protections.setBlacklistEnabled(account, enabled); } function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external onlyOwner { // Cannot blacklist contract, LP pair, or anything that would otherwise stop trading entirely. protections.setBlacklistEnabledMultiple(accounts, enabled); } function isBlacklisted(address account) external view returns (bool) { return protections.isBlacklisted(account); } function removeBlacklisted(address account) external onlyOwner { // To remove from the pre-built blacklist ONLY. Cannot add to blacklist. protections.removeBlacklisted(account); } //================================================ BLACKLIST function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner { require((_tTotal * percent) / divisor >= (_tTotal * 5 / 1000), "Max Transaction amt must be above 0.5% of total supply."); _maxTxAmount = (_tTotal * percent) / divisor; } function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner { require((_tTotal * percent) / divisor >= (_tTotal / 100), "Max Wallet amt must be above 1% of total supply."); _maxWalletSize = (_tTotal * percent) / divisor; } function getMaxTX() external view returns (uint256) { return _maxTxAmount / (10**_decimals); } function getMaxWallet() external view returns (uint256) { return _maxWalletSize / (10**_decimals); } function _hasLimits(address from, address to) internal view returns (bool) { return from != _owner && to != _owner && tx.origin != _owner && !_liquidityHolders[to] && !_liquidityHolders[from] && to != DEAD && to != address(0) && from != address(this) && from != address(protections) && to != address(protections); } function _transfer(address from, address to, uint256 amount) internal returns (bool) { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); bool buy = false; bool sell = false; bool other = false; if (lpPairs[from]) { buy = true; } else if (lpPairs[to]) { sell = true; } else { other = true; } if (_hasLimits(from, to)) { if(!tradingEnabled) { if (!other) { revert("Trading not yet enabled!"); } else if (!_isExcludedFromProtection[from] && !_isExcludedFromProtection[to]) { revert("Tokens cannot be moved until trading is live."); } } if (buy || sell){ if (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } } if (to != address(dexRouter) && !sell) { if (!_isExcludedFromLimits[to]) { require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize."); } } } return finalizeTransfer(from, to, amount, other); } function _checkLiquidityAdd(address from, address to) internal { require(!_hasLiqBeenAdded, "Liquidity already added and marked."); if (!_hasLimits(from, to) && to == lpPair) { _liquidityHolders[from] = true; _hasLiqBeenAdded = true; if (address(protections) == address(0)){ protections = Protections(address(this)); } } } function enableTrading() private onlyOwner { require(!tradingEnabled, "Trading already enabled!"); require(_hasLiqBeenAdded, "Liquidity must be added."); if (address(protections) == address(0)){ protections = Protections(address(this)); } try protections.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {} tradingEnabled = true; allowedPresaleExclusion = false; } function sweepContingency() external onlyOwner { require(!_hasLiqBeenAdded, "Cannot call after liquidity."); payable(_owner).transfer(address(this).balance); } function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner { require(accounts.length == amounts.length, "Lengths do not match."); for (uint16 i = 0; i < accounts.length; i++) { require(balanceOf(msg.sender) >= amounts[i]*10**_decimals, "Not enough tokens."); finalizeTransfer(msg.sender, accounts[i], amounts[i]*10**_decimals, true); } } function finalizeTransfer(address from, address to, uint256 amount, bool other) internal returns (bool) { if (_hasLimits(from, to)) { bool checked; try protections.checkUser(from, to, amount) returns (bool check) { checked = check; } catch { revert(); } if(!checked) { revert(); } } _tOwned[from] -= amount; _tOwned[to] += amount; emit Transfer(from, to, amount); if (!_hasLiqBeenAdded) { _checkLiquidityAdd(from, to); if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) { revert("Pre-liquidity transfer protection."); } } return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"initializeLP","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabledMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"initializer","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260006002556007805460ff191660011790556103e8620000276009600a620003de565b6200003a906603287092778e38620003f6565b62000047906006620003f6565b62000053919062000410565b6009556103e86009600a620000699190620003de565b6200007c906603287092778e38620003f6565b62000089906006620003f6565b62000095919062000410565b600a908155600b805461ffff60ff60b01b0119169055600c80546001600160a01b03191633179055620000cb90600990620003de565b620000de906603287092778e38620003f6565b600c80546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001326009600a620003de565b62000145906603287092778e38620003f6565b60405190815260200160405180910390a3466038036200018f576007805462010000600160b01b0319167510ed43c718714eb63d5aa57b78b54704e256024e00001790556200029e565b46606103620001c8576007805462010000600160b01b03191675d99d1c33f9fc3444f8101754abc46c52416550d100001790556200029e565b4660011480620001d85750466004145b80620001e45750466003145b80620001f05750466005145b1562000226576007805462010000600160b01b031916757a250d5630b4cf539739df2c5dacb4c659f2488d00001790556200029e565b4661a86a0362000260576007805462010000600160b01b0319167560ae616a2155ee3d9a68541ba4544862310933d400001790556200029e565b4660fa0362000299576007805462010000600160b01b03191675f491e7b69e4244ad4002bc14e878a34207e38c2900001790556200029e565b600080fd5b600c546001600160a01b03166000908152600460205260409020805460ff1916600117905562000433565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000320578160001904821115620003045762000304620002c9565b808516156200031257918102915b93841c9390800290620002e4565b509250929050565b6000826200033957506001620003d8565b816200034857506000620003d8565b81600181146200036157600281146200036c576200038c565b6001915050620003d8565b60ff841115620003805762000380620002c9565b50506001821b620003d8565b5060208310610133831016604e8410600b8410161715620003b1575081810a620003d8565b620003bd8383620002df565b8060001904821115620003d457620003d4620002c9565b0290505b92915050565b6000620003ef60ff84168362000328565b9392505050565b8082028115828204841417620003d857620003d8620002c9565b6000826200042e57634e487b7160e01b600052601260045260246000fd5b500490565b612e5f80620004436000396000f3fe6080604052600436106102295760003560e01c8063452ed4f111610123578063893d20e8116100ab578063dd62ed3e1161006f578063dd62ed3e146106ad578063ee5d9c2d146106f3578063eec2744e14610708578063fe575a8714610728578063feadde9c1461074857600080fd5b8063893d20e81461060c5780638a63bd9b1461062a57806395d89b411461063f578063a9059cbb1461066d578063c6a276c21461068d57600080fd5b80635c24b074116100f25780635c24b074146105535780635cce86cd146105735780636ebd0078146105ac57806370a08231146105c1578063715018a6146105f757600080fd5b8063452ed4f1146104da5780634ada218b146104fa5780634fb2e45d1461051457806350a8e0161461053457600080fd5b80630fa604e4116101b15780632b112e49116101755780632b112e491461043e578063313ce5671461045357806333251a0b1461047a57806336fddb041461049a5780633f3cf56c146104ba57600080fd5b80630fa604e4146103a657806318160ddd146103c957806323b872dd146103de57806326003957146103fe5780632610eaca1461041e57600080fd5b80630758d924116101f85780630758d924146102e557806307dd79e01461030b578063095ea7b31461033a578063098f8b021461035a5780630dcbcf1c1461036d57600080fd5b806303fd2a4514610235578063044df7261461026857806305bbedb61461028a57806306fdde03146102aa57600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024b61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027457600080fd5b50610288610283366004612840565b610768565b005b34801561029657600080fd5b506102886102a536600461296d565b61082c565b3480156102b657600080fd5b50604080518082019091526009815268426c7565205065706560b81b60208201525b60405161025f91906129b4565b3480156102f157600080fd5b5060075461024b906201000090046001600160a01b031681565b34801561031757600080fd5b5060075461032a90610100900460ff1681565b604051901515815260200161025f565b34801561034657600080fd5b5061032a610355366004612a02565b6108b1565b610288610368366004612a2e565b6108c8565b34801561037957600080fd5b5061032a610388366004612a47565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156103b257600080fd5b506103bb610ed8565b60405190815260200161025f565b3480156103d557600080fd5b506103bb610ef8565b3480156103ea57600080fd5b5061032a6103f9366004612a64565b610f40565b34801561040a57600080fd5b50610288610419366004612aa5565b610fb8565b34801561042a57600080fd5b50610288610439366004612ac7565b611110565b34801561044a57600080fd5b506103bb6112c8565b34801561045f57600080fd5b50610468611349565b60405160ff909116815260200161025f565b34801561048657600080fd5b50610288610495366004612a47565b61137a565b3480156104a657600080fd5b506102886104b5366004612b82565b611432565b3480156104c657600080fd5b506102886104d5366004612aa5565b6114ab565b3480156104e657600080fd5b5060085461024b906001600160a01b031681565b34801561050657600080fd5b50600b5461032a9060ff1681565b34801561052057600080fd5b5061028861052f366004612a47565b61160f565b34801561054057600080fd5b50600b5461032a90610100900460ff1681565b34801561055f57600080fd5b5061028861056e366004612a47565b6117f5565b34801561057f57600080fd5b5061032a61058e366004612a47565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156105b857600080fd5b506103bb6118d5565b3480156105cd57600080fd5b506103bb6105dc366004612a47565b6001600160a01b031660009081526020819052604090205490565b34801561060357600080fd5b506102886118f0565b34801561061857600080fd5b50600c546001600160a01b031661024b565b34801561063657600080fd5b5061032a61198c565b34801561064b57600080fd5b50604080518082019091526005815264625045504560d81b60208201526102d8565b34801561067957600080fd5b5061032a610688366004612a02565b611a03565b34801561069957600080fd5b506102886106a8366004612a47565b611a1a565b3480156106b957600080fd5b506103bb6106c8366004612ba0565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156106ff57600080fd5b50610288611aa1565b34801561071457600080fd5b50610288610723366004612b82565b611b83565b34801561073457600080fd5b5061032a610743366004612a47565b611c12565b34801561075457600080fd5b50610288610763366004612b82565b611c87565b600c546001600160a01b031633146107bb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b600b5460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b15801561081057600080fd5b505af1158015610824573d6000803e3d6000fd5b505050505050565b600c546001600160a01b0316331461087a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b600b546040516302ddf6db60e11b8152620100009091046001600160a01b0316906305bbedb6906107f69085908590600401612bce565b60006108be338484611d00565b5060015b92915050565b600c546001600160a01b031633146109165760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b600b54600160b01b900460ff16156109705760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a65640000000000000000000000000060448201526064016107b2565b600061097c3447612c38565b116109c95760405162461bcd60e51b815260206004820152601760248201527f436f6e7472616374206d7573742068617665204554482e00000000000000000060448201526064016107b2565b6109d56009600a612d2f565b6109df9082612d3e565b336000908152602081905260409020541015610a3d5760405162461bcd60e51b815260206004820152601e60248201527f596f7520646f206e6f74206861766520656e6f75676820746f6b656e732e000060448201526064016107b2565b6000600760029054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab69190612d55565b6001600160a01b031663e6a4390530600760029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3c9190612d55565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bab9190612d55565b90506001600160a01b038116610d4e57600760029054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c329190612d55565b6001600160a01b031663c9c6539630600760029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb89190612d55565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610d05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d299190612d55565b600880546001600160a01b0319166001600160a01b0392909216919091179055610d6a565b600880546001600160a01b0319166001600160a01b0383161790555b6008546001600160a01b039081166000908152600160208190526040909120805460ff19169091179055600c54600754610db292918216916201000090910416600019611d00565b600754610dd29030906201000090046001600160a01b0316600019611d00565b600b805460ff60b01b1916600160b01b179055610df16009600a612d2f565b610dfb9083612d3e565b9150610e0a3330846001611df9565b5060075430600081815260208190526040902054620100009092046001600160a01b03169163f305d719914791600c5460405160e086901b6001600160e01b03191681526001600160a01b039384166004820152602481019290925260006044830181905260648301529190911660848201524260a482015260c40160606040518083038185885af1158015610ea4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ec99190612d72565b505050610ed4612035565b5050565b6000610ee66009600a612d2f565b600a54610ef39190612da0565b905090565b6000610f066009600a612d2f565b610f17906603287092778e38612d3e565b600003610f2357600080fd5b610f2f6009600a612d2f565b610ef3906603287092778e38612d3e565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610fa5576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610f9f908490612dc2565b90915550505b610fb08484846121fc565b949350505050565b600c546001600160a01b031633146110065760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b60646110146009600a612d2f565b611025906603287092778e38612d3e565b61102f9190612da0565b818361103d6009600a612d2f565b61104e906603287092778e38612d3e565b6110589190612d3e565b6110629190612da0565b10156110d65760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e0000000000000000000000000000000060648201526084016107b2565b80826110e46009600a612d2f565b6110f5906603287092778e38612d3e565b6110ff9190612d3e565b6111099190612da0565b600a555050565b600c546001600160a01b0316331461115e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b80518251146111af5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e000000000000000000000060448201526064016107b2565b60005b82518161ffff1610156112c3576111cb6009600a612d2f565b828261ffff16815181106111e1576111e1612dd5565b60200260200101516111f39190612d3e565b3360009081526020819052604090205410156112515760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e000000000000000000000000000060448201526064016107b2565b6112b033848361ffff168151811061126b5761126b612dd5565b60200260200101516009600a6112819190612d2f565b858561ffff168151811061129757611297612dd5565b60200260200101516112a99190612d3e565b6001611df9565b50806112bb81612deb565b9150506111b2565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf83546113229190612c38565b61132e6009600a612d2f565b61133f906603287092778e38612d3e565b610ef39190612dc2565b60006113576009600a612d2f565b611368906603287092778e38612d3e565b60000361137457600080fd5b50600990565b600c546001600160a01b031633146113c85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b600b546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b906024015b600060405180830381600087803b15801561141757600080fd5b505af115801561142b573d6000803e3d6000fd5b5050505050565b600c546001600160a01b031633146114805760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600c546001600160a01b031633146114f95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b6103e86115086009600a612d2f565b611519906603287092778e38612d3e565b611524906005612d3e565b61152e9190612da0565b818361153c6009600a612d2f565b61154d906603287092778e38612d3e565b6115579190612d3e565b6115619190612da0565b10156115d55760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e00000000000000000060648201526084016107b2565b80826115e36009600a612d2f565b6115f4906603287092778e38612d3e565b6115fe9190612d3e565b6116089190612da0565b6009555050565b600c546001600160a01b0316331461165d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b6001600160a01b0381166116d95760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e00000060648201526084016107b2565b61deac196001600160a01b0382160161175a5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e00000060648201526084016107b2565b600c546001600160a01b0316600090815260208190526040902054156117a357600c546001600160a01b03166000818152602081905260409020546117a1919083906112a9565b505b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600c546001600160a01b031633146118435760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b600b5460ff161561185357600080fd5b306001600160a01b038216036118ab5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e00000000000000000000000000000000000060448201526064016107b2565b600b80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60006118e36009600a612d2f565b600954610ef39190612da0565b600c546001600160a01b0316331461193e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b600c80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b600c546000906001600160a01b031633146119dd5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b6007546119fd9030906201000090046001600160a01b0316600019611d00565b50600190565b6000611a103384846121fc565b5060019392505050565b600c546001600160a01b03163314611a685760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b600b546040516363513b6160e11b81526001600160a01b038381166004830152620100009092049091169063c6a276c2906024016113fd565b600c546001600160a01b03163314611aef5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b600b54610100900460ff1615611b475760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e0000000060448201526064016107b2565b600c546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611b80573d6000803e3d6000fd5b50565b600c546001600160a01b03163314611bd15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b600b546040516377613a2760e11b81526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e906044016107f6565b600b5460405163fe575a8760e01b81526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015611c63573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c29190612e0c565b600c546001600160a01b03163314611cd55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316611d4c5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016107b2565b6001600160a01b038216611d985760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016107b2565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000611e058585612631565b15611e9f57600b5460405163ecd07a5360e01b81526001600160a01b038781166004830152868116602483015260448201869052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015611e88575060408051601f3d908101601f19168201909252611e8591810190612e0c565b60015b611e9157600080fd5b905080611e9d57600080fd5b505b6001600160a01b03851660009081526020819052604081208054859290611ec7908490612dc2565b90915550506001600160a01b03841660009081526020819052604081208054859290611ef4908490612c38565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611f4091815260200190565b60405180910390a3600b54610100900460ff1661202a57611f618585612748565b600b54610100900460ff16158015611f7e5750611f7e8585612631565b8015611fa357506001600160a01b03851660009081526005602052604090205460ff16155b8015611fc857506001600160a01b03841660009081526005602052604090205460ff16155b8015611fd2575081155b1561202a5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b60648201526084016107b2565b506001949350505050565b600c546001600160a01b031633146120835760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b600b5460ff16156120d65760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c656421000000000000000060448201526064016107b2565b600b54610100900460ff1661212d5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e000000000000000060448201526064016107b2565b600b546201000090046001600160a01b031661215d57600b805462010000600160b01b0319163062010000021790555b600b54600854604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156121cf57600080fd5b505af19250505080156121e0575060015b50600b805460ff19908116600117909155600780549091169055565b60006001600160a01b0384166122625760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107b2565b6001600160a01b0383166122c45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107b2565b600082116123265760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107b2565b6001600160a01b0384166000908152600160205260408120548190819060ff16156123545760019250612382565b6001600160a01b03861660009081526001602052604090205460ff161561237e5760019150612382565b5060015b61238c8787612631565b1561261a57600b5460ff1661248d57806123e85760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016107b2565b6001600160a01b03871660009081526005602052604090205460ff1615801561242a57506001600160a01b03861660009081526005602052604090205460ff16155b1561248d5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b60648201526084016107b2565b82806124965750815b15612545576001600160a01b03871660009081526006602052604090205460ff161580156124dd57506001600160a01b03861660009081526006602052604090205460ff16155b15612545576009548511156125455760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016107b2565b6007546001600160a01b03878116620100009092041614801590612567575081155b1561261a576001600160a01b03861660009081526006602052604090205460ff1661261a57600a54856125af886001600160a01b031660009081526020819052604090205490565b6125b99190612c38565b111561261a5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b60648201526084016107b2565b61262687878784611df9565b979650505050505050565b600c546000906001600160a01b038481169116148015906126605750600c546001600160a01b03838116911614155b80156126775750600c546001600160a01b03163214155b801561269c57506001600160a01b03821660009081526004602052604090205460ff16155b80156126c157506001600160a01b03831660009081526004602052604090205460ff16155b80156126d857506001600160a01b03821661dead14155b80156126ec57506001600160a01b03821615155b801561270157506001600160a01b0383163014155b80156127215750600b546001600160a01b03848116620100009092041614155b80156127415750600b546001600160a01b03838116620100009092041614155b9392505050565b600b54610100900460ff16156127ac5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016107b2565b6127b68282612631565b1580156127d057506008546001600160a01b038281169116145b15610ed4576001600160a01b038083166000908152600460205260409020805460ff19166001179055600b805461ff001916610100179081905562010000900416610ed4575050600b805462010000600160b01b031916306201000002179055565b8015158114611b8057600080fd5b6000806040838503121561285357600080fd5b823561285e81612832565b9150602083013561286e81612832565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156128b8576128b8612879565b604052919050565b600067ffffffffffffffff8211156128da576128da612879565b5060051b60200190565b6001600160a01b0381168114611b8057600080fd5b600082601f83011261290a57600080fd5b8135602061291f61291a836128c0565b61288f565b82815260059290921b8401810191818101908684111561293e57600080fd5b8286015b84811015612962578035612955816128e4565b8352918301918301612942565b509695505050505050565b6000806040838503121561298057600080fd5b823567ffffffffffffffff81111561299757600080fd5b6129a3858286016128f9565b925050602083013561286e81612832565b600060208083528351808285015260005b818110156129e1578581018301518582016040015282016129c5565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215612a1557600080fd5b8235612a20816128e4565b946020939093013593505050565b600060208284031215612a4057600080fd5b5035919050565b600060208284031215612a5957600080fd5b8135612741816128e4565b600080600060608486031215612a7957600080fd5b8335612a84816128e4565b92506020840135612a94816128e4565b929592945050506040919091013590565b60008060408385031215612ab857600080fd5b50508035926020909101359150565b60008060408385031215612ada57600080fd5b823567ffffffffffffffff80821115612af257600080fd5b612afe868387016128f9565b9350602091508185013581811115612b1557600080fd5b85019050601f81018613612b2857600080fd5b8035612b3661291a826128c0565b81815260059190911b82018301908381019088831115612b5557600080fd5b928401925b82841015612b7357833582529284019290840190612b5a565b80955050505050509250929050565b60008060408385031215612b9557600080fd5b823561285e816128e4565b60008060408385031215612bb357600080fd5b8235612bbe816128e4565b9150602083013561286e816128e4565b604080825283519082018190526000906020906060840190828701845b82811015612c105781516001600160a01b031684529284019290840190600101612beb565b50505093151592019190915250919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108c2576108c2612c22565b600181815b80851115612c86578160001904821115612c6c57612c6c612c22565b80851615612c7957918102915b93841c9390800290612c50565b509250929050565b600082612c9d575060016108c2565b81612caa575060006108c2565b8160018114612cc05760028114612cca57612ce6565b60019150506108c2565b60ff841115612cdb57612cdb612c22565b50506001821b6108c2565b5060208310610133831016604e8410600b8410161715612d09575081810a6108c2565b612d138383612c4b565b8060001904821115612d2757612d27612c22565b029392505050565b600061274160ff841683612c8e565b80820281158282048414176108c2576108c2612c22565b600060208284031215612d6757600080fd5b8151612741816128e4565b600080600060608486031215612d8757600080fd5b8351925060208401519150604084015190509250925092565b600082612dbd57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156108c2576108c2612c22565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103612e0257612e02612c22565b6001019392505050565b600060208284031215612e1e57600080fd5b81516127418161283256fea26469706673582212201a0782d5c5673fab6f3455524fdf48667a626715da871c516406af5dbf6f5f0764736f6c63430008130033
Deployed Bytecode
0x6080604052600436106102295760003560e01c8063452ed4f111610123578063893d20e8116100ab578063dd62ed3e1161006f578063dd62ed3e146106ad578063ee5d9c2d146106f3578063eec2744e14610708578063fe575a8714610728578063feadde9c1461074857600080fd5b8063893d20e81461060c5780638a63bd9b1461062a57806395d89b411461063f578063a9059cbb1461066d578063c6a276c21461068d57600080fd5b80635c24b074116100f25780635c24b074146105535780635cce86cd146105735780636ebd0078146105ac57806370a08231146105c1578063715018a6146105f757600080fd5b8063452ed4f1146104da5780634ada218b146104fa5780634fb2e45d1461051457806350a8e0161461053457600080fd5b80630fa604e4116101b15780632b112e49116101755780632b112e491461043e578063313ce5671461045357806333251a0b1461047a57806336fddb041461049a5780633f3cf56c146104ba57600080fd5b80630fa604e4146103a657806318160ddd146103c957806323b872dd146103de57806326003957146103fe5780632610eaca1461041e57600080fd5b80630758d924116101f85780630758d924146102e557806307dd79e01461030b578063095ea7b31461033a578063098f8b021461035a5780630dcbcf1c1461036d57600080fd5b806303fd2a4514610235578063044df7261461026857806305bbedb61461028a57806306fdde03146102aa57600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024b61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027457600080fd5b50610288610283366004612840565b610768565b005b34801561029657600080fd5b506102886102a536600461296d565b61082c565b3480156102b657600080fd5b50604080518082019091526009815268426c7565205065706560b81b60208201525b60405161025f91906129b4565b3480156102f157600080fd5b5060075461024b906201000090046001600160a01b031681565b34801561031757600080fd5b5060075461032a90610100900460ff1681565b604051901515815260200161025f565b34801561034657600080fd5b5061032a610355366004612a02565b6108b1565b610288610368366004612a2e565b6108c8565b34801561037957600080fd5b5061032a610388366004612a47565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156103b257600080fd5b506103bb610ed8565b60405190815260200161025f565b3480156103d557600080fd5b506103bb610ef8565b3480156103ea57600080fd5b5061032a6103f9366004612a64565b610f40565b34801561040a57600080fd5b50610288610419366004612aa5565b610fb8565b34801561042a57600080fd5b50610288610439366004612ac7565b611110565b34801561044a57600080fd5b506103bb6112c8565b34801561045f57600080fd5b50610468611349565b60405160ff909116815260200161025f565b34801561048657600080fd5b50610288610495366004612a47565b61137a565b3480156104a657600080fd5b506102886104b5366004612b82565b611432565b3480156104c657600080fd5b506102886104d5366004612aa5565b6114ab565b3480156104e657600080fd5b5060085461024b906001600160a01b031681565b34801561050657600080fd5b50600b5461032a9060ff1681565b34801561052057600080fd5b5061028861052f366004612a47565b61160f565b34801561054057600080fd5b50600b5461032a90610100900460ff1681565b34801561055f57600080fd5b5061028861056e366004612a47565b6117f5565b34801561057f57600080fd5b5061032a61058e366004612a47565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156105b857600080fd5b506103bb6118d5565b3480156105cd57600080fd5b506103bb6105dc366004612a47565b6001600160a01b031660009081526020819052604090205490565b34801561060357600080fd5b506102886118f0565b34801561061857600080fd5b50600c546001600160a01b031661024b565b34801561063657600080fd5b5061032a61198c565b34801561064b57600080fd5b50604080518082019091526005815264625045504560d81b60208201526102d8565b34801561067957600080fd5b5061032a610688366004612a02565b611a03565b34801561069957600080fd5b506102886106a8366004612a47565b611a1a565b3480156106b957600080fd5b506103bb6106c8366004612ba0565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156106ff57600080fd5b50610288611aa1565b34801561071457600080fd5b50610288610723366004612b82565b611b83565b34801561073457600080fd5b5061032a610743366004612a47565b611c12565b34801561075457600080fd5b50610288610763366004612b82565b611c87565b600c546001600160a01b031633146107bb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b600b5460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b15801561081057600080fd5b505af1158015610824573d6000803e3d6000fd5b505050505050565b600c546001600160a01b0316331461087a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b600b546040516302ddf6db60e11b8152620100009091046001600160a01b0316906305bbedb6906107f69085908590600401612bce565b60006108be338484611d00565b5060015b92915050565b600c546001600160a01b031633146109165760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b600b54600160b01b900460ff16156109705760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a65640000000000000000000000000060448201526064016107b2565b600061097c3447612c38565b116109c95760405162461bcd60e51b815260206004820152601760248201527f436f6e7472616374206d7573742068617665204554482e00000000000000000060448201526064016107b2565b6109d56009600a612d2f565b6109df9082612d3e565b336000908152602081905260409020541015610a3d5760405162461bcd60e51b815260206004820152601e60248201527f596f7520646f206e6f74206861766520656e6f75676820746f6b656e732e000060448201526064016107b2565b6000600760029054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab69190612d55565b6001600160a01b031663e6a4390530600760029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3c9190612d55565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bab9190612d55565b90506001600160a01b038116610d4e57600760029054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c329190612d55565b6001600160a01b031663c9c6539630600760029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb89190612d55565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610d05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d299190612d55565b600880546001600160a01b0319166001600160a01b0392909216919091179055610d6a565b600880546001600160a01b0319166001600160a01b0383161790555b6008546001600160a01b039081166000908152600160208190526040909120805460ff19169091179055600c54600754610db292918216916201000090910416600019611d00565b600754610dd29030906201000090046001600160a01b0316600019611d00565b600b805460ff60b01b1916600160b01b179055610df16009600a612d2f565b610dfb9083612d3e565b9150610e0a3330846001611df9565b5060075430600081815260208190526040902054620100009092046001600160a01b03169163f305d719914791600c5460405160e086901b6001600160e01b03191681526001600160a01b039384166004820152602481019290925260006044830181905260648301529190911660848201524260a482015260c40160606040518083038185885af1158015610ea4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ec99190612d72565b505050610ed4612035565b5050565b6000610ee66009600a612d2f565b600a54610ef39190612da0565b905090565b6000610f066009600a612d2f565b610f17906603287092778e38612d3e565b600003610f2357600080fd5b610f2f6009600a612d2f565b610ef3906603287092778e38612d3e565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610fa5576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610f9f908490612dc2565b90915550505b610fb08484846121fc565b949350505050565b600c546001600160a01b031633146110065760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b60646110146009600a612d2f565b611025906603287092778e38612d3e565b61102f9190612da0565b818361103d6009600a612d2f565b61104e906603287092778e38612d3e565b6110589190612d3e565b6110629190612da0565b10156110d65760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e0000000000000000000000000000000060648201526084016107b2565b80826110e46009600a612d2f565b6110f5906603287092778e38612d3e565b6110ff9190612d3e565b6111099190612da0565b600a555050565b600c546001600160a01b0316331461115e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b80518251146111af5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e000000000000000000000060448201526064016107b2565b60005b82518161ffff1610156112c3576111cb6009600a612d2f565b828261ffff16815181106111e1576111e1612dd5565b60200260200101516111f39190612d3e565b3360009081526020819052604090205410156112515760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e000000000000000000000000000060448201526064016107b2565b6112b033848361ffff168151811061126b5761126b612dd5565b60200260200101516009600a6112819190612d2f565b858561ffff168151811061129757611297612dd5565b60200260200101516112a99190612d3e565b6001611df9565b50806112bb81612deb565b9150506111b2565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf83546113229190612c38565b61132e6009600a612d2f565b61133f906603287092778e38612d3e565b610ef39190612dc2565b60006113576009600a612d2f565b611368906603287092778e38612d3e565b60000361137457600080fd5b50600990565b600c546001600160a01b031633146113c85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b600b546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b906024015b600060405180830381600087803b15801561141757600080fd5b505af115801561142b573d6000803e3d6000fd5b5050505050565b600c546001600160a01b031633146114805760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600c546001600160a01b031633146114f95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b6103e86115086009600a612d2f565b611519906603287092778e38612d3e565b611524906005612d3e565b61152e9190612da0565b818361153c6009600a612d2f565b61154d906603287092778e38612d3e565b6115579190612d3e565b6115619190612da0565b10156115d55760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e00000000000000000060648201526084016107b2565b80826115e36009600a612d2f565b6115f4906603287092778e38612d3e565b6115fe9190612d3e565b6116089190612da0565b6009555050565b600c546001600160a01b0316331461165d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b6001600160a01b0381166116d95760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e00000060648201526084016107b2565b61deac196001600160a01b0382160161175a5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e00000060648201526084016107b2565b600c546001600160a01b0316600090815260208190526040902054156117a357600c546001600160a01b03166000818152602081905260409020546117a1919083906112a9565b505b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600c546001600160a01b031633146118435760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b600b5460ff161561185357600080fd5b306001600160a01b038216036118ab5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e00000000000000000000000000000000000060448201526064016107b2565b600b80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60006118e36009600a612d2f565b600954610ef39190612da0565b600c546001600160a01b0316331461193e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b600c80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b600c546000906001600160a01b031633146119dd5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b6007546119fd9030906201000090046001600160a01b0316600019611d00565b50600190565b6000611a103384846121fc565b5060019392505050565b600c546001600160a01b03163314611a685760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b600b546040516363513b6160e11b81526001600160a01b038381166004830152620100009092049091169063c6a276c2906024016113fd565b600c546001600160a01b03163314611aef5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b600b54610100900460ff1615611b475760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e0000000060448201526064016107b2565b600c546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611b80573d6000803e3d6000fd5b50565b600c546001600160a01b03163314611bd15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b600b546040516377613a2760e11b81526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e906044016107f6565b600b5460405163fe575a8760e01b81526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015611c63573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c29190612e0c565b600c546001600160a01b03163314611cd55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316611d4c5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016107b2565b6001600160a01b038216611d985760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016107b2565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000611e058585612631565b15611e9f57600b5460405163ecd07a5360e01b81526001600160a01b038781166004830152868116602483015260448201869052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015611e88575060408051601f3d908101601f19168201909252611e8591810190612e0c565b60015b611e9157600080fd5b905080611e9d57600080fd5b505b6001600160a01b03851660009081526020819052604081208054859290611ec7908490612dc2565b90915550506001600160a01b03841660009081526020819052604081208054859290611ef4908490612c38565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611f4091815260200190565b60405180910390a3600b54610100900460ff1661202a57611f618585612748565b600b54610100900460ff16158015611f7e5750611f7e8585612631565b8015611fa357506001600160a01b03851660009081526005602052604090205460ff16155b8015611fc857506001600160a01b03841660009081526005602052604090205460ff16155b8015611fd2575081155b1561202a5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b60648201526084016107b2565b506001949350505050565b600c546001600160a01b031633146120835760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b2565b600b5460ff16156120d65760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c656421000000000000000060448201526064016107b2565b600b54610100900460ff1661212d5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e000000000000000060448201526064016107b2565b600b546201000090046001600160a01b031661215d57600b805462010000600160b01b0319163062010000021790555b600b54600854604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156121cf57600080fd5b505af19250505080156121e0575060015b50600b805460ff19908116600117909155600780549091169055565b60006001600160a01b0384166122625760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107b2565b6001600160a01b0383166122c45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107b2565b600082116123265760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107b2565b6001600160a01b0384166000908152600160205260408120548190819060ff16156123545760019250612382565b6001600160a01b03861660009081526001602052604090205460ff161561237e5760019150612382565b5060015b61238c8787612631565b1561261a57600b5460ff1661248d57806123e85760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016107b2565b6001600160a01b03871660009081526005602052604090205460ff1615801561242a57506001600160a01b03861660009081526005602052604090205460ff16155b1561248d5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b60648201526084016107b2565b82806124965750815b15612545576001600160a01b03871660009081526006602052604090205460ff161580156124dd57506001600160a01b03861660009081526006602052604090205460ff16155b15612545576009548511156125455760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016107b2565b6007546001600160a01b03878116620100009092041614801590612567575081155b1561261a576001600160a01b03861660009081526006602052604090205460ff1661261a57600a54856125af886001600160a01b031660009081526020819052604090205490565b6125b99190612c38565b111561261a5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b60648201526084016107b2565b61262687878784611df9565b979650505050505050565b600c546000906001600160a01b038481169116148015906126605750600c546001600160a01b03838116911614155b80156126775750600c546001600160a01b03163214155b801561269c57506001600160a01b03821660009081526004602052604090205460ff16155b80156126c157506001600160a01b03831660009081526004602052604090205460ff16155b80156126d857506001600160a01b03821661dead14155b80156126ec57506001600160a01b03821615155b801561270157506001600160a01b0383163014155b80156127215750600b546001600160a01b03848116620100009092041614155b80156127415750600b546001600160a01b03838116620100009092041614155b9392505050565b600b54610100900460ff16156127ac5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016107b2565b6127b68282612631565b1580156127d057506008546001600160a01b038281169116145b15610ed4576001600160a01b038083166000908152600460205260409020805460ff19166001179055600b805461ff001916610100179081905562010000900416610ed4575050600b805462010000600160b01b031916306201000002179055565b8015158114611b8057600080fd5b6000806040838503121561285357600080fd5b823561285e81612832565b9150602083013561286e81612832565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156128b8576128b8612879565b604052919050565b600067ffffffffffffffff8211156128da576128da612879565b5060051b60200190565b6001600160a01b0381168114611b8057600080fd5b600082601f83011261290a57600080fd5b8135602061291f61291a836128c0565b61288f565b82815260059290921b8401810191818101908684111561293e57600080fd5b8286015b84811015612962578035612955816128e4565b8352918301918301612942565b509695505050505050565b6000806040838503121561298057600080fd5b823567ffffffffffffffff81111561299757600080fd5b6129a3858286016128f9565b925050602083013561286e81612832565b600060208083528351808285015260005b818110156129e1578581018301518582016040015282016129c5565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215612a1557600080fd5b8235612a20816128e4565b946020939093013593505050565b600060208284031215612a4057600080fd5b5035919050565b600060208284031215612a5957600080fd5b8135612741816128e4565b600080600060608486031215612a7957600080fd5b8335612a84816128e4565b92506020840135612a94816128e4565b929592945050506040919091013590565b60008060408385031215612ab857600080fd5b50508035926020909101359150565b60008060408385031215612ada57600080fd5b823567ffffffffffffffff80821115612af257600080fd5b612afe868387016128f9565b9350602091508185013581811115612b1557600080fd5b85019050601f81018613612b2857600080fd5b8035612b3661291a826128c0565b81815260059190911b82018301908381019088831115612b5557600080fd5b928401925b82841015612b7357833582529284019290840190612b5a565b80955050505050509250929050565b60008060408385031215612b9557600080fd5b823561285e816128e4565b60008060408385031215612bb357600080fd5b8235612bbe816128e4565b9150602083013561286e816128e4565b604080825283519082018190526000906020906060840190828701845b82811015612c105781516001600160a01b031684529284019290840190600101612beb565b50505093151592019190915250919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108c2576108c2612c22565b600181815b80851115612c86578160001904821115612c6c57612c6c612c22565b80851615612c7957918102915b93841c9390800290612c50565b509250929050565b600082612c9d575060016108c2565b81612caa575060006108c2565b8160018114612cc05760028114612cca57612ce6565b60019150506108c2565b60ff841115612cdb57612cdb612c22565b50506001821b6108c2565b5060208310610133831016604e8410600b8410161715612d09575081810a6108c2565b612d138383612c4b565b8060001904821115612d2757612d27612c22565b029392505050565b600061274160ff841683612c8e565b80820281158282048414176108c2576108c2612c22565b600060208284031215612d6757600080fd5b8151612741816128e4565b600080600060608486031215612d8757600080fd5b8351925060208401519150604084015190509250925092565b600082612dbd57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156108c2576108c2612c22565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103612e0257612e02612c22565b6001019392505050565b600060208284031215612e1e57600080fd5b81516127418161283256fea26469706673582212201a0782d5c5673fab6f3455524fdf48667a626715da871c516406af5dbf6f5f0764736f6c63430008130033
Deployed Bytecode Sourcemap
4302:14741:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5166:73;;;;;;;;;;;;5197:42;5166:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5166:73:0;;;;;;;;12738:153;;;;;;;;;;-1:-1:-1;12738:153:0;;;;;:::i;:::-;;:::i;:::-;;13226:278;;;;;;;;;;-1:-1:-1;13226:278:0;;;;;:::i;:::-;;:::i;10057:80::-;;;;;;;;;;-1:-1:-1;10129:5:0;;;;;;;;;;;;-1:-1:-1;;;10129:5:0;;;;10057:80;;;;;;;:::i;5105:26::-;;;;;;;;;;-1:-1:-1;5105:26:0;;;;;;;-1:-1:-1;;;;;5105:26:0;;;5072;;;;;;;;;;-1:-1:-1;5072:26:0;;;;;;;;;;;;;;3698:14:1;;3691:22;3673:41;;3661:2;3646:18;5072:26:0;3533:187:1;10665:161:0;;;;;;;;;;-1:-1:-1;10665:161:0;;;;;:::i;:::-;;:::i;6602:1278::-;;;;;;:::i;:::-;;:::i;12167:140::-;;;;;;;;;;-1:-1:-1;12167:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;12265:34:0;12241:4;12265:34;;;:25;:34;;;;;;;;;12167:140;14592:114;;;;;;;;;;;;;:::i;:::-;;;4628:25:1;;;4616:2;4601:18;14592:114:0;4482:177:1;9728:115:0;;;;;;;;;;;;;:::i;11335:306::-;;;;;;;;;;-1:-1:-1;11335:306:0;;;;;:::i;:::-;;:::i;14204:264::-;;;;;;;;;;-1:-1:-1;14204:264:0;;;;;:::i;:::-;;:::i;17809:433::-;;;;;;;;;;-1:-1:-1;17809:433:0;;;;;:::i;:::-;;:::i;12471:141::-;;;;;;;;;;;;;:::i;9849:112::-;;;;;;;;;;;;;:::i;:::-;;;6693:4:1;6681:17;;;6663:36;;6651:2;6636:18;9849:112:0;6521:184:1;12620:110:0;;;;;;;;;;-1:-1:-1;12620:110:0;;;;;:::i;:::-;;:::i;12019:140::-;;;;;;;;;;-1:-1:-1;12019:140:0;;;;;:::i;:::-;;:::i;13923:273::-;;;;;;;;;;-1:-1:-1;13923:273:0;;;;;:::i;:::-;;:::i;5138:21::-;;;;;;;;;;-1:-1:-1;5138:21:0;;;;-1:-1:-1;;;;;5138:21:0;;;5372:34;;;;;;;;;;-1:-1:-1;5372:34:0;;;;;;;;8646:539;;;;;;;;;;-1:-1:-1;8646:539:0;;;;;:::i;:::-;;:::i;5413:36::-;;;;;;;;;;-1:-1:-1;5413:36:0;;;;;;;;;;;11649:222;;;;;;;;;;-1:-1:-1;11649:222:0;;;;;:::i;:::-;;:::i;11879:132::-;;;;;;;;;;-1:-1:-1;11879:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;11973:30:0;11949:4;11973:30;;;:21;:30;;;;;;;;;11879:132;14476:108;;;;;;;;;;;;;:::i;10367:117::-;;;;;;;;;;-1:-1:-1;10367:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;10460:16:0;10433:7;10460:16;;;;;;;;;;;;10367:117;9193:180;;;;;;;;;;;;;:::i;10143:79::-;;;;;;;;;;-1:-1:-1;10213:6:0;;-1:-1:-1;;;;;10213:6:0;10143:79;;11152:175;;;;;;;;;;;;;:::i;9967:84::-;;;;;;;;;;-1:-1:-1;10041:7:0;;;;;;;;;;;;-1:-1:-1;;;10041:7:0;;;;9967:84;;10492:165;;;;;;;;;;-1:-1:-1;10492:165:0;;;;;:::i;:::-;;:::i;13649:202::-;;;;;;;;;;-1:-1:-1;13649:202:0;;;;;:::i;:::-;;:::i;10228:133::-;;;;;;;;;;-1:-1:-1;10228:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10330:19:0;;;10312:7;10330:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10228:133;17619:182;;;;;;;;;;;;;:::i;12967:251::-;;;;;;;;;;-1:-1:-1;12967:251:0;;;;;:::i;:::-;;:::i;13512:129::-;;;;;;;;;;-1:-1:-1;13512:129:0;;;;;:::i;:::-;;:::i;12315:148::-;;;;;;;;;;-1:-1:-1;12315:148:0;;;;;:::i;:::-;;:::i;12738:153::-;8500:6;;-1:-1:-1;;;;;8500:6:0;8510:10;8500:20;8492:50;;;;-1:-1:-1;;;8492:50:0;;7692:2:1;8492:50:0;;;7674:21:1;7731:2;7711:18;;;7704:30;-1:-1:-1;;;7750:18:1;;;7743:47;7807:18;;8492:50:0;;;;;;;;;12833:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;12833:50:0;;8023:14:1;;8016:22;12833:50:0::1;::::0;::::1;7998:41:1::0;8082:14;;8075:22;8055:18;;;8048:50;12833:11:0;;;::::1;-1:-1:-1::0;;;;;12833:11:0::1;::::0;:26:::1;::::0;7971:18:1;;12833:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12738:153:::0;;:::o;13226:278::-;8500:6;;-1:-1:-1;;;;;8500:6:0;8510:10;8500:20;8492:50;;;;-1:-1:-1;;;8492:50:0;;7692:2:1;8492:50:0;;;7674:21:1;7731:2;7711:18;;;7704:30;-1:-1:-1;;;7750:18:1;;;7743:47;7807:18;;8492:50:0;7490:341:1;8492:50:0;13438:11:::1;::::0;:58:::1;::::0;-1:-1:-1;;;13438:58:0;;:11;;;::::1;-1:-1:-1::0;;;;;13438:11:0::1;::::0;:39:::1;::::0;:58:::1;::::0;13478:8;;13488:7;;13438:58:::1;;;:::i;10665:161::-:0;10742:4;10759:37;10768:10;10780:7;10789:6;10759:8;:37::i;:::-;-1:-1:-1;10814:4:0;10665:161;;;;;:::o;6602:1278::-;8500:6;;-1:-1:-1;;;;;8500:6:0;8510:10;8500:20;8492:50;;;;-1:-1:-1;;;8492:50:0;;7692:2:1;8492:50:0;;;7674:21:1;7731:2;7711:18;;;7704:30;-1:-1:-1;;;7750:18:1;;;7743:47;7807:18;;8492:50:0;7490:341:1;8492:50:0;6691:13:::1;::::0;-1:-1:-1;;;6691:13:0;::::1;;;6690:14;6682:46;;;::::0;-1:-1:-1;;;6682:46:0;;9080:2:1;6682:46:0::1;::::0;::::1;9062:21:1::0;9119:2;9099:18;;;9092:30;9158:21;9138:18;;;9131:49;9197:18;;6682:46:0::1;8878:343:1::0;6682:46:0::1;6783:1;6747:33;6771:9;6747:21;:33;:::i;:::-;:37;6739:74;;;::::0;-1:-1:-1;;;6739:74:0;;9690:2:1;6739:74:0::1;::::0;::::1;9672:21:1::0;9729:2;9709:18;;;9702:30;9768:25;9748:18;;;9741:53;9811:18;;6739:74:0::1;9488:347:1::0;6739:74:0::1;6872:13;4990:1;6872:2;:13;:::i;:::-;6857:28;::::0;:12;:28:::1;:::i;:::-;6842:10;10433:7:::0;10460:16;;;;;;;;;;;6832:53:::1;;6824:96;;;::::0;-1:-1:-1;;;6824:96:0;;11598:2:1;6824:96:0::1;::::0;::::1;11580:21:1::0;11637:2;11617:18;;;11610:30;11676:32;11656:18;;;11649:60;11726:18;;6824:96:0::1;11396:354:1::0;6824:96:0::1;6941:16;6971:9;;;;;;;;;-1:-1:-1::0;;;;;6971:9:0::1;-1:-1:-1::0;;;;;6971:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6960:39:0::1;;7008:4;7015:9;;;;;;;;;-1:-1:-1::0;;;;;7015:9:0::1;-1:-1:-1::0;;;;;7015:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6960:72;::::0;-1:-1:-1;;;;;;6960:72:0::1;::::0;;;;;;-1:-1:-1;;;;;12264:15:1;;;6960:72:0::1;::::0;::::1;12246:34:1::0;12316:15;;12296:18;;;12289:43;12158:18;;6960:72:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6941:91:::0;-1:-1:-1;;;;;;7047:22:0;::::1;7043:198;;7106:9;;;;;;;;;-1:-1:-1::0;;;;;7106:9:0::1;-1:-1:-1::0;;;;;7106:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7095:42:0::1;;7146:4;7153:9;;;;;;;;;-1:-1:-1::0;;;;;7153:9:0::1;-1:-1:-1::0;;;;;7153:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7095:75;::::0;-1:-1:-1;;;;;;7095:75:0::1;::::0;;;;;;-1:-1:-1;;;;;12264:15:1;;;7095:75:0::1;::::0;::::1;12246:34:1::0;12316:15;;12296:18;;;12289:43;12158:18;;7095:75:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7086:6;:84:::0;;-1:-1:-1;;;;;;7086:84:0::1;-1:-1:-1::0;;;;;7086:84:0;;;::::1;::::0;;;::::1;::::0;;7043:198:::1;;;7212:6;:17:::0;;-1:-1:-1;;;;;;7212:17:0::1;-1:-1:-1::0;;;;;7212:17:0;::::1;;::::0;;7043:198:::1;7259:6;::::0;-1:-1:-1;;;;;7259:6:0;;::::1;7251:15;::::0;;;7269:4:::1;7251:15;::::0;;;;;;;:22;;-1:-1:-1;;7251:22:0::1;::::0;;::::1;::::0;;7295:6:::1;::::0;7311:9:::1;::::0;7286:55:::1;::::0;7295:6;;::::1;::::0;7311:9;;;::::1;;-1:-1:-1::0;;7286:8:0::1;:55::i;:::-;7384:9;::::0;7352:62:::1;::::0;7369:4:::1;::::0;7384:9;;::::1;-1:-1:-1::0;;;;;7384:9:0::1;-1:-1:-1::0;;7352:8:0::1;:62::i;:::-;7427:13;:20:::0;;-1:-1:-1;;;;7427:20:0::1;-1:-1:-1::0;;;7427:20:0::1;::::0;;7476:13:::1;4990:1;7476:2;:13;:::i;:::-;7460:29;::::0;;::::1;:::i;:::-;;;7500:63;7517:10;7537:4;7544:12;7558:4;7500:16;:63::i;:::-;-1:-1:-1::0;7576:9:0::1;::::0;7654:4:::1;10433:7:::0;10460:16;;;;;;;;;;;7576:9;;;::::1;-1:-1:-1::0;;;;;7576:9:0::1;::::0;:25:::1;::::0;7609:21:::1;::::0;7799:6:::1;::::0;7576:270:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;7576:270:0;;;-1:-1:-1;;;;;12725:15:1;;;7576:270:0::1;::::0;::::1;12707:34:1::0;12757:18;;;12750:34;;;;7713:1:0::1;12800:18:1::0;;;12793:34;;;12843:18;;;12836:34;7799:6:0;;;::::1;12886:19:1::0;;;12879:44;7820:15:0::1;12939:19:1::0;;;12932:35;12618:19;;7576:270:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7857:15;:13;:15::i;:::-;6671:1209;6602:1278:::0;:::o;14592:114::-;14639:7;14684:13;4990:1;14684:2;:13;:::i;:::-;14666:14;;:32;;;;:::i;:::-;14659:39;;14592:114;:::o;9728:115::-;9783:7;5050:13;4990:1;5050:2;:13;:::i;:::-;5033:30;;4831:19;5033:30;:::i;:::-;9809:1;9798:12;9794:31;;9814:8;;;9794:31;5050:13;4990:1;5050:2;:13;:::i;:::-;5033:30;;4831:19;5033:30;:::i;11335:306::-;-1:-1:-1;;;;;11456:19:0;;11435:4;11456:19;;;:11;:19;;;;;;;;11476:10;11456:31;;;;;;;;-1:-1:-1;;11456:52:0;11452:126;;-1:-1:-1;;;;;11525:19:0;;;;;;:11;:19;;;;;;;;11545:10;11525:31;;;;;;;:41;;11560:6;;11525:19;:41;;11560:6;;11525:41;:::i;:::-;;;;-1:-1:-1;;11452:126:0;11597:36;11607:6;11615:9;11626:6;11597:9;:36::i;:::-;11590:43;11335:306;-1:-1:-1;;;;11335:306:0:o;14204:264::-;8500:6;;-1:-1:-1;;;;;8500:6:0;8510:10;8500:20;8492:50;;;;-1:-1:-1;;;8492:50:0;;7692:2:1;8492:50:0;;;7674:21:1;7731:2;7711:18;;;7704:30;-1:-1:-1;;;7750:18:1;;;7743:47;7807:18;;8492:50:0;7490:341:1;8492:50:0;14346:3:::1;5050:13;4990:1;5050:2;:13;:::i;:::-;5033:30;::::0;4831:19:::1;5033:30;:::i;:::-;14336:13;;;;:::i;:::-;14324:7:::0;14313;5050:13:::1;4990:1;5050:2;:13;:::i;:::-;5033:30;::::0;4831:19:::1;5033:30;:::i;:::-;14303:17;;;;:::i;:::-;14302:29;;;;:::i;:::-;:48;;14294:109;;;::::0;-1:-1:-1;;;14294:109:0;;13846:2:1;14294:109:0::1;::::0;::::1;13828:21:1::0;13885:2;13865:18;;;13858:30;13924:34;13904:18;;;13897:62;13995:18;13975;;;13968:46;14031:19;;14294:109:0::1;13644:412:1::0;14294:109:0::1;14453:7:::0;14442;5050:13:::1;4990:1;5050:2;:13;:::i;:::-;5033:30;::::0;4831:19:::1;5033:30;:::i;:::-;14432:17;;;;:::i;:::-;14431:29;;;;:::i;:::-;14414:14;:46:::0;-1:-1:-1;;14204:264:0:o;17809:433::-;8500:6;;-1:-1:-1;;;;;8500:6:0;8510:10;8500:20;8492:50;;;;-1:-1:-1;;;8492:50:0;;7692:2:1;8492:50:0;;;7674:21:1;7731:2;7711:18;;;7704:30;-1:-1:-1;;;7750:18:1;;;7743:47;7807:18;;8492:50:0;7490:341:1;8492:50:0;17944:7:::1;:14;17925:8;:15;:33;17917:67;;;::::0;-1:-1:-1;;;17917:67:0;;14263:2:1;17917:67:0::1;::::0;::::1;14245:21:1::0;14302:2;14282:18;;;14275:30;14341:23;14321:18;;;14314:51;14382:18;;17917:67:0::1;14061:345:1::0;17917:67:0::1;18000:8;17995:240;18018:8;:15;18014:1;:19;;;17995:240;;;18099:13;4990:1;18099:2;:13;:::i;:::-;18088:7;18096:1;18088:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;18073:10;10433:7:::0;10460:16;;;;;;;;;;;18063:49:::1;;18055:80;;;::::0;-1:-1:-1;;;18055:80:0;;14745:2:1;18055:80:0::1;::::0;::::1;14727:21:1::0;14784:2;14764:18;;;14757:30;14823:20;14803:18;;;14796:48;14861:18;;18055:80:0::1;14543:342:1::0;18055:80:0::1;18150:73;18167:10;18179:8;18188:1;18179:11;;;;;;;;;;:::i;:::-;;;;;;;4990:1;18203:2;:13;;;;:::i;:::-;18192:7;18200:1;18192:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;18218:4;18150:16;:73::i;:::-;-1:-1:-1::0;18035:3:0;::::1;::::0;::::1;:::i;:::-;;;;17995:240;;;;17809:433:::0;;:::o;12471:141::-;12524:7;10460:16;;;;;;5197:42;10460:16;;;;12563:39;;10460:16;12563:39;:::i;:::-;5050:13;4990:1;5050:2;:13;:::i;:::-;5033:30;;4831:19;5033:30;:::i;:::-;12552:51;;;;:::i;9849:112::-;9901:5;5050:13;4990:1;5050:2;:13;:::i;:::-;5033:30;;4831:19;5033:30;:::i;:::-;9925:1;9914:12;9910:31;;9930:8;;;9910:31;-1:-1:-1;4990:1:0;;9849:112::o;12620:110::-;8500:6;;-1:-1:-1;;;;;8500:6:0;8510:10;8500:20;8492:50;;;;-1:-1:-1;;;8492:50:0;;7692:2:1;8492:50:0;;;7674:21:1;7731:2;7711:18;;;7704:30;-1:-1:-1;;;7750:18:1;;;7743:47;7807:18;;8492:50:0;7490:341:1;8492:50:0;12689:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;12689:33:0;;-1:-1:-1;;;;;178:55:1;;;12689:33:0::1;::::0;::::1;160:74:1::0;12689:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;12689:33:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12620:110:::0;:::o;12019:140::-;8500:6;;-1:-1:-1;;;;;8500:6:0;8510:10;8500:20;8492:50;;;;-1:-1:-1;;;8492:50:0;;7692:2:1;8492:50:0;;;7674:21:1;7731:2;7711:18;;;7704:30;-1:-1:-1;;;7750:18:1;;;7743:47;7807:18;;8492:50:0;7490:341:1;8492:50:0;-1:-1:-1;;;;;12111:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;12111:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12019:140::o;13923:273::-;8500:6;;-1:-1:-1;;;;;8500:6:0;8510:10;8500:20;8492:50;;;;-1:-1:-1;;;8492:50:0;;7692:2:1;8492:50:0;;;7674:21:1;7731:2;7711:18;;;7704:30;-1:-1:-1;;;7750:18:1;;;7743:47;7807:18;;8492:50:0;7490:341:1;8492:50:0;14068:4:::1;5050:13;4990:1;5050:2;:13;:::i;:::-;5033:30;::::0;4831:19:::1;5033:30;:::i;:::-;14054:11;::::0;14064:1:::1;14054:11;:::i;:::-;:18;;;;:::i;:::-;14042:7:::0;14031;5050:13:::1;4990:1;5050:2;:13;:::i;:::-;5033:30;::::0;4831:19:::1;5033:30;:::i;:::-;14021:17;;;;:::i;:::-;14020:29;;;;:::i;:::-;:53;;14012:121;;;::::0;-1:-1:-1;;;14012:121:0;;15294:2:1;14012:121:0::1;::::0;::::1;15276:21:1::0;15333:2;15313:18;;;15306:30;15372:34;15352:18;;;15345:62;15443:25;15423:18;;;15416:53;15486:19;;14012:121:0::1;15092:419:1::0;14012:121:0::1;14181:7:::0;14170;5050:13:::1;4990:1;5050:2;:13;:::i;:::-;5033:30;::::0;4831:19:::1;5033:30;:::i;:::-;14160:17;;;;:::i;:::-;14159:29;;;;:::i;:::-;14144:12;:44:::0;-1:-1:-1;;13923:273:0:o;8646:539::-;8500:6;;-1:-1:-1;;;;;8500:6:0;8510:10;8500:20;8492:50;;;;-1:-1:-1;;;8492:50:0;;7692:2:1;8492:50:0;;;7674:21:1;7731:2;7711:18;;;7704:30;-1:-1:-1;;;7750:18:1;;;7743:47;7807:18;;8492:50:0;7490:341:1;8492:50:0;-1:-1:-1;;;;;8725:22:0;::::1;8717:96;;;::::0;-1:-1:-1;;;8717:96:0;;15718:2:1;8717:96:0::1;::::0;::::1;15700:21:1::0;15757:2;15737:18;;;15730:30;15796:34;15776:18;;;15769:62;15867:31;15847:18;;;15840:59;15916:19;;8717:96:0::1;15516:425:1::0;8717:96:0::1;-1:-1:-1::0;;;;;;;8832:16:0;::::1;::::0;8824:90:::1;;;::::0;-1:-1:-1;;;8824:90:0;;15718:2:1;8824:90:0::1;::::0;::::1;15700:21:1::0;15757:2;15737:18;;;15730:30;15796:34;15776:18;;;15769:62;15867:31;15847:18;;;15840:59;15916:19;;8824:90:0::1;15516:425:1::0;8824:90:0::1;8939:6;::::0;-1:-1:-1;;;;;8939:6:0::1;8949:1;10460:16:::0;;;;;;;;;;;8929:21;8925:113:::1;;8984:6;::::0;-1:-1:-1;;;;;8984:6:0::1;10433:7:::0;10460:16;;;;;;;;;;;8967:59:::1;::::0;8984:6;8992:8;;9002:17:::1;10367:117:::0;8967:59:::1;;8925:113;9077:6;::::0;;-1:-1:-1;;;;;9094:17:0;;::::1;-1:-1:-1::0;;;;;;9094:17:0;::::1;::::0;::::1;::::0;;;9127:40:::1;::::0;9077:6;::::1;::::0;9094:17;9077:6;;9127:40:::1;::::0;9058:16:::1;::::0;9127:40:::1;8706:479;8646:539:::0;:::o;11649:222::-;8500:6;;-1:-1:-1;;;;;8500:6:0;8510:10;8500:20;8492:50;;;;-1:-1:-1;;;8492:50:0;;7692:2:1;8492:50:0;;;7674:21:1;7731:2;7711:18;;;7704:30;-1:-1:-1;;;7750:18:1;;;7743:47;7807:18;;8492:50:0;7490:341:1;8492:50:0;11733:14:::1;::::0;::::1;;11732:15;11724:24;;;::::0;::::1;;11790:4;-1:-1:-1::0;;;;;11767:28:0;::::1;::::0;11759:55:::1;;;::::0;-1:-1:-1;;;11759:55:0;;16148:2:1;11759:55:0::1;::::0;::::1;16130:21:1::0;16187:2;16167:18;;;16160:30;16226:16;16206:18;;;16199:44;16260:18;;11759:55:0::1;15946:338:1::0;11759:55:0::1;11825:11;:38:::0;;-1:-1:-1;;;;;11825:38:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;11825:38:0;;::::1;::::0;;;::::1;::::0;;11649:222::o;14476:108::-;14519:7;14562:13;4990:1;14562:2;:13;:::i;:::-;14546:12;;:30;;;;:::i;9193:180::-;8500:6;;-1:-1:-1;;;;;8500:6:0;8510:10;8500:20;8492:50;;;;-1:-1:-1;;;8492:50:0;;7692:2:1;8492:50:0;;;7674:21:1;7731:2;7711:18;;;7704:30;-1:-1:-1;;;7750:18:1;;;7743:47;7807:18;;8492:50:0;7490:341:1;8492:50:0;9271:6:::1;::::0;;-1:-1:-1;;;;;;9288:19:0;::::1;::::0;;;9323:42:::1;::::0;-1:-1:-1;;;;;9271:6:0;;::::1;::::0;9252:16:::1;::::0;9271:6;;9323:42:::1;::::0;9252:16;;9323:42:::1;9241:132;9193:180::o:0;11152:175::-;8500:6;;11218:4;;-1:-1:-1;;;;;8500:6:0;8510:10;8500:20;8492:50;;;;-1:-1:-1;;;8492:50:0;;7692:2:1;8492:50:0;;;7674:21:1;7731:2;7711:18;;;7704:30;-1:-1:-1;;;7750:18:1;;;7743:47;7807:18;;8492:50:0;7490:341:1;8492:50:0;11267:9:::1;::::0;11235:62:::1;::::0;11252:4:::1;::::0;11267:9;;::::1;-1:-1:-1::0;;;;;11267:9:0::1;-1:-1:-1::0;;11235:8:0::1;:62::i;:::-;-1:-1:-1::0;11315:4:0::1;11152:175:::0;:::o;10492:165::-;10570:4;10587:40;10597:10;10609:9;10620:6;10587:9;:40::i;:::-;-1:-1:-1;10645:4:0;;10492:165;-1:-1:-1;;;10492:165:0:o;13649:202::-;8500:6;;-1:-1:-1;;;;;8500:6:0;8510:10;8500:20;8492:50;;;;-1:-1:-1;;;8492:50:0;;7692:2:1;8492:50:0;;;7674:21:1;7731:2;7711:18;;;7704:30;-1:-1:-1;;;7750:18:1;;;7743:47;7807:18;;8492:50:0;7490:341:1;8492:50:0;13805:11:::1;::::0;:38:::1;::::0;-1:-1:-1;;;13805:38:0;;-1:-1:-1;;;;;178:55:1;;;13805:38:0::1;::::0;::::1;160:74:1::0;13805:11:0;;;::::1;::::0;;::::1;::::0;:29:::1;::::0;133:18:1;;13805:38:0::1;14:226:1::0;17619:182:0;8500:6;;-1:-1:-1;;;;;8500:6:0;8510:10;8500:20;8492:50;;;;-1:-1:-1;;;8492:50:0;;7692:2:1;8492:50:0;;;7674:21:1;7731:2;7711:18;;;7704:30;-1:-1:-1;;;7750:18:1;;;7743:47;7807:18;;8492:50:0;7490:341:1;8492:50:0;17686:16:::1;::::0;::::1;::::0;::::1;;;17685:17;17677:58;;;::::0;-1:-1:-1;;;17677:58:0;;16491:2:1;17677:58:0::1;::::0;::::1;16473:21:1::0;16530:2;16510:18;;;16503:30;16569;16549:18;;;16542:58;16617:18;;17677:58:0::1;16289:352:1::0;17677:58:0::1;17754:6;::::0;17746:47:::1;::::0;-1:-1:-1;;;;;17754:6:0;;::::1;::::0;17771:21:::1;17746:47:::0;::::1;;;::::0;17754:6:::1;17746:47:::0;17754:6;17746:47;17771:21;17754:6;17746:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17619:182::o:0;12967:251::-;8500:6;;-1:-1:-1;;;;;8500:6:0;8510:10;8500:20;8492:50;;;;-1:-1:-1;;;8492:50:0;;7692:2:1;8492:50:0;;;7674:21:1;7731:2;7711:18;;;7704:30;-1:-1:-1;;;7750:18:1;;;7743:47;7807:18;;8492:50:0;7490:341:1;8492:50:0;13161:11:::1;::::0;:49:::1;::::0;-1:-1:-1;;;13161:49:0;;-1:-1:-1;;;;;16832:55:1;;;13161:49:0::1;::::0;::::1;16814:74:1::0;16931:14;;16924:22;16904:18;;;16897:50;13161:11:0;;;::::1;::::0;;::::1;::::0;:31:::1;::::0;16787:18:1;;13161:49:0::1;16646:307:1::0;13512:129:0;13599:11;;:34;;-1:-1:-1;;;13599:34:0;;-1:-1:-1;;;;;178:55:1;;;13599:34:0;;;160:74:1;13575:4:0;;13599:11;;;;;:25;;133:18:1;;13599:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12315:148::-;8500:6;;-1:-1:-1;;;;;8500:6:0;8510:10;8500:20;8492:50;;;;-1:-1:-1;;;8492:50:0;;7692:2:1;8492:50:0;;;7674:21:1;7731:2;7711:18;;;7704:30;-1:-1:-1;;;7750:18:1;;;7743:47;7807:18;;8492:50:0;7490:341:1;8492:50:0;-1:-1:-1;;;;;12411:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;12411:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12315:148::o;10834:310::-;-1:-1:-1;;;;;10929:20:0;;10921:52;;;;-1:-1:-1;;;10921:52:0;;17410:2:1;10921:52:0;;;17392:21:1;17449:2;17429:18;;;17422:30;-1:-1:-1;;;17468:18:1;;;17461:49;17527:18;;10921:52:0;17208:343:1;10921:52:0;-1:-1:-1;;;;;10992:21:0;;10984:53;;;;-1:-1:-1;;;10984:53:0;;17410:2:1;10984:53:0;;;17392:21:1;17449:2;17429:18;;;17422:30;-1:-1:-1;;;17468:18:1;;;17461:49;17527:18;;10984:53:0;17208:343:1;10984:53:0;-1:-1:-1;;;;;11050:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11103:33;;4628:25:1;;;11103:33:0;;4601:18:1;11103:33:0;;;;;;;10834:310;;;:::o;18250:790::-;18348:4;18369:20;18380:4;18386:2;18369:10;:20::i;:::-;18365:228;;;18424:11;;:39;;-1:-1:-1;;;18424:39:0;;-1:-1:-1;;;;;17837:15:1;;;18424:39:0;;;17819:34:1;17889:15;;;17869:18;;;17862:43;17921:18;;;17914:34;;;18393:12:0;;18424:11;;;;;:21;;17731:18:1;;18424:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;18424:39:0;;;;;;;;-1:-1:-1;;18424:39:0;;;;;;;;;;;;:::i;:::-;;;18420:122;;18531:8;;;18420:122;18514:5;-1:-1:-1;18560:7:0;18556:26;;18571:8;;;18556:26;18391:202;18365:228;-1:-1:-1;;;;;18603:13:0;;:7;:13;;;;;;;;;;:23;;18620:6;;18603:7;:23;;18620:6;;18603:23;:::i;:::-;;;;-1:-1:-1;;;;;;;18637:11:0;;:7;:11;;;;;;;;;;:21;;18652:6;;18637:7;:21;;18652:6;;18637:21;:::i;:::-;;;;;;;;18689:2;-1:-1:-1;;;;;18674:26:0;18683:4;-1:-1:-1;;;;;18674:26:0;;18693:6;18674:26;;;;4628:25:1;;4616:2;4601:18;;4482:177;18674:26:0;;;;;;;;18716:16;;;;;;;18711:298;;18749:28;18768:4;18774:2;18749:18;:28::i;:::-;18797:16;;;;;;;18796:17;:41;;;;;18817:20;18828:4;18834:2;18817:10;:20::i;:::-;18796:77;;;;-1:-1:-1;;;;;;18842:31:0;;;;;;:25;:31;;;;;;;;18841:32;18796:77;:111;;;;-1:-1:-1;;;;;;18878:29:0;;;;;;:25;:29;;;;;;;;18877:30;18796:111;:121;;;;;18912:5;18911:6;18796:121;18792:206;;;18938:44;;-1:-1:-1;;;18938:44:0;;18161:2:1;18938:44:0;;;18143:21:1;18200:2;18180:18;;;18173:30;18239:34;18219:18;;;18212:62;-1:-1:-1;;;18290:18:1;;;18283:32;18332:19;;18938:44:0;17959:398:1;18792:206:0;-1:-1:-1;19028:4:0;18250:790;;;;;;:::o;17130:481::-;8500:6;;-1:-1:-1;;;;;8500:6:0;8510:10;8500:20;8492:50;;;;-1:-1:-1;;;8492:50:0;;7692:2:1;8492:50:0;;;7674:21:1;7731:2;7711:18;;;7704:30;-1:-1:-1;;;7750:18:1;;;7743:47;7807:18;;8492:50:0;7490:341:1;8492:50:0;17193:14:::1;::::0;::::1;;17192:15;17184:52;;;::::0;-1:-1:-1;;;17184:52:0;;18564:2:1;17184:52:0::1;::::0;::::1;18546:21:1::0;18603:2;18583:18;;;18576:30;18642:26;18622:18;;;18615:54;18686:18;;17184:52:0::1;18362:348:1::0;17184:52:0::1;17255:16;::::0;::::1;::::0;::::1;;;17247:53;;;::::0;-1:-1:-1;;;17247:53:0;;18917:2:1;17247:53:0::1;::::0;::::1;18899:21:1::0;18956:2;18936:18;;;18929:30;18995:26;18975:18;;;18968:54;19039:18;;17247:53:0::1;18715:348:1::0;17247:53:0::1;17323:11;::::0;;;::::1;-1:-1:-1::0;;;;;17323:11:0::1;17311:106;;17365:11;:40:::0;;-1:-1:-1;;;;;;17365:40:0::1;17399:4;17365:40:::0;::::1;;::::0;;17311:106:::1;17431:11;::::0;17453:6:::1;::::0;17431:87:::1;::::0;-1:-1:-1;;;17431:87:0;;-1:-1:-1;;;;;17453:6:0;;::::1;17431:87;::::0;::::1;19291:74:1::0;19413:10;17468:12:0::1;19401:23:1::0;19381:18;;;19374:51;19473:18;17490:15:0::1;19461:31:1::0;19441:18;;;19434:59;4990:1:0::1;19509:18:1::0;;;19502:45;17431:11:0;;;::::1;;::::0;:21:::1;::::0;19263:19:1;;17431:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;17427:103:::0;17540:14:::1;:21:::0;;-1:-1:-1;;17540:21:0;;::::1;17557:4;17540:21;::::0;;;17572:23:::1;:31:::0;;;;::::1;::::0;;17130:481::o;15168:1523::-;15247:4;-1:-1:-1;;;;;15272:18:0;;15264:68;;;;-1:-1:-1;;;15264:68:0;;19760:2:1;15264:68:0;;;19742:21:1;19799:2;19779:18;;;19772:30;19838:34;19818:18;;;19811:62;-1:-1:-1;;;19889:18:1;;;19882:35;19934:19;;15264:68:0;19558:401:1;15264:68:0;-1:-1:-1;;;;;15351:16:0;;15343:64;;;;-1:-1:-1;;;15343:64:0;;20166:2:1;15343:64:0;;;20148:21:1;20205:2;20185:18;;;20178:30;20244:34;20224:18;;;20217:62;-1:-1:-1;;;20295:18:1;;;20288:33;20338:19;;15343:64:0;19964:399:1;15343:64:0;15435:1;15426:6;:10;15418:64;;;;-1:-1:-1;;;15418:64:0;;20570:2:1;15418:64:0;;;20552:21:1;20609:2;20589:18;;;20582:30;20648:34;20628:18;;;20621:62;-1:-1:-1;;;20699:18:1;;;20692:39;20748:19;;15418:64:0;20368:405:1;15418:64:0;-1:-1:-1;;;;;15581:13:0;;15493:8;15581:13;;;:7;:13;;;;;;15493:8;;;;15581:13;;15577:162;;;15617:4;15611:10;;15577:162;;;-1:-1:-1;;;;;15643:11:0;;;;;;:7;:11;;;;;;;;15639:100;;;15678:4;15671:11;;15639:100;;;-1:-1:-1;15723:4:0;15639:100;15753:20;15764:4;15770:2;15753:10;:20::i;:::-;15749:874;;;15794:14;;;;15790:319;;15834:5;15829:265;;15864:34;;-1:-1:-1;;;15864:34:0;;20980:2:1;15864:34:0;;;20962:21:1;21019:2;20999:18;;;20992:30;21058:26;21038:18;;;21031:54;21102:18;;15864:34:0;20778:348:1;15829:265:0;-1:-1:-1;;;;;15929:31:0;;;;;;:25;:31;;;;;;;;15928:32;:66;;;;-1:-1:-1;;;;;;15965:29:0;;;;;;:25;:29;;;;;;;;15964:30;15928:66;15924:170;;;16019:55;;-1:-1:-1;;;16019:55:0;;21333:2:1;16019:55:0;;;21315:21:1;21372:2;21352:18;;;21345:30;21411:34;21391:18;;;21384:62;-1:-1:-1;;;21462:18:1;;;21455:43;21515:19;;16019:55:0;21131:409:1;15924:170:0;16127:3;:11;;;;16134:4;16127:11;16123:232;;;-1:-1:-1;;;;;16163:27:0;;;;;;:21;:27;;;;;;;;16162:28;:58;;;;-1:-1:-1;;;;;;16195:25:0;;;;;;:21;:25;;;;;;;;16194:26;16162:58;16158:182;;;16263:12;;16253:6;:22;;16245:75;;;;-1:-1:-1;;;16245:75:0;;21747:2:1;16245:75:0;;;21729:21:1;21786:2;21766:18;;;21759:30;21825:34;21805:18;;;21798:62;-1:-1:-1;;;21876:18:1;;;21869:38;21924:19;;16245:75:0;21545:404:1;16245:75:0;16387:9;;-1:-1:-1;;;;;16373:24:0;;;16387:9;;;;;16373:24;;;;:33;;;16402:4;16401:5;16373:33;16369:243;;;-1:-1:-1;;;;;16432:25:0;;;;;;:21;:25;;;;;;;;16427:170;;16516:14;;16506:6;16490:13;16500:2;-1:-1:-1;;;;;10460:16:0;10433:7;10460:16;;;;;;;;;;;;10367:117;16490:13;:22;;;;:::i;:::-;:40;;16482:95;;;;-1:-1:-1;;;16482:95:0;;22156:2:1;16482:95:0;;;22138:21:1;22195:2;22175:18;;;22168:30;22234:34;22214:18;;;22207:62;-1:-1:-1;;;22285:18:1;;;22278:40;22335:19;;16482:95:0;21954:406:1;16482:95:0;16642:41;16659:4;16665:2;16669:6;16677:5;16642:16;:41::i;:::-;16635:48;15168:1523;-1:-1:-1;;;;;;;15168:1523:0:o;14714:446::-;14815:6;;14783:4;;-1:-1:-1;;;;;14807:14:0;;;14815:6;;14807:14;;;;:43;;-1:-1:-1;14844:6:0;;-1:-1:-1;;;;;14838:12:0;;;14844:6;;14838:12;;14807:43;:79;;;;-1:-1:-1;14880:6:0;;-1:-1:-1;;;;;14880:6:0;14867:9;:19;;14807:79;:118;;;;-1:-1:-1;;;;;;14904:21:0;;;;;;:17;:21;;;;;;;;14903:22;14807:118;:159;;;;-1:-1:-1;;;;;;14943:23:0;;;;;;:17;:23;;;;;;;;14942:24;14807:159;:186;;;;-1:-1:-1;;;;;;14983:10:0;;5197:42;14983:10;;14807:186;:219;;;;-1:-1:-1;;;;;;15010:16:0;;;;14807:219;:257;;;;-1:-1:-1;;;;;;15043:21:0;;15059:4;15043:21;;14807:257;:302;;;;-1:-1:-1;15097:11:0;;-1:-1:-1;;;;;15081:28:0;;;15097:11;;;;;15081:28;;14807:302;:345;;;;-1:-1:-1;15140:11:0;;-1:-1:-1;;;;;15126:26:0;;;15140:11;;;;;15126:26;;14807:345;14800:352;14714:446;-1:-1:-1;;;14714:446:0:o;16699:423::-;16782:16;;;;;;;16781:17;16773:65;;;;-1:-1:-1;;;16773:65:0;;22567:2:1;16773:65:0;;;22549:21:1;22606:2;22586:18;;;22579:30;22645:34;22625:18;;;22618:62;-1:-1:-1;;;22696:18:1;;;22689:33;22739:19;;16773:65:0;22365:399:1;16773:65:0;16854:20;16865:4;16871:2;16854:10;:20::i;:::-;16853:21;:37;;;;-1:-1:-1;16884:6:0;;-1:-1:-1;;;;;16878:12:0;;;16884:6;;16878:12;16853:37;16849:266;;;-1:-1:-1;;;;;16907:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;16907:30:0;16933:4;16907:30;;;16952:16;:23;;-1:-1:-1;;16952:23:0;16907:30;16952:23;;;;;17002:11;;;;16990:114;;-1:-1:-1;;17048:11:0;:40;;-1:-1:-1;;;;;;17048:40:0;17082:4;17048:40;;;;;16699:423::o;245:118:1:-;331:5;324:13;317:21;310:5;307:32;297:60;;353:1;350;343:12;368:376;430:6;438;491:2;479:9;470:7;466:23;462:32;459:52;;;507:1;504;497:12;459:52;546:9;533:23;565:28;587:5;565:28;:::i;:::-;612:5;-1:-1:-1;669:2:1;654:18;;641:32;682:30;641:32;682:30;:::i;:::-;731:7;721:17;;;368:376;;;;;:::o;749:127::-;810:10;805:3;801:20;798:1;791:31;841:4;838:1;831:15;865:4;862:1;855:15;881:275;952:2;946:9;1017:2;998:13;;-1:-1:-1;;994:27:1;982:40;;1052:18;1037:34;;1073:22;;;1034:62;1031:88;;;1099:18;;:::i;:::-;1135:2;1128:22;881:275;;-1:-1:-1;881:275:1:o;1161:183::-;1221:4;1254:18;1246:6;1243:30;1240:56;;;1276:18;;:::i;:::-;-1:-1:-1;1321:1:1;1317:14;1333:4;1313:25;;1161:183::o;1349:154::-;-1:-1:-1;;;;;1428:5:1;1424:54;1417:5;1414:65;1404:93;;1493:1;1490;1483:12;1508:737;1562:5;1615:3;1608:4;1600:6;1596:17;1592:27;1582:55;;1633:1;1630;1623:12;1582:55;1669:6;1656:20;1695:4;1719:60;1735:43;1775:2;1735:43;:::i;:::-;1719:60;:::i;:::-;1813:15;;;1899:1;1895:10;;;;1883:23;;1879:32;;;1844:12;;;;1923:15;;;1920:35;;;1951:1;1948;1941:12;1920:35;1987:2;1979:6;1975:15;1999:217;2015:6;2010:3;2007:15;1999:217;;;2095:3;2082:17;2112:31;2137:5;2112:31;:::i;:::-;2156:18;;2194:12;;;;2032;;1999:217;;;-1:-1:-1;2234:5:1;1508:737;-1:-1:-1;;;;;;1508:737:1:o;2250:477::-;2340:6;2348;2401:2;2389:9;2380:7;2376:23;2372:32;2369:52;;;2417:1;2414;2407:12;2369:52;2457:9;2444:23;2490:18;2482:6;2479:30;2476:50;;;2522:1;2519;2512:12;2476:50;2545:61;2598:7;2589:6;2578:9;2574:22;2545:61;:::i;:::-;2535:71;;;2656:2;2645:9;2641:18;2628:32;2669:28;2691:5;2669:28;:::i;2732:548::-;2844:4;2873:2;2902;2891:9;2884:21;2934:6;2928:13;2977:6;2972:2;2961:9;2957:18;2950:34;3002:1;3012:140;3026:6;3023:1;3020:13;3012:140;;;3121:14;;;3117:23;;3111:30;3087:17;;;3106:2;3083:26;3076:66;3041:10;;3012:140;;;3016:3;3201:1;3196:2;3187:6;3176:9;3172:22;3168:31;3161:42;3271:2;3264;3260:7;3255:2;3247:6;3243:15;3239:29;3228:9;3224:45;3220:54;3212:62;;;;2732:548;;;;:::o;3725:315::-;3793:6;3801;3854:2;3842:9;3833:7;3829:23;3825:32;3822:52;;;3870:1;3867;3860:12;3822:52;3909:9;3896:23;3928:31;3953:5;3928:31;:::i;:::-;3978:5;4030:2;4015:18;;;;4002:32;;-1:-1:-1;;;3725:315:1:o;4045:180::-;4104:6;4157:2;4145:9;4136:7;4132:23;4128:32;4125:52;;;4173:1;4170;4163:12;4125:52;-1:-1:-1;4196:23:1;;4045:180;-1:-1:-1;4045:180:1:o;4230:247::-;4289:6;4342:2;4330:9;4321:7;4317:23;4313:32;4310:52;;;4358:1;4355;4348:12;4310:52;4397:9;4384:23;4416:31;4441:5;4416:31;:::i;4664:456::-;4741:6;4749;4757;4810:2;4798:9;4789:7;4785:23;4781:32;4778:52;;;4826:1;4823;4816:12;4778:52;4865:9;4852:23;4884:31;4909:5;4884:31;:::i;:::-;4934:5;-1:-1:-1;4991:2:1;4976:18;;4963:32;5004:33;4963:32;5004:33;:::i;:::-;4664:456;;5056:7;;-1:-1:-1;;;5110:2:1;5095:18;;;;5082:32;;4664:456::o;5125:248::-;5193:6;5201;5254:2;5242:9;5233:7;5229:23;5225:32;5222:52;;;5270:1;5267;5260:12;5222:52;-1:-1:-1;;5293:23:1;;;5363:2;5348:18;;;5335:32;;-1:-1:-1;5125:248:1:o;5378:1138::-;5496:6;5504;5557:2;5545:9;5536:7;5532:23;5528:32;5525:52;;;5573:1;5570;5563:12;5525:52;5613:9;5600:23;5642:18;5683:2;5675:6;5672:14;5669:34;;;5699:1;5696;5689:12;5669:34;5722:61;5775:7;5766:6;5755:9;5751:22;5722:61;:::i;:::-;5712:71;;5802:2;5792:12;;5857:2;5846:9;5842:18;5829:32;5886:2;5876:8;5873:16;5870:36;;;5902:1;5899;5892:12;5870:36;5925:24;;;-1:-1:-1;5980:4:1;5972:13;;5968:27;-1:-1:-1;5958:55:1;;6009:1;6006;5999:12;5958:55;6045:2;6032:16;6068:60;6084:43;6124:2;6084:43;:::i;6068:60::-;6162:15;;;6244:1;6240:10;;;;6232:19;;6228:28;;;6193:12;;;;6268:19;;;6265:39;;;6300:1;6297;6290:12;6265:39;6324:11;;;;6344:142;6360:6;6355:3;6352:15;6344:142;;;6426:17;;6414:30;;6377:12;;;;6464;;;;6344:142;;;6505:5;6495:15;;;;;;;5378:1138;;;;;:::o;6710:382::-;6775:6;6783;6836:2;6824:9;6815:7;6811:23;6807:32;6804:52;;;6852:1;6849;6842:12;6804:52;6891:9;6878:23;6910:31;6935:5;6910:31;:::i;7097:388::-;7165:6;7173;7226:2;7214:9;7205:7;7201:23;7197:32;7194:52;;;7242:1;7239;7232:12;7194:52;7281:9;7268:23;7300:31;7325:5;7300:31;:::i;:::-;7350:5;-1:-1:-1;7407:2:1;7392:18;;7379:32;7420:33;7379:32;7420:33;:::i;8109:764::-;8321:2;8333:21;;;8403:13;;8306:18;;;8425:22;;;8273:4;;8500;;8478:2;8463:18;;;8527:15;;;8273:4;8570:218;8584:6;8581:1;8578:13;8570:218;;;8649:13;;-1:-1:-1;;;;;8645:62:1;8633:75;;8728:12;;;;8763:15;;;;8606:1;8599:9;8570:218;;;-1:-1:-1;;;8851:14:1;;8844:22;8824:18;;8817:50;;;;-1:-1:-1;8805:3:1;8109:764;-1:-1:-1;8109:764:1:o;9226:127::-;9287:10;9282:3;9278:20;9275:1;9268:31;9318:4;9315:1;9308:15;9342:4;9339:1;9332:15;9358:125;9423:9;;;9444:10;;;9441:36;;;9457:18;;:::i;9840:422::-;9929:1;9972:5;9929:1;9986:270;10007:7;9997:8;9994:21;9986:270;;;10066:4;10062:1;10058:6;10054:17;10048:4;10045:27;10042:53;;;10075:18;;:::i;:::-;10125:7;10115:8;10111:22;10108:55;;;10145:16;;;;10108:55;10224:22;;;;10184:15;;;;9986:270;;;9990:3;9840:422;;;;;:::o;10267:806::-;10316:5;10346:8;10336:80;;-1:-1:-1;10387:1:1;10401:5;;10336:80;10435:4;10425:76;;-1:-1:-1;10472:1:1;10486:5;;10425:76;10517:4;10535:1;10530:59;;;;10603:1;10598:130;;;;10510:218;;10530:59;10560:1;10551:10;;10574:5;;;10598:130;10635:3;10625:8;10622:17;10619:43;;;10642:18;;:::i;:::-;-1:-1:-1;;10698:1:1;10684:16;;10713:5;;10510:218;;10812:2;10802:8;10799:16;10793:3;10787:4;10784:13;10780:36;10774:2;10764:8;10761:16;10756:2;10750:4;10747:12;10743:35;10740:77;10737:159;;;-1:-1:-1;10849:19:1;;;10881:5;;10737:159;10928:34;10953:8;10947:4;10928:34;:::i;:::-;10998:6;10994:1;10990:6;10986:19;10977:7;10974:32;10971:58;;;11009:18;;:::i;:::-;11047:20;;10267:806;-1:-1:-1;;;10267:806:1:o;11078:140::-;11136:5;11165:47;11206:4;11196:8;11192:19;11186:4;11165:47;:::i;11223:168::-;11296:9;;;11327;;11344:15;;;11338:22;;11324:37;11314:71;;11365:18;;:::i;11755:251::-;11825:6;11878:2;11866:9;11857:7;11853:23;11849:32;11846:52;;;11894:1;11891;11884:12;11846:52;11926:9;11920:16;11945:31;11970:5;11945:31;:::i;12978:306::-;13066:6;13074;13082;13135:2;13123:9;13114:7;13110:23;13106:32;13103:52;;;13151:1;13148;13141:12;13103:52;13180:9;13174:16;13164:26;;13230:2;13219:9;13215:18;13209:25;13199:35;;13274:2;13263:9;13259:18;13253:25;13243:35;;12978:306;;;;;:::o;13289:217::-;13329:1;13355;13345:132;;13399:10;13394:3;13390:20;13387:1;13380:31;13434:4;13431:1;13424:15;13462:4;13459:1;13452:15;13345:132;-1:-1:-1;13491:9:1;;13289:217::o;13511:128::-;13578:9;;;13599:11;;;13596:37;;;13613:18;;:::i;14411:127::-;14472:10;14467:3;14463:20;14460:1;14453:31;14503:4;14500:1;14493:15;14527:4;14524:1;14517:15;14890:197;14928:3;14956:6;14997:2;14990:5;14986:14;15024:2;15015:7;15012:15;15009:41;;15030:18;;:::i;:::-;15079:1;15066:15;;14890:197;-1:-1:-1;;;14890:197:1:o;16958:245::-;17025:6;17078:2;17066:9;17057:7;17053:23;17049:32;17046:52;;;17094:1;17091;17084:12;17046:52;17126:9;17120:16;17145:28;17167:5;17145:28;:::i
Swarm Source
ipfs://1a0782d5c5673fab6f3455524fdf48667a626715da871c516406af5dbf6f5f07
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.