Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000 BOOK
Holders
56
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
8,379.707974877802540331 BOOKValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Betbook
Compiler Version
v0.8.28+commit.7893614a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-11-19 */ /** BetBook - A fully decentralized prediction market using orderbook design and powered by Azuro. https://betbook.market https://t.me/betbook_market https://x.com/betbook_market **/ // SPDX-License-Identifier: MIT pragma solidity 0.8.28; abstract contract Ownable { address private _owner; constructor() { _owner = msg.sender; } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == msg.sender, "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _owner = address(0); } } library SafeERC20 { function safeTransfer(address token, address to, uint256 value) internal { (bool success, bytes memory data) = token.call( abi.encodeWithSelector(IERC20.transfer.selector, to, value) ); require( success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: INTERNAL TRANSFER_FAILED" ); } } interface IERC20 { function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external; } interface IUniswapV2Factory { function createPair( address tokenA, address tokenB ) external returns (address pair); } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); } contract Betbook is Ownable { string private constant _name = unicode"Betbook"; string private constant _symbol = unicode"BOOK"; uint256 private constant _totalSupply = 1_000_000 * 1e18; uint256 public maxTransactionAmount = 10_000 * 1e18; uint256 public maxWallet = 10_000 * 1e18; uint256 public swapTokensAtAmount = (_totalSupply * 5) / 10000; address private teamWallet = 0xaA136932D25Dbc61E88CE9CF36AEbf0c48228F08; address private treasuryWallet = 0x616960f9e02E473A445a05EC7f6957Cd99ECb8ba; address private revWallet = 0x566d5b152A6f569f0F77f5213134E55c57E1A892; address private constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; uint8 public buyTotalFees = 150; uint8 public sellTotalFees = 150; uint8 public revFee = 15; uint8 public teamFee = 85; bool private swapping; bool public limitsInEffect = true; bool private launched; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) private _isExcludedMaxTransactionAmount; mapping(address => bool) private automatedMarketMakerPairs; event SwapAndLiquify( uint256 tokensSwapped, uint256 teamETH, uint256 revETH ); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); IUniswapV2Router02 public constant uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address public immutable uniswapV2Pair; constructor() { uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair( address(this), WETH ); automatedMarketMakerPairs[uniswapV2Pair] = true; setExcludedFromFees(owner(), true); setExcludedFromFees(address(this), true); setExcludedFromFees(address(0xdead), true); setExcludedFromFees(teamWallet, true); setExcludedFromFees(treasuryWallet, true); setExcludedFromFees(revWallet, true); setExcludedFromFees(0xE2fE530C047f2d85298b07D9333C05737f1435fB, true); // Team Finance Locker Contract setExcludedFromMaxTransaction(owner(), true); setExcludedFromMaxTransaction(address(uniswapV2Router), true); setExcludedFromMaxTransaction(address(this), true); setExcludedFromMaxTransaction(address(0xdead), true); setExcludedFromMaxTransaction(address(uniswapV2Pair), true); setExcludedFromMaxTransaction(teamWallet, true); setExcludedFromMaxTransaction(revWallet, true); setExcludedFromMaxTransaction(treasuryWallet, true); setExcludedFromMaxTransaction( 0xE2fE530C047f2d85298b07D9333C05737f1435fB, true ); // Team Finance Locker Contract _balances[address(this)] = 850_000 * 1e18; emit Transfer(address(0), address(this), _balances[address(this)]); // Transfer to the contract for initial liquidity _balances[msg.sender] = 100_000 * 1e18; emit Transfer(address(0), msg.sender, _balances[msg.sender]); // Transfer to the deployer/team wallet _balances[treasuryWallet] = 50_000 * 1e18; emit Transfer(address(0), treasuryWallet, _balances[treasuryWallet]); // Transfer to the treasury wallet _approve(address(this), address(uniswapV2Router), type(uint256).max); } receive() external payable {} function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return 18; } function totalSupply() public pure returns (uint256) { return _totalSupply; } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function allowance( address owner, address spender ) public view returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external returns (bool) { _approve(msg.sender, spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function transfer( address recipient, uint256 amount ) external returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool) { uint256 currentAllowance = _allowances[sender][msg.sender]; if (currentAllowance != type(uint256).max) { require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); unchecked { _approve(sender, msg.sender, currentAllowance - amount); } } _transfer(sender, recipient, amount); return true; } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if ( !launched && (from != owner() && from != address(this) && to != owner()) ) { revert("Trading not enabled"); } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTx" ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTx" ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount; if ( canSwap && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 senderBalance = _balances[from]; require( senderBalance >= amount, "ERC20: transfer amount exceeds balance" ); uint256 fees = 0; if (takeFee) { if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = (amount * sellTotalFees) / 1000; } else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = (amount * buyTotalFees) / 1000; } if (fees > 0) { unchecked { amount = amount - fees; _balances[from] -= fees; _balances[address(this)] += fees; } emit Transfer(from, address(this), fees); } } unchecked { _balances[from] -= amount; _balances[to] += amount; } emit Transfer(from, to, amount); } /** * @notice Removes all transaction and wallet limits * @dev Only callable by the contract owner * @custom:security This is irreversible, use with caution */ function removeLimits() external onlyOwner { limitsInEffect = false; } /** * @notice Sets the distribution percentages for rev and team fees * @dev Only callable by the contract owner * @param _RevFee Percentage for rev wallet (out of 100) * @param _teamFee Percentage for team wallet (out of 100) * @custom:security Requires total to be exactly 100% */ function setDistributionFees( uint8 _RevFee, uint8 _teamFee ) external onlyOwner { revFee = _RevFee; teamFee = _teamFee; require( (revFee + teamFee) == 100, "Distribution have to be equal to 100%" ); } /** * @notice Sets the buy and sell fees for the token * @dev Only callable by the contract owner * @param _buyTotalFees New buy fee (in basis points, e.g., 10 = 1%) * @param _sellTotalFees New sell fee (in basis points, e.g., 10 = 1%) * @custom:security Fees are capped at 3% (300 basis points) for both buy and sell */ function setFees( uint8 _buyTotalFees, uint8 _sellTotalFees ) external onlyOwner { require( _buyTotalFees <= 30, "Buy fees must be less than or equal to 3%" ); require( _sellTotalFees <= 30, "Sell fees must be less than or equal to 3%" ); buyTotalFees = _buyTotalFees; sellTotalFees = _sellTotalFees; } /** * @notice Excludes or includes an address from paying fees * @dev Only callable by the contract owner * @param account Address to be excluded or included * @param excluded True to exclude, false to include */ function setExcludedFromFees( address account, bool excluded ) public onlyOwner { _isExcludedFromFees[account] = excluded; } /** * @notice Excludes or includes an address from max transaction limit * @dev Only callable by the contract owner * @param account Address to be excluded or included * @param excluded True to exclude, false to include */ function setExcludedFromMaxTransaction( address account, bool excluded ) public onlyOwner { _isExcludedMaxTransactionAmount[account] = excluded; } /** * @notice Enables trading for the token * @dev Only callable by the contract owner, can only be called once */ function openTrade() external onlyOwner { require(!launched, "Already launched"); launched = true; } /** * @notice Adds initial liquidity to the Uniswap pair * @dev Only callable by the contract owner, can only be called once * @custom:security Sends liquidity tokens to the teamWallet */ function launchBook() external payable onlyOwner { require(!launched, "Already launched"); uniswapV2Router.addLiquidityETH{value: msg.value}( address(this), _balances[address(this)], 0, 0, teamWallet, block.timestamp ); } /** * @notice Sets or unsets an address as an automated market maker pair * @dev Only callable by the contract owner * @param pair Address of the pair to be set or unset * @param value True to set as AMM pair, false to unset * @custom:security Cannot unset the main Uniswap pair */ function setAutomatedMarketMakerPair( address pair, bool value ) external onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed"); automatedMarketMakerPairs[pair] = value; } /** * @notice Sets the amount of tokens to swap and liquify * @dev Only callable by the contract owner * @param newSwapAmount New swap amount (in tokens) * @custom:security Limited between 0.001% and 0.5% of total supply */ function setSwapAtAmount(uint256 newSwapAmount) external onlyOwner { require( newSwapAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% of the supply" ); require( newSwapAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% of the supply" ); swapTokensAtAmount = newSwapAmount; } /** * @notice Sets the maximum transaction amount * @dev Only callable by the contract owner * @param newMaxTx New maximum transaction amount (in tokens) * @custom:security Cannot be set lower than 0.1% of total supply */ function setMaxTxnAmount(uint256 newMaxTx) external onlyOwner { require( newMaxTx >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set max transaction lower than 0.1%" ); maxTransactionAmount = newMaxTx * (10 ** 18); } /** * @notice Sets the maximum wallet amount * @dev Only callable by the contract owner * @param newMaxWallet New maximum wallet amount (in tokens) * @custom:security Cannot be set lower than 1% of total supply */ function setMaxWalletAmount(uint256 newMaxWallet) external onlyOwner { require( newMaxWallet >= ((totalSupply() * 1) / 100) / 1e18, "Cannot set max wallet lower than 1%" ); maxWallet = newMaxWallet * (10 ** 18); } /** * @notice Updates the rev wallet address * @dev Only callable by the contract owner * @param newAddress New rev wallet address */ function updateRevWallet(address newAddress) external onlyOwner { require(newAddress != address(0), "Address cannot be zero"); revWallet = newAddress; } /** * @notice Updates the team wallet address * @dev Only callable by the contract owner * @param newAddress New team wallet address */ function updateTeamWallet(address newAddress) external onlyOwner { require(newAddress != address(0), "Address cannot be zero"); teamWallet = newAddress; } /** * @notice Updates the ecosystem wallet address * @dev Only callable by the contract owner * @param newAddress New ecosystem wallet address */ function updateTreasuryWallet(address newAddress) external onlyOwner { require(newAddress != address(0), "Address cannot be zero"); treasuryWallet = newAddress; } /** * @notice Checks if an address is excluded from fees * @dev Public view function * @param account Address to check * @return True if excluded, false otherwise */ function excludedFromFee(address account) public view returns (bool) { return _isExcludedFromFees[account]; } /** * @notice Withdraws stuck tokens from the contract * @dev Only callable by the contract owner * @param token Address of the token to withdraw * @param to Address to send the withdrawn tokens * @custom:security Use with caution to avoid withdrawing essential contract tokens */ function withdrawStuckToken(address token, address to) external onlyOwner { uint256 _contractBalance = IERC20(token).balanceOf(address(this)); SafeERC20.safeTransfer(token, to, _contractBalance); // Use safeTransfer } /** * @notice Withdraws stuck ETH from the contract * @dev Only callable by the contract owner * @param addr Address to send the withdrawn ETH * @custom:security Use with caution to avoid withdrawing essential contract ETH */ function withdrawStuckETH(address addr) external onlyOwner { require(addr != address(0), "Invalid address"); (bool success, ) = addr.call{value: address(this).balance}(""); require(success, "Withdrawal failed"); } /** * @notice Swaps accumulated tokens for ETH and distributes to wallets * @dev Internal function, called automatically during transfers when threshold is met * @custom:security Ensures no reentrancy by using a 'swapping' flag */ function swapBack() private { uint256 swapThreshold = swapTokensAtAmount; bool success; if (balanceOf(address(this)) > swapTokensAtAmount * 20) { swapThreshold = swapTokensAtAmount * 20; } address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( swapThreshold, 0, path, address(this), block.timestamp ); uint256 ethBalance = address(this).balance; if (ethBalance > 0) { uint256 ethForRev = (ethBalance * revFee) / 100; uint256 ethForTeam = ethBalance - ethForRev; (success, ) = address(teamWallet).call{value: ethForTeam}(""); (success, ) = address(revWallet).call{value: ethForRev}(""); emit SwapAndLiquify(swapThreshold, ethForTeam, ethForRev); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"teamETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"revETH","type":"uint256"}],"name":"SwapAndLiquify","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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchBook","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_RevFee","type":"uint8"},{"internalType":"uint8","name":"_teamFee","type":"uint8"}],"name":"setDistributionFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_buyTotalFees","type":"uint8"},{"internalType":"uint8","name":"_sellTotalFees","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxTx","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWallet","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapAmount","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"teamFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateRevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a060405269021e19e0c9bab2400000600181905560025561271061002f69d3c21bcecceda10000006005610668565b6100399190610691565b600355600480546001600160a01b031990811673aa136932d25dbc61e88ce9cf36aebf0c48228f08179091556005805490911673616960f9e02e473a445a05ec7f6957cd99ecb8ba17905560068054790100550f9696566d5b152a6f569f0f77f5213134e55c57e1a892600161ff0160c01b03199091161790553480156100be575f5ffd5b505f80546001600160a01b031916331790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9163c45a01559160048083019260209291908290030181865afa15801561011e573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061014291906106b0565b6040516364e329cb60e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260248201526001600160a01b03919091169063c9c65396906044016020604051808303815f875af11580156101a1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101c591906106b0565b6001600160a01b031660808190525f908152600b60205260409020805460ff191660011790556102066101ff5f546001600160a01b031690565b6001610442565b610211306001610442565b61021e61dead6001610442565b600454610235906001600160a01b03166001610442565b60055461024c906001600160a01b03166001610442565b600654610263906001600160a01b03166001610442565b61028273e2fe530c047f2d85298b07d9333c05737f1435fb6001610442565b61029d6102965f546001600160a01b031690565b60016104c6565b6102bc737a250d5630b4cf539739df2c5dacb4c659f2488d60016104c6565b6102c73060016104c6565b6102d461dead60016104c6565b6080516102e29060016104c6565b6004546102f9906001600160a01b031660016104c6565b600654610310906001600160a01b031660016104c6565b600554610327906001600160a01b031660016104c6565b61034673e2fe530c047f2d85298b07d9333c05737f1435fb60016104c6565b305f81815260076020908152604080832069b3fe97a2fafd2f4000009081905590519081525f516020612bd65f395f51905f52910160405180910390a3335f81815260076020908152604080832069152d02c7e14af68000009081905590519081525f516020612bd65f395f51905f52910160405180910390a3600580546001600160a01b039081165f90815260076020526040808220690a968163f0a57b4000009055925490911680825282822054925190925f516020612bd65f395f51905f529161041591815260200190565b60405180910390a361043d30737a250d5630b4cf539739df2c5dacb4c659f2488d5f19610545565b6106dd565b336104545f546001600160a01b031690565b6001600160a01b03161461049c5760405162461bcd60e51b815260206004820181905260248201525f516020612bb65f395f51905f5260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b336104d85f546001600160a01b031690565b6001600160a01b03161461051b5760405162461bcd60e51b815260206004820181905260248201525f516020612bb65f395f51905f526044820152606401610493565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b0383166105a75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610493565b6001600160a01b0382166106085760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610493565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b808202811582820484141761068b57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f826106ab57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156106c0575f5ffd5b81516001600160a01b03811681146106d6575f5ffd5b9392505050565b6080516124ba6106fc5f395f81816103960152610ef701526124ba5ff3fe608060405260043610610220575f3560e01c80637cb332bb1161011e578063c8c8ebe4116100a8578063e166b0401161006d578063e166b040146106e0578063e2f45605146106e8578063f5ec7234146106fd578063f8b45b051461071c578063fb201b1d14610731575f5ffd5b8063c8c8ebe414610628578063d201b01e1461063d578063d7c94efd1461065c578063d85ba0631461067c578063dd62ed3e1461069c575f5ffd5b806395d89b41116100ee57806395d89b41146105805780639a7a23d6146105ac578063a9059cbb146105cb578063adfa29e5146105ea578063bc205ad314610609575f5ffd5b80637cb332bb146104ef578063809d458d1461050e57806385ecafd71461052d5780638da5cb5b14610564575f5ffd5b80634a62bb65116101aa5780636a486a8e1161016f5780636a486a8e1461045457806370a0823114610474578063715018a6146104a857806374010ece146104bc578063751039fc146104db575f5ffd5b80634a62bb65146103b85780634fcd2446146103d8578063590ffdce146103f75780636402511e1461041657806366650dae14610435575f5ffd5b806321d37e39116101f057806321d37e391461030057806323b872dd1461033257806327a14fc214610351578063313ce5671461037257806349bd5a5e14610385575f5ffd5b806306fdde031461022b578063095ea7b31461026c5780631694505e1461029b57806318160ddd146102da575f5ffd5b3661022757005b5f5ffd5b348015610236575f5ffd5b50604080518082019091526007815266426574626f6f6b60c81b60208201525b6040516102639190612108565b60405180910390f35b348015610277575f5ffd5b5061028b610286366004612158565b610745565b6040519015158152602001610263565b3480156102a6575f5ffd5b506102c2737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610263565b3480156102e5575f5ffd5b5069d3c21bcecceda10000005b604051908152602001610263565b34801561030b575f5ffd5b5060065461032090600160b01b900460ff1681565b60405160ff9091168152602001610263565b34801561033d575f5ffd5b5061028b61034c366004612180565b61075b565b34801561035c575f5ffd5b5061037061036b3660046121ba565b61080f565b005b34801561037d575f5ffd5b506012610320565b348015610390575f5ffd5b506102c27f000000000000000000000000000000000000000000000000000000000000000081565b3480156103c3575f5ffd5b5060065461028b90600160c81b900460ff1681565b3480156103e3575f5ffd5b506103706103f23660046121e1565b6108ee565b348015610402575f5ffd5b50610370610411366004612222565b610a27565b348015610421575f5ffd5b506103706104303660046121ba565b610a89565b348015610440575f5ffd5b5061037061044f366004612222565b610be4565b34801561045f575f5ffd5b5060065461032090600160a81b900460ff1681565b34801561047f575f5ffd5b506102f261048e366004612257565b6001600160a01b03165f9081526007602052604090205490565b3480156104b3575f5ffd5b50610370610c46565b3480156104c7575f5ffd5b506103706104d63660046121ba565b610c8f565b3480156104e6575f5ffd5b50610370610d76565b3480156104fa575f5ffd5b50610370610509366004612257565b610dbd565b348015610519575f5ffd5b50610370610528366004612257565b610e3d565b348015610538575f5ffd5b5061028b610547366004612257565b6001600160a01b03165f9081526009602052604090205460ff1690565b34801561056f575f5ffd5b505f546001600160a01b03166102c2565b34801561058b575f5ffd5b50604080518082019091526004815263424f4f4b60e01b6020820152610256565b3480156105b7575f5ffd5b506103706105c6366004612222565b610ebd565b3480156105d6575f5ffd5b5061028b6105e5366004612158565b610fa0565b3480156105f5575f5ffd5b50610370610604366004612257565b610fac565b348015610614575f5ffd5b50610370610623366004612277565b61102c565b348015610633575f5ffd5b506102f260015481565b348015610648575f5ffd5b50610370610657366004612257565b6110de565b348015610667575f5ffd5b5060065461032090600160b81b900460ff1681565b348015610687575f5ffd5b5060065461032090600160a01b900460ff1681565b3480156106a7575f5ffd5b506102f26106b6366004612277565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b6103706111f5565b3480156106f3575f5ffd5b506102f260035481565b348015610708575f5ffd5b506103706107173660046121e1565b61132b565b348015610727575f5ffd5b506102f260025481565b34801561073c575f5ffd5b5061037061140b565b5f6107513384846114a5565b5060015b92915050565b6001600160a01b0383165f9081526008602090815260408083203384529091528120545f1981146107f957828110156107ec5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6107f985338584036114a5565b6108048585856115c8565b506001949350505050565b336108215f546001600160a01b031690565b6001600160a01b0316146108475760405162461bcd60e51b81526004016107e39061229f565b670de0b6b3a7640000606461086769d3c21bcecceda100000060016122e8565b61087191906122ff565b61087b91906122ff565b8110156108d65760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201526220312560e81b60648201526084016107e3565b6108e881670de0b6b3a76400006122e8565b60025550565b336109005f546001600160a01b031690565b6001600160a01b0316146109265760405162461bcd60e51b81526004016107e39061229f565b601e8260ff16111561098c5760405162461bcd60e51b815260206004820152602960248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201526875616c20746f20332560b81b60648201526084016107e3565b601e8160ff1611156109f35760405162461bcd60e51b815260206004820152602a60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f7220656044820152697175616c20746f20332560b01b60648201526084016107e3565b6006805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b33610a395f546001600160a01b031690565b6001600160a01b031614610a5f5760405162461bcd60e51b81526004016107e39061229f565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b33610a9b5f546001600160a01b031690565b6001600160a01b031614610ac15760405162461bcd60e51b81526004016107e39061229f565b620186a0610ada69d3c21bcecceda100000060016122e8565b610ae491906122ff565b811015610b515760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527420302e30303125206f662074686520737570706c7960581b60648201526084016107e3565b6103e8610b6969d3c21bcecceda100000060056122e8565b610b7391906122ff565b811115610bdf5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f7420626520686967686572207468616044820152736e20302e3525206f662074686520737570706c7960601b60648201526084016107e3565b600355565b33610bf65f546001600160a01b031690565b6001600160a01b031614610c1c5760405162461bcd60e51b81526004016107e39061229f565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b33610c585f546001600160a01b031690565b6001600160a01b031614610c7e5760405162461bcd60e51b81526004016107e39061229f565b5f80546001600160a01b0319169055565b33610ca15f546001600160a01b031690565b6001600160a01b031614610cc75760405162461bcd60e51b81526004016107e39061229f565b670de0b6b3a76400006103e8610ce869d3c21bcecceda100000060016122e8565b610cf291906122ff565b610cfc91906122ff565b811015610d5e5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f776572604482015269207468616e20302e312560b01b60648201526084016107e3565b610d7081670de0b6b3a76400006122e8565b60015550565b33610d885f546001600160a01b031690565b6001600160a01b031614610dae5760405162461bcd60e51b81526004016107e39061229f565b6006805460ff60c81b19169055565b33610dcf5f546001600160a01b031690565b6001600160a01b031614610df55760405162461bcd60e51b81526004016107e39061229f565b6001600160a01b038116610e1b5760405162461bcd60e51b81526004016107e39061231e565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b33610e4f5f546001600160a01b031690565b6001600160a01b031614610e755760405162461bcd60e51b81526004016107e39061229f565b6001600160a01b038116610e9b5760405162461bcd60e51b81526004016107e39061231e565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b33610ecf5f546001600160a01b031690565b6001600160a01b031614610ef55760405162461bcd60e51b81526004016107e39061229f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610f765760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f76656400000000000060448201526064016107e3565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f6107513384846115c8565b33610fbe5f546001600160a01b031690565b6001600160a01b031614610fe45760405162461bcd60e51b81526004016107e39061229f565b6001600160a01b03811661100a5760405162461bcd60e51b81526004016107e39061231e565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b3361103e5f546001600160a01b031690565b6001600160a01b0316146110645760405162461bcd60e51b81526004016107e39061229f565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa1580156110a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110cc919061234e565b90506110d9838383611d80565b505050565b336110f05f546001600160a01b031690565b6001600160a01b0316146111165760405162461bcd60e51b81526004016107e39061229f565b6001600160a01b03811661115e5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016107e3565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f81146111a7576040519150601f19603f3d011682016040523d82523d5f602084013e6111ac565b606091505b50509050806111f15760405162461bcd60e51b815260206004820152601160248201527015da5d1a191c985dd85b0819985a5b1959607a1b60448201526064016107e3565b5050565b336112075f546001600160a01b031690565b6001600160a01b03161461122d5760405162461bcd60e51b81526004016107e39061229f565b600654600160d01b900460ff161561127a5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b60448201526064016107e3565b305f818152600760205260408082205460048054925163f305d71960e01b81529081019490945260248401526044830182905260648301919091526001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af1158015611306573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906110d99190612365565b3361133d5f546001600160a01b031690565b6001600160a01b0316146113635760405162461bcd60e51b81526004016107e39061229f565b6006805461ffff60b01b1916600160b01b60ff858116820260ff60b81b191692909217600160b81b858416810291909117938490556113ab9390810483169291900416612390565b60ff166064146111f15760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206861766520746f20626520657175616c20746f604482015264203130302560d81b60648201526084016107e3565b3361141d5f546001600160a01b031690565b6001600160a01b0316146114435760405162461bcd60e51b81526004016107e39061229f565b600654600160d01b900460ff16156114905760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b60448201526064016107e3565b6006805460ff60d01b1916600160d01b179055565b6001600160a01b0383166115075760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107e3565b6001600160a01b0382166115685760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107e3565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661162c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107e3565b6001600160a01b03821661168e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107e3565b5f81116116ef5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107e3565b600654600160d01b900460ff1615801561174357505f546001600160a01b0384811691161480159061172a57506001600160a01b0383163014155b801561174357505f546001600160a01b03838116911614155b156117865760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016107e3565b600654600160c81b900460ff1615611a47575f546001600160a01b038481169116148015906117c257505f546001600160a01b03838116911614155b80156117d657506001600160a01b03821615155b80156117ed57506001600160a01b03821661dead14155b80156118035750600654600160c01b900460ff16155b15611a47576001600160a01b0383165f908152600b602052604090205460ff16801561184757506001600160a01b0382165f908152600a602052604090205460ff16155b1561191a576001548111156118ac5760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e74206578636565647320746865206044820152640dac2f0a8f60db1b60648201526084016107e3565b6002546001600160a01b0383165f908152600760205260409020546118d190836123a9565b11156119155760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107e3565b611a47565b6001600160a01b0382165f908152600b602052604090205460ff16801561195957506001600160a01b0383165f908152600a602052604090205460ff16155b156119bf576001548111156119155760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e74206578636565647320746865604482015265040dac2f0a8f60d31b60648201526084016107e3565b6001600160a01b0382165f908152600a602052604090205460ff16611a47576002546001600160a01b0383165f90815260076020526040902054611a0390836123a9565b1115611a475760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107e3565b600354305f90815260076020526040902054108015908190611a735750600654600160c01b900460ff16155b8015611a9757506001600160a01b0384165f908152600b602052604090205460ff16155b8015611abb57506001600160a01b0384165f9081526009602052604090205460ff16155b8015611adf57506001600160a01b0383165f9081526009602052604090205460ff16155b15611b0d576006805460ff60c01b1916600160c01b179055611aff611ea7565b6006805460ff60c01b191690555b6006546001600160a01b0385165f9081526009602052604090205460ff600160c01b909204821615911680611b5957506001600160a01b0384165f9081526009602052604090205460ff165b15611b6157505f5b6001600160a01b0385165f9081526007602052604090205483811015611bd85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107e3565b5f8215611d0e576001600160a01b0386165f908152600b602052604090205460ff168015611c115750600654600160a81b900460ff1615155b15611c42576006546103e890611c3190600160a81b900460ff16876122e8565b611c3b91906122ff565b9050611ca1565b6001600160a01b0387165f908152600b602052604090205460ff168015611c745750600654600160a01b900460ff1615155b15611ca1576006546103e890611c9490600160a01b900460ff16876122e8565b611c9e91906122ff565b90505b8015611d0e576001600160a01b0387165f8181526007602090815260408083208054869003905530808452928190208054860190555184815297849003979192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b038088165f8181526007602052604080822080548a900390559289168082529083902080548901905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d6f9089815260200190565b60405180910390a350505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f92839290871691611ddb91906123bc565b5f604051808303815f865af19150503d805f8114611e14576040519150601f19603f3d011682016040523d82523d5f602084013e611e19565b606091505b5091509150818015611e43575080511580611e43575080806020019051810190611e4391906123d2565b611ea05760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346456044820152671497d1905253115160c21b60648201526084016107e3565b5050505050565b6003545f611eb68260146122e8565b305f908152600760205260409020541115611edc57600354611ed99060146122e8565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611f0f57611f0f6123ed565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611f5757611f576123ed565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611fae9086905f90869030904290600401612401565b5f604051808303815f87803b158015611fc5575f5ffd5b505af1158015611fd7573d5f5f3e3d5ffd5b504792505081159050612102576006545f9060649061200090600160b01b900460ff16846122e8565b61200a91906122ff565b90505f6120178284612471565b6004546040519192506001600160a01b03169082905f81818185875af1925050503d805f8114612062576040519150601f19603f3d011682016040523d82523d5f602084013e612067565b606091505b50506006546040519196506001600160a01b03169083905f81818185875af1925050503d805f81146120b4576040519150601f19603f3d011682016040523d82523d5f602084013e6120b9565b606091505b505060408051888152602081018490529081018490529095507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150505b50505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114612153575f5ffd5b919050565b5f5f60408385031215612169575f5ffd5b6121728361213d565b946020939093013593505050565b5f5f5f60608486031215612192575f5ffd5b61219b8461213d565b92506121a96020850161213d565b929592945050506040919091013590565b5f602082840312156121ca575f5ffd5b5035919050565b803560ff81168114612153575f5ffd5b5f5f604083850312156121f2575f5ffd5b6121fb836121d1565b9150612209602084016121d1565b90509250929050565b801515811461221f575f5ffd5b50565b5f5f60408385031215612233575f5ffd5b61223c8361213d565b9150602083013561224c81612212565b809150509250929050565b5f60208284031215612267575f5ffd5b6122708261213d565b9392505050565b5f5f60408385031215612288575f5ffd5b6122918361213d565b91506122096020840161213d565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610755576107556122d4565b5f8261231957634e487b7160e01b5f52601260045260245ffd5b500490565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b5f6020828403121561235e575f5ffd5b5051919050565b5f5f5f60608486031215612377575f5ffd5b5050815160208301516040909301519094929350919050565b60ff8181168382160190811115610755576107556122d4565b80820180821115610755576107556122d4565b5f82518060208501845e5f920191825250919050565b5f602082840312156123e2575f5ffd5b815161227081612212565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156124515783516001600160a01b031683526020938401939092019160010161242a565b50506001600160a01b039590951660608401525050608001529392505050565b81810381811115610755576107556122d456fea26469706673582212203824c637dadea052ce7ea543770d868e5e0ac3129b688ef1428af2e692dd27bd64736f6c634300081c00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
Deployed Bytecode
0x608060405260043610610220575f3560e01c80637cb332bb1161011e578063c8c8ebe4116100a8578063e166b0401161006d578063e166b040146106e0578063e2f45605146106e8578063f5ec7234146106fd578063f8b45b051461071c578063fb201b1d14610731575f5ffd5b8063c8c8ebe414610628578063d201b01e1461063d578063d7c94efd1461065c578063d85ba0631461067c578063dd62ed3e1461069c575f5ffd5b806395d89b41116100ee57806395d89b41146105805780639a7a23d6146105ac578063a9059cbb146105cb578063adfa29e5146105ea578063bc205ad314610609575f5ffd5b80637cb332bb146104ef578063809d458d1461050e57806385ecafd71461052d5780638da5cb5b14610564575f5ffd5b80634a62bb65116101aa5780636a486a8e1161016f5780636a486a8e1461045457806370a0823114610474578063715018a6146104a857806374010ece146104bc578063751039fc146104db575f5ffd5b80634a62bb65146103b85780634fcd2446146103d8578063590ffdce146103f75780636402511e1461041657806366650dae14610435575f5ffd5b806321d37e39116101f057806321d37e391461030057806323b872dd1461033257806327a14fc214610351578063313ce5671461037257806349bd5a5e14610385575f5ffd5b806306fdde031461022b578063095ea7b31461026c5780631694505e1461029b57806318160ddd146102da575f5ffd5b3661022757005b5f5ffd5b348015610236575f5ffd5b50604080518082019091526007815266426574626f6f6b60c81b60208201525b6040516102639190612108565b60405180910390f35b348015610277575f5ffd5b5061028b610286366004612158565b610745565b6040519015158152602001610263565b3480156102a6575f5ffd5b506102c2737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610263565b3480156102e5575f5ffd5b5069d3c21bcecceda10000005b604051908152602001610263565b34801561030b575f5ffd5b5060065461032090600160b01b900460ff1681565b60405160ff9091168152602001610263565b34801561033d575f5ffd5b5061028b61034c366004612180565b61075b565b34801561035c575f5ffd5b5061037061036b3660046121ba565b61080f565b005b34801561037d575f5ffd5b506012610320565b348015610390575f5ffd5b506102c27f00000000000000000000000044ac3e9e247e657782f712da400b00fe45260eeb81565b3480156103c3575f5ffd5b5060065461028b90600160c81b900460ff1681565b3480156103e3575f5ffd5b506103706103f23660046121e1565b6108ee565b348015610402575f5ffd5b50610370610411366004612222565b610a27565b348015610421575f5ffd5b506103706104303660046121ba565b610a89565b348015610440575f5ffd5b5061037061044f366004612222565b610be4565b34801561045f575f5ffd5b5060065461032090600160a81b900460ff1681565b34801561047f575f5ffd5b506102f261048e366004612257565b6001600160a01b03165f9081526007602052604090205490565b3480156104b3575f5ffd5b50610370610c46565b3480156104c7575f5ffd5b506103706104d63660046121ba565b610c8f565b3480156104e6575f5ffd5b50610370610d76565b3480156104fa575f5ffd5b50610370610509366004612257565b610dbd565b348015610519575f5ffd5b50610370610528366004612257565b610e3d565b348015610538575f5ffd5b5061028b610547366004612257565b6001600160a01b03165f9081526009602052604090205460ff1690565b34801561056f575f5ffd5b505f546001600160a01b03166102c2565b34801561058b575f5ffd5b50604080518082019091526004815263424f4f4b60e01b6020820152610256565b3480156105b7575f5ffd5b506103706105c6366004612222565b610ebd565b3480156105d6575f5ffd5b5061028b6105e5366004612158565b610fa0565b3480156105f5575f5ffd5b50610370610604366004612257565b610fac565b348015610614575f5ffd5b50610370610623366004612277565b61102c565b348015610633575f5ffd5b506102f260015481565b348015610648575f5ffd5b50610370610657366004612257565b6110de565b348015610667575f5ffd5b5060065461032090600160b81b900460ff1681565b348015610687575f5ffd5b5060065461032090600160a01b900460ff1681565b3480156106a7575f5ffd5b506102f26106b6366004612277565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b6103706111f5565b3480156106f3575f5ffd5b506102f260035481565b348015610708575f5ffd5b506103706107173660046121e1565b61132b565b348015610727575f5ffd5b506102f260025481565b34801561073c575f5ffd5b5061037061140b565b5f6107513384846114a5565b5060015b92915050565b6001600160a01b0383165f9081526008602090815260408083203384529091528120545f1981146107f957828110156107ec5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6107f985338584036114a5565b6108048585856115c8565b506001949350505050565b336108215f546001600160a01b031690565b6001600160a01b0316146108475760405162461bcd60e51b81526004016107e39061229f565b670de0b6b3a7640000606461086769d3c21bcecceda100000060016122e8565b61087191906122ff565b61087b91906122ff565b8110156108d65760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201526220312560e81b60648201526084016107e3565b6108e881670de0b6b3a76400006122e8565b60025550565b336109005f546001600160a01b031690565b6001600160a01b0316146109265760405162461bcd60e51b81526004016107e39061229f565b601e8260ff16111561098c5760405162461bcd60e51b815260206004820152602960248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201526875616c20746f20332560b81b60648201526084016107e3565b601e8160ff1611156109f35760405162461bcd60e51b815260206004820152602a60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f7220656044820152697175616c20746f20332560b01b60648201526084016107e3565b6006805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b33610a395f546001600160a01b031690565b6001600160a01b031614610a5f5760405162461bcd60e51b81526004016107e39061229f565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b33610a9b5f546001600160a01b031690565b6001600160a01b031614610ac15760405162461bcd60e51b81526004016107e39061229f565b620186a0610ada69d3c21bcecceda100000060016122e8565b610ae491906122ff565b811015610b515760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527420302e30303125206f662074686520737570706c7960581b60648201526084016107e3565b6103e8610b6969d3c21bcecceda100000060056122e8565b610b7391906122ff565b811115610bdf5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f7420626520686967686572207468616044820152736e20302e3525206f662074686520737570706c7960601b60648201526084016107e3565b600355565b33610bf65f546001600160a01b031690565b6001600160a01b031614610c1c5760405162461bcd60e51b81526004016107e39061229f565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b33610c585f546001600160a01b031690565b6001600160a01b031614610c7e5760405162461bcd60e51b81526004016107e39061229f565b5f80546001600160a01b0319169055565b33610ca15f546001600160a01b031690565b6001600160a01b031614610cc75760405162461bcd60e51b81526004016107e39061229f565b670de0b6b3a76400006103e8610ce869d3c21bcecceda100000060016122e8565b610cf291906122ff565b610cfc91906122ff565b811015610d5e5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f776572604482015269207468616e20302e312560b01b60648201526084016107e3565b610d7081670de0b6b3a76400006122e8565b60015550565b33610d885f546001600160a01b031690565b6001600160a01b031614610dae5760405162461bcd60e51b81526004016107e39061229f565b6006805460ff60c81b19169055565b33610dcf5f546001600160a01b031690565b6001600160a01b031614610df55760405162461bcd60e51b81526004016107e39061229f565b6001600160a01b038116610e1b5760405162461bcd60e51b81526004016107e39061231e565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b33610e4f5f546001600160a01b031690565b6001600160a01b031614610e755760405162461bcd60e51b81526004016107e39061229f565b6001600160a01b038116610e9b5760405162461bcd60e51b81526004016107e39061231e565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b33610ecf5f546001600160a01b031690565b6001600160a01b031614610ef55760405162461bcd60e51b81526004016107e39061229f565b7f00000000000000000000000044ac3e9e247e657782f712da400b00fe45260eeb6001600160a01b0316826001600160a01b031603610f765760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f76656400000000000060448201526064016107e3565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f6107513384846115c8565b33610fbe5f546001600160a01b031690565b6001600160a01b031614610fe45760405162461bcd60e51b81526004016107e39061229f565b6001600160a01b03811661100a5760405162461bcd60e51b81526004016107e39061231e565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b3361103e5f546001600160a01b031690565b6001600160a01b0316146110645760405162461bcd60e51b81526004016107e39061229f565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa1580156110a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110cc919061234e565b90506110d9838383611d80565b505050565b336110f05f546001600160a01b031690565b6001600160a01b0316146111165760405162461bcd60e51b81526004016107e39061229f565b6001600160a01b03811661115e5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016107e3565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f81146111a7576040519150601f19603f3d011682016040523d82523d5f602084013e6111ac565b606091505b50509050806111f15760405162461bcd60e51b815260206004820152601160248201527015da5d1a191c985dd85b0819985a5b1959607a1b60448201526064016107e3565b5050565b336112075f546001600160a01b031690565b6001600160a01b03161461122d5760405162461bcd60e51b81526004016107e39061229f565b600654600160d01b900460ff161561127a5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b60448201526064016107e3565b305f818152600760205260408082205460048054925163f305d71960e01b81529081019490945260248401526044830182905260648301919091526001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af1158015611306573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906110d99190612365565b3361133d5f546001600160a01b031690565b6001600160a01b0316146113635760405162461bcd60e51b81526004016107e39061229f565b6006805461ffff60b01b1916600160b01b60ff858116820260ff60b81b191692909217600160b81b858416810291909117938490556113ab9390810483169291900416612390565b60ff166064146111f15760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206861766520746f20626520657175616c20746f604482015264203130302560d81b60648201526084016107e3565b3361141d5f546001600160a01b031690565b6001600160a01b0316146114435760405162461bcd60e51b81526004016107e39061229f565b600654600160d01b900460ff16156114905760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b60448201526064016107e3565b6006805460ff60d01b1916600160d01b179055565b6001600160a01b0383166115075760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107e3565b6001600160a01b0382166115685760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107e3565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661162c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107e3565b6001600160a01b03821661168e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107e3565b5f81116116ef5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107e3565b600654600160d01b900460ff1615801561174357505f546001600160a01b0384811691161480159061172a57506001600160a01b0383163014155b801561174357505f546001600160a01b03838116911614155b156117865760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016107e3565b600654600160c81b900460ff1615611a47575f546001600160a01b038481169116148015906117c257505f546001600160a01b03838116911614155b80156117d657506001600160a01b03821615155b80156117ed57506001600160a01b03821661dead14155b80156118035750600654600160c01b900460ff16155b15611a47576001600160a01b0383165f908152600b602052604090205460ff16801561184757506001600160a01b0382165f908152600a602052604090205460ff16155b1561191a576001548111156118ac5760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e74206578636565647320746865206044820152640dac2f0a8f60db1b60648201526084016107e3565b6002546001600160a01b0383165f908152600760205260409020546118d190836123a9565b11156119155760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107e3565b611a47565b6001600160a01b0382165f908152600b602052604090205460ff16801561195957506001600160a01b0383165f908152600a602052604090205460ff16155b156119bf576001548111156119155760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e74206578636565647320746865604482015265040dac2f0a8f60d31b60648201526084016107e3565b6001600160a01b0382165f908152600a602052604090205460ff16611a47576002546001600160a01b0383165f90815260076020526040902054611a0390836123a9565b1115611a475760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107e3565b600354305f90815260076020526040902054108015908190611a735750600654600160c01b900460ff16155b8015611a9757506001600160a01b0384165f908152600b602052604090205460ff16155b8015611abb57506001600160a01b0384165f9081526009602052604090205460ff16155b8015611adf57506001600160a01b0383165f9081526009602052604090205460ff16155b15611b0d576006805460ff60c01b1916600160c01b179055611aff611ea7565b6006805460ff60c01b191690555b6006546001600160a01b0385165f9081526009602052604090205460ff600160c01b909204821615911680611b5957506001600160a01b0384165f9081526009602052604090205460ff165b15611b6157505f5b6001600160a01b0385165f9081526007602052604090205483811015611bd85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107e3565b5f8215611d0e576001600160a01b0386165f908152600b602052604090205460ff168015611c115750600654600160a81b900460ff1615155b15611c42576006546103e890611c3190600160a81b900460ff16876122e8565b611c3b91906122ff565b9050611ca1565b6001600160a01b0387165f908152600b602052604090205460ff168015611c745750600654600160a01b900460ff1615155b15611ca1576006546103e890611c9490600160a01b900460ff16876122e8565b611c9e91906122ff565b90505b8015611d0e576001600160a01b0387165f8181526007602090815260408083208054869003905530808452928190208054860190555184815297849003979192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b038088165f8181526007602052604080822080548a900390559289168082529083902080548901905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d6f9089815260200190565b60405180910390a350505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f92839290871691611ddb91906123bc565b5f604051808303815f865af19150503d805f8114611e14576040519150601f19603f3d011682016040523d82523d5f602084013e611e19565b606091505b5091509150818015611e43575080511580611e43575080806020019051810190611e4391906123d2565b611ea05760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346456044820152671497d1905253115160c21b60648201526084016107e3565b5050505050565b6003545f611eb68260146122e8565b305f908152600760205260409020541115611edc57600354611ed99060146122e8565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611f0f57611f0f6123ed565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611f5757611f576123ed565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611fae9086905f90869030904290600401612401565b5f604051808303815f87803b158015611fc5575f5ffd5b505af1158015611fd7573d5f5f3e3d5ffd5b504792505081159050612102576006545f9060649061200090600160b01b900460ff16846122e8565b61200a91906122ff565b90505f6120178284612471565b6004546040519192506001600160a01b03169082905f81818185875af1925050503d805f8114612062576040519150601f19603f3d011682016040523d82523d5f602084013e612067565b606091505b50506006546040519196506001600160a01b03169083905f81818185875af1925050503d805f81146120b4576040519150601f19603f3d011682016040523d82523d5f602084013e6120b9565b606091505b505060408051888152602081018490529081018490529095507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150505b50505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114612153575f5ffd5b919050565b5f5f60408385031215612169575f5ffd5b6121728361213d565b946020939093013593505050565b5f5f5f60608486031215612192575f5ffd5b61219b8461213d565b92506121a96020850161213d565b929592945050506040919091013590565b5f602082840312156121ca575f5ffd5b5035919050565b803560ff81168114612153575f5ffd5b5f5f604083850312156121f2575f5ffd5b6121fb836121d1565b9150612209602084016121d1565b90509250929050565b801515811461221f575f5ffd5b50565b5f5f60408385031215612233575f5ffd5b61223c8361213d565b9150602083013561224c81612212565b809150509250929050565b5f60208284031215612267575f5ffd5b6122708261213d565b9392505050565b5f5f60408385031215612288575f5ffd5b6122918361213d565b91506122096020840161213d565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610755576107556122d4565b5f8261231957634e487b7160e01b5f52601260045260245ffd5b500490565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b5f6020828403121561235e575f5ffd5b5051919050565b5f5f5f60608486031215612377575f5ffd5b5050815160208301516040909301519094929350919050565b60ff8181168382160190811115610755576107556122d4565b80820180821115610755576107556122d4565b5f82518060208501845e5f920191825250919050565b5f602082840312156123e2575f5ffd5b815161227081612212565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156124515783516001600160a01b031683526020938401939092019160010161242a565b50506001600160a01b039590951660608401525050608001529392505050565b81810381811115610755576107556122d456fea26469706673582212203824c637dadea052ce7ea543770d868e5e0ac3129b688ef1428af2e692dd27bd64736f6c634300081c0033
Deployed Bytecode Sourcemap
2127:18496:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5817:83;;;;;;;;;;-1:-1:-1;5887:5:0;;;;;;;;;;;;-1:-1:-1;;;5887:5:0;;;;5817:83;;;;;;;:::i;:::-;;;;;;;;6471:152;;;;;;;;;;-1:-1:-1;6471:152:0;;;;;:::i;:::-;;:::i;:::-;;;1085:14:1;;1078:22;1060:41;;1048:2;1033:18;6471:152:0;920:187:1;3717:124:0;;;;;;;;;;;;3798:42;3717:124;;;;;-1:-1:-1;;;;;1302:32:1;;;1284:51;;1272:2;1257:18;3717:124:0;1112:229:1;6087:91:0;;;;;;;;;;-1:-1:-1;2311:16:0;6087:91;;;1492:25:1;;;1480:2;1465:18;6087:91:0;1346:177:1;2916:24:0;;;;;;;;;;-1:-1:-1;2916:24:0;;;;-1:-1:-1;;;2916:24:0;;;;;;;;;1700:4:1;1688:17;;;1670:36;;1658:2;1643:18;2916:24:0;1528:184:1;7167:603:0;;;;;;;;;;-1:-1:-1;7167:603:0;;;;;:::i;:::-;;:::i;16587:271::-;;;;;;;;;;-1:-1:-1;16587:271:0;;;;;:::i;:::-;;:::i;:::-;;6003:76;;;;;;;;;;-1:-1:-1;6069:2:0;6003:76;;3848:38;;;;;;;;;;;;;;;3009:33;;;;;;;;;;-1:-1:-1;3009:33:0;;;;-1:-1:-1;;;3009:33:0;;;;;;12394:436;;;;;;;;;;-1:-1:-1;12394:436:0;;;;;:::i;:::-;;:::i;13086:161::-;;;;;;;;;;-1:-1:-1;13086:161:0;;;;;:::i;:::-;;:::i;15355:435::-;;;;;;;;;;-1:-1:-1;15355:435:0;;;;;:::i;:::-;;:::i;13513:183::-;;;;;;;;;;-1:-1:-1;13513:183:0;;;;;:::i;:::-;;:::i;2875:32::-;;;;;;;;;;-1:-1:-1;2875:32:0;;;;-1:-1:-1;;;2875:32:0;;;;;;6186:110;;;;;;;;;;-1:-1:-1;6186:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;6270:18:0;6243:7;6270:18;;;:9;:18;;;;;;;6186:110;598:92;;;;;;;;;;;;;:::i;16055:275::-;;;;;;;;;;-1:-1:-1;16055:275:0;;;;;:::i;:::-;;:::i;11317:84::-;;;;;;;;;;;;;:::i;17377:177::-;;;;;;;;;;-1:-1:-1;17377:177:0;;;;;:::i;:::-;;:::i;17737:185::-;;;;;;;;;;-1:-1:-1;17737:185:0;;;;;:::i;:::-;;:::i;18131:123::-;;;;;;;;;;-1:-1:-1;18131:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;18218:28:0;18194:4;18218:28;;;:19;:28;;;;;;;;;18131:123;377:87;;;;;;;;;;-1:-1:-1;423:7:0;450:6;-1:-1:-1;;;;;450:6:0;377:87;;5908;;;;;;;;;;-1:-1:-1;5980:7:0;;;;;;;;;;;;-1:-1:-1;;;5980:7:0;;;;5908:87;;14852:236;;;;;;;;;;-1:-1:-1;14852:236:0;;;;;:::i;:::-;;:::i;6976:183::-;;;;;;;;;;-1:-1:-1;6976:183:0;;;;;:::i;:::-;;:::i;17029:175::-;;;;;;;;;;-1:-1:-1;17029:175:0;;;;;:::i;:::-;;:::i;18584:240::-;;;;;;;;;;-1:-1:-1;18584:240:0;;;;;:::i;:::-;;:::i;2336:51::-;;;;;;;;;;;;;;;;19093:247;;;;;;;;;;-1:-1:-1;19093:247:0;;;;;:::i;:::-;;:::i;2947:25::-;;;;;;;;;;-1:-1:-1;2947:25:0;;;;-1:-1:-1;;;2947:25:0;;;;;;2837:31;;;;;;;;;;-1:-1:-1;2837:31:0;;;;-1:-1:-1;;;2837:31:0;;;;;;6304:159;;;;;;;;;;-1:-1:-1;6304:159:0;;;;;:::i;:::-;-1:-1:-1;;;;;6428:18:0;;;6401:7;6428:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6304:159;14190:331;;;:::i;2441:62::-;;;;;;;;;;;;;;;;11733:291;;;;;;;;;;-1:-1:-1;11733:291:0;;;;;:::i;:::-;;:::i;2394:40::-;;;;;;;;;;;;;;;;13842:123;;;;;;;;;;;;;:::i;6471:152::-;6539:4;6556:37;6565:10;6577:7;6586:6;6556:8;:37::i;:::-;-1:-1:-1;6611:4:0;6471:152;;;;;:::o;7167:603::-;-1:-1:-1;;;;;7336:19:0;;7292:4;7336:19;;;:11;:19;;;;;;;;7356:10;7336:31;;;;;;;;-1:-1:-1;;7382:37:0;;7378:312;;7482:6;7462:16;:26;;7436:128;;;;-1:-1:-1;;;7436:128:0;;4054:2:1;7436:128:0;;;4036:21:1;4093:2;4073:18;;;4066:30;4132:34;4112:18;;;4105:62;-1:-1:-1;;;4183:18:1;;;4176:38;4231:19;;7436:128:0;;;;;;;;;7608:55;7617:6;7625:10;7656:6;7637:16;:25;7608:8;:55::i;:::-;7702:36;7712:6;7720:9;7731:6;7702:9;:36::i;:::-;-1:-1:-1;7758:4:0;;7167:603;-1:-1:-1;;;;7167:603:0:o;16587:271::-;523:10;512:7;423;450:6;-1:-1:-1;;;;;450:6:0;;377:87;512:7;-1:-1:-1;;;;;512:21:0;;504:66;;;;-1:-1:-1;;;504:66:0;;;;;;;:::i;:::-;16735:4:::1;16728:3;16707:17;2311:16:::0;16723:1:::1;16707:17;:::i;:::-;16706:25;;;;:::i;:::-;16705:34;;;;:::i;:::-;16689:12;:50;;16667:135;;;::::0;-1:-1:-1;;;16667:135:0;;5351:2:1;16667:135:0::1;::::0;::::1;5333:21:1::0;5390:2;5370:18;;;5363:30;5429:34;5409:18;;;5402:62;-1:-1:-1;;;5480:18:1;;;5473:33;5523:19;;16667:135:0::1;5149:399:1::0;16667:135:0::1;16825:25;:12:::0;16841:8:::1;16825:25;:::i;:::-;16813:9;:37:::0;-1:-1:-1;16587:271:0:o;12394:436::-;523:10;512:7;423;450:6;-1:-1:-1;;;;;450:6:0;;377:87;512:7;-1:-1:-1;;;;;512:21:0;;504:66;;;;-1:-1:-1;;;504:66:0;;;;;;;:::i;:::-;12548:2:::1;12531:13;:19;;;;12509:110;;;::::0;-1:-1:-1;;;12509:110:0;;5755:2:1;12509:110:0::1;::::0;::::1;5737:21:1::0;5794:2;5774:18;;;5767:30;5833:34;5813:18;;;5806:62;-1:-1:-1;;;5884:18:1;;;5877:39;5933:19;;12509:110:0::1;5553:405:1::0;12509:110:0::1;12670:2;12652:14;:20;;;;12630:112;;;::::0;-1:-1:-1;;;12630:112:0;;6165:2:1;12630:112:0::1;::::0;::::1;6147:21:1::0;6204:2;6184:18;;;6177:30;6243:34;6223:18;;;6216:62;-1:-1:-1;;;6294:18:1;;;6287:40;6344:19;;12630:112:0::1;5963:406:1::0;12630:112:0::1;12753:12;:28:::0;;-1:-1:-1;;;;12792:30:0;-1:-1:-1;;;12753:28:0::1;::::0;;::::1;;-1:-1:-1::0;;;;12792:30:0;;-1:-1:-1;;;12792:30:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;12394:436::o;13086:161::-;523:10;512:7;423;450:6;-1:-1:-1;;;;;450:6:0;;377:87;512:7;-1:-1:-1;;;;;512:21:0;;504:66;;;;-1:-1:-1;;;504:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13200:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;13200:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13086:161::o;15355:435::-;523:10;512:7;423;450:6;-1:-1:-1;;;;;450:6:0;;377:87;512:7;-1:-1:-1;;;;;512:21:0;;504:66;;;;-1:-1:-1;;;504:66:0;;;;;;;:::i;:::-;15494:6:::1;15473:17;2311:16:::0;15489:1:::1;15473:17;:::i;:::-;15472:28;;;;:::i;:::-;15455:13;:45;;15433:148;;;::::0;-1:-1:-1;;;15433:148:0;;6576:2:1;15433:148:0::1;::::0;::::1;6558:21:1::0;6615:2;6595:18;;;6588:30;6654:34;6634:18;;;6627:62;-1:-1:-1;;;6705:18:1;;;6698:51;6766:19;;15433:148:0::1;6374:417:1::0;15433:148:0::1;15653:4;15632:17;2311:16:::0;15648:1:::1;15632:17;:::i;:::-;15631:26;;;;:::i;:::-;15614:13;:43;;15592:145;;;::::0;-1:-1:-1;;;15592:145:0;;6998:2:1;15592:145:0::1;::::0;::::1;6980:21:1::0;7037:2;7017:18;;;7010:30;7076:34;7056:18;;;7049:62;-1:-1:-1;;;7127:18:1;;;7120:50;7187:19;;15592:145:0::1;6796:416:1::0;15592:145:0::1;15748:18;:34:::0;15355:435::o;13513:183::-;523:10;512:7;423;450:6;-1:-1:-1;;;;;450:6:0;;377:87;512:7;-1:-1:-1;;;;;512:21:0;;504:66;;;;-1:-1:-1;;;504:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13637:40:0;;;::::1;;::::0;;;:31:::1;:40;::::0;;;;:51;;-1:-1:-1;;13637:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13513:183::o;598:92::-;523:10;512:7;423;450:6;-1:-1:-1;;;;;450:6:0;;377:87;512:7;-1:-1:-1;;;;;512:21:0;;504:66;;;;-1:-1:-1;;;504:66:0;;;;;;;:::i;:::-;680:1:::1;663:19:::0;;-1:-1:-1;;;;;;663:19:0::1;::::0;;598:92::o;16055:275::-;523:10;512:7;423;450:6;-1:-1:-1;;;;;450:6:0;;377:87;512:7;-1:-1:-1;;;;;512:21:0;;504:66;;;;-1:-1:-1;;;504:66:0;;;;;;;:::i;:::-;16193:4:::1;16185;16164:17;2311:16:::0;16180:1:::1;16164:17;:::i;:::-;16163:26;;;;:::i;:::-;16162:35;;;;:::i;:::-;16150:8;:47;;16128:139;;;::::0;-1:-1:-1;;;16128:139:0;;7419:2:1;16128:139:0::1;::::0;::::1;7401:21:1::0;7458:2;7438:18;;;7431:30;7497:34;7477:18;;;7470:62;-1:-1:-1;;;7548:18:1;;;7541:40;7598:19;;16128:139:0::1;7217:406:1::0;16128:139:0::1;16301:21;:8:::0;16313::::1;16301:21;:::i;:::-;16278:20;:44:::0;-1:-1:-1;16055:275:0:o;11317:84::-;523:10;512:7;423;450:6;-1:-1:-1;;;;;450:6:0;;377:87;512:7;-1:-1:-1;;;;;512:21:0;;504:66;;;;-1:-1:-1;;;504:66:0;;;;;;;:::i;:::-;11371:14:::1;:22:::0;;-1:-1:-1;;;;11371:22:0::1;::::0;;11317:84::o;17377:177::-;523:10;512:7;423;450:6;-1:-1:-1;;;;;450:6:0;;377:87;512:7;-1:-1:-1;;;;;512:21:0;;504:66;;;;-1:-1:-1;;;504:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17461:24:0;::::1;17453:59;;;;-1:-1:-1::0;;;17453:59:0::1;;;;;;;:::i;:::-;17523:10;:23:::0;;-1:-1:-1;;;;;;17523:23:0::1;-1:-1:-1::0;;;;;17523:23:0;;;::::1;::::0;;;::::1;::::0;;17377:177::o;17737:185::-;523:10;512:7;423;450:6;-1:-1:-1;;;;;450:6:0;;377:87;512:7;-1:-1:-1;;;;;512:21:0;;504:66;;;;-1:-1:-1;;;504:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17825:24:0;::::1;17817:59;;;;-1:-1:-1::0;;;17817:59:0::1;;;;;;;:::i;:::-;17887:14;:27:::0;;-1:-1:-1;;;;;;17887:27:0::1;-1:-1:-1::0;;;;;17887:27:0;;;::::1;::::0;;;::::1;::::0;;17737:185::o;14852:236::-;523:10;512:7;423;450:6;-1:-1:-1;;;;;450:6:0;;377:87;512:7;-1:-1:-1;;;;;512:21:0;;504:66;;;;-1:-1:-1;;;504:66:0;;;;;;;:::i;:::-;14986:13:::1;-1:-1:-1::0;;;;;14978:21:0::1;:4;-1:-1:-1::0;;;;;14978:21:0::1;::::0;14970:60:::1;;;::::0;-1:-1:-1;;;14970:60:0;;8181:2:1;14970:60:0::1;::::0;::::1;8163:21:1::0;8220:2;8200:18;;;8193:30;8259:28;8239:18;;;8232:56;8305:18;;14970:60:0::1;7979:350:1::0;14970:60:0::1;-1:-1:-1::0;;;;;15041:31:0;;;::::1;;::::0;;;:25:::1;:31;::::0;;;;:39;;-1:-1:-1;;15041:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14852:236::o;6976:183::-;7072:4;7089:40;7099:10;7111:9;7122:6;7089:9;:40::i;17029:175::-;523:10;512:7;423;450:6;-1:-1:-1;;;;;450:6:0;;377:87;512:7;-1:-1:-1;;;;;512:21:0;;504:66;;;;-1:-1:-1;;;504:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17112:24:0;::::1;17104:59;;;;-1:-1:-1::0;;;17104:59:0::1;;;;;;;:::i;:::-;17174:9;:22:::0;;-1:-1:-1;;;;;;17174:22:0::1;-1:-1:-1::0;;;;;17174:22:0;;;::::1;::::0;;;::::1;::::0;;17029:175::o;18584:240::-;523:10;512:7;423;450:6;-1:-1:-1;;;;;450:6:0;;377:87;512:7;-1:-1:-1;;;;;512:21:0;;504:66;;;;-1:-1:-1;;;504:66:0;;;;;;;:::i;:::-;18696:38:::1;::::0;-1:-1:-1;;;18696:38:0;;18728:4:::1;18696:38;::::0;::::1;1284:51:1::0;18669:24:0::1;::::0;-1:-1:-1;;;;;18696:23:0;::::1;::::0;::::1;::::0;1257:18:1;;18696:38:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18669:65;;18745:51;18768:5;18775:2;18779:16;18745:22;:51::i;:::-;18658:166;18584:240:::0;;:::o;19093:247::-;523:10;512:7;423;450:6;-1:-1:-1;;;;;450:6:0;;377:87;512:7;-1:-1:-1;;;;;512:21:0;;504:66;;;;-1:-1:-1;;;504:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19171:18:0;::::1;19163:46;;;::::0;-1:-1:-1;;;19163:46:0;;8771:2:1;19163:46:0::1;::::0;::::1;8753:21:1::0;8810:2;8790:18;;;8783:30;-1:-1:-1;;;8829:18:1;;;8822:45;8884:18;;19163:46:0::1;8569:339:1::0;19163:46:0::1;19223:12;19241:4;-1:-1:-1::0;;;;;19241:9:0::1;19258:21;19241:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19222:62;;;19303:7;19295:37;;;::::0;-1:-1:-1;;;19295:37:0;;9325:2:1;19295:37:0::1;::::0;::::1;9307:21:1::0;9364:2;9344:18;;;9337:30;-1:-1:-1;;;9383:18:1;;;9376:47;9440:18;;19295:37:0::1;9123:341:1::0;19295:37:0::1;19152:188;19093:247:::0;:::o;14190:331::-;523:10;512:7;423;450:6;-1:-1:-1;;;;;450:6:0;;377:87;512:7;-1:-1:-1;;;;;512:21:0;;504:66;;;;-1:-1:-1;;;504:66:0;;;;;;;:::i;:::-;14259:8:::1;::::0;-1:-1:-1;;;14259:8:0;::::1;;;14258:9;14250:38;;;::::0;-1:-1:-1;;;14250:38:0;;9671:2:1;14250:38:0::1;::::0;::::1;9653:21:1::0;9710:2;9690:18;;;9683:30;-1:-1:-1;;;9729:18:1;;;9722:46;9785:18;;14250:38:0::1;9469:340:1::0;14250:38:0::1;14371:4;14391:24;::::0;;;:9:::1;:24;::::0;;;;;;14462:10:::1;::::0;;14299:214;;-1:-1:-1;;;14299:214:0;;;;::::1;10117:51:1::0;;;;10184:18;;;10177:34;10227:18;;;10220:34;;;10270:18;;;10263:34;;;;-1:-1:-1;;;;;14462:10:0::1;10313:19:1::0;;;10306:61;14487:15:0::1;10383:19:1::0;;;10376:35;3798:42:0::1;::::0;14299:31:::1;::::0;14338:9:::1;::::0;10089:19:1;;14299:214:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;11733:291::-:0;523:10;512:7;423;450:6;-1:-1:-1;;;;;450:6:0;;377:87;512:7;-1:-1:-1;;;;;512:21:0;;504:66;;;;-1:-1:-1;;;504:66:0;;;;;;;:::i;:::-;11848:6:::1;:16:::0;;-1:-1:-1;;;;11875:18:0;-1:-1:-1;;;11848:16:0::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;;11875:18:0;;;;;-1:-1:-1;;;11875:18:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;11927:16:::1;::::0;11936:7;;::::1;::::0;::::1;::::0;11927:6;;::::1;;:16;:::i;:::-;11926:25;;11948:3;11926:25;11904:112;;;::::0;-1:-1:-1;;;11904:112:0;;11238:2:1;11904:112:0::1;::::0;::::1;11220:21:1::0;11277:2;11257:18;;;11250:30;11316:34;11296:18;;;11289:62;-1:-1:-1;;;11367:18:1;;;11360:35;11412:19;;11904:112:0::1;11036:401:1::0;13842:123:0;523:10;512:7;423;450:6;-1:-1:-1;;;;;450:6:0;;377:87;512:7;-1:-1:-1;;;;;512:21:0;;504:66;;;;-1:-1:-1;;;504:66:0;;;;;;;:::i;:::-;13902:8:::1;::::0;-1:-1:-1;;;13902:8:0;::::1;;;13901:9;13893:38;;;::::0;-1:-1:-1;;;13893:38:0;;9671:2:1;13893:38:0::1;::::0;::::1;9653:21:1::0;9710:2;9690:18;;;9683:30;-1:-1:-1;;;9729:18:1;;;9722:46;9785:18;;13893:38:0::1;9469:340:1::0;13893:38:0::1;13942:8;:15:::0;;-1:-1:-1;;;;13942:15:0::1;-1:-1:-1::0;;;13942:15:0::1;::::0;;13842:123::o;6631:337::-;-1:-1:-1;;;;;6724:19:0;;6716:68;;;;-1:-1:-1;;;6716:68:0;;11644:2:1;6716:68:0;;;11626:21:1;11683:2;11663:18;;;11656:30;11722:34;11702:18;;;11695:62;-1:-1:-1;;;11773:18:1;;;11766:34;11817:19;;6716:68:0;11442:400:1;6716:68:0;-1:-1:-1;;;;;6803:21:0;;6795:68;;;;-1:-1:-1;;;6795:68:0;;12049:2:1;6795:68:0;;;12031:21:1;12088:2;12068:18;;;12061:30;12127:34;12107:18;;;12100:62;-1:-1:-1;;;12178:18:1;;;12171:32;12220:19;;6795:68:0;11847:398:1;6795:68:0;-1:-1:-1;;;;;6876:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6928:32;;1492:25:1;;;6928:32:0;;1465:18:1;6928:32:0;;;;;;;6631:337;;;:::o;7778:3342::-;-1:-1:-1;;;;;7866:18:0;;7858:68;;;;-1:-1:-1;;;7858:68:0;;12452:2:1;7858:68:0;;;12434:21:1;12491:2;12471:18;;;12464:30;12530:34;12510:18;;;12503:62;-1:-1:-1;;;12581:18:1;;;12574:35;12626:19;;7858:68:0;12250:401:1;7858:68:0;-1:-1:-1;;;;;7945:16:0;;7937:64;;;;-1:-1:-1;;;7937:64:0;;12858:2:1;7937:64:0;;;12840:21:1;12897:2;12877:18;;;12870:30;12936:34;12916:18;;;12909:62;-1:-1:-1;;;12987:18:1;;;12980:33;13030:19;;7937:64:0;12656:399:1;7937:64:0;8029:1;8020:6;:10;8012:64;;;;-1:-1:-1;;;8012:64:0;;13262:2:1;8012:64:0;;;13244:21:1;13301:2;13281:18;;;13274:30;13340:34;13320:18;;;13313:62;-1:-1:-1;;;13391:18:1;;;13384:39;13440:19;;8012:64:0;13060:405:1;8012:64:0;8108:8;;-1:-1:-1;;;8108:8:0;;;;8107:9;:85;;;;-1:-1:-1;423:7:0;450:6;-1:-1:-1;;;;;8134:15:0;;;450:6;;8134:15;;;;:40;;-1:-1:-1;;;;;;8153:21:0;;8169:4;8153:21;;8134:40;:57;;;;-1:-1:-1;423:7:0;450:6;-1:-1:-1;;;;;8178:13:0;;;450:6;;8178:13;;8134:57;8089:171;;;8219:29;;-1:-1:-1;;;8219:29:0;;13672:2:1;8219:29:0;;;13654:21:1;13711:2;13691:18;;;13684:30;-1:-1:-1;;;13730:18:1;;;13723:49;13789:18;;8219:29:0;13470:343:1;8089:171:0;8276:14;;-1:-1:-1;;;8276:14:0;;;;8272:1345;;;423:7;450:6;-1:-1:-1;;;;;8329:15:0;;;450:6;;8329:15;;;;:49;;-1:-1:-1;423:7:0;450:6;-1:-1:-1;;;;;8365:13:0;;;450:6;;8365:13;;8329:49;:86;;;;-1:-1:-1;;;;;;8399:16:0;;;;8329:86;:128;;;;-1:-1:-1;;;;;;8436:21:0;;8450:6;8436:21;;8329:128;:158;;;;-1:-1:-1;8479:8:0;;-1:-1:-1;;;8479:8:0;;;;8478:9;8329:158;8307:1299;;;-1:-1:-1;;;;;8548:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;8605:35:0;;;;;;:31;:35;;;;;;;;8604:36;8548:92;8522:1069;;;8727:20;;8717:6;:30;;8683:153;;;;-1:-1:-1;;;8683:153:0;;14020:2:1;8683:153:0;;;14002:21:1;14059:2;14039:18;;;14032:30;14098:34;14078:18;;;14071:62;-1:-1:-1;;;14149:18:1;;;14142:35;14194:19;;8683:153:0;13818:401:1;8683:153:0;8919:9;;-1:-1:-1;;;;;6270:18:0;;6243:7;6270:18;;;:9;:18;;;;;;8893:22;;:6;:22;:::i;:::-;:35;;8859:140;;;;-1:-1:-1;;;8859:140:0;;14556:2:1;8859:140:0;;;14538:21:1;14595:2;14575:18;;;14568:30;-1:-1:-1;;;14614:18:1;;;14607:49;14673:18;;8859:140:0;14354:343:1;8859:140:0;8522:1069;;;-1:-1:-1;;;;;9051:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;9106:37:0;;;;;;:31;:37;;;;;;;;9105:38;9051:92;9025:566;;;9230:20;;9220:6;:30;;9186:154;;;;-1:-1:-1;;;9186:154:0;;14904:2:1;9186:154:0;;;14886:21:1;14943:2;14923:18;;;14916:30;14982:34;14962:18;;;14955:62;-1:-1:-1;;;15033:18:1;;;15026:36;15079:19;;9186:154:0;14702:402:1;9025:566:0;-1:-1:-1;;;;;9371:35:0;;;;;;:31;:35;;;;;;;;9366:225;;9491:9;;-1:-1:-1;;;;;6270:18:0;;6243:7;6270:18;;;:9;:18;;;;;;9465:22;;:6;:22;:::i;:::-;:35;;9431:140;;;;-1:-1:-1;;;9431:140:0;;14556:2:1;9431:140:0;;;14538:21:1;14595:2;14575:18;;;14568:30;-1:-1:-1;;;14614:18:1;;;14607:49;14673:18;;9431:140:0;14354:343:1;9431:140:0;9672:18;;9662:4;9629:12;6270:18;;;:9;:18;;;;;;-1:-1:-1;9644:46:0;;;;;9721:33;;-1:-1:-1;9746:8:0;;-1:-1:-1;;;9746:8:0;;;;9745:9;9721:33;:82;;;;-1:-1:-1;;;;;;9772:31:0;;;;;;:25;:31;;;;;;;;9771:32;9721:82;:125;;;;-1:-1:-1;;;;;;9821:25:0;;;;;;:19;:25;;;;;;;;9820:26;9721:125;:166;;;;-1:-1:-1;;;;;;9864:23:0;;;;;;:19;:23;;;;;;;;9863:24;9721:166;9703:294;;;9914:8;:15;;-1:-1:-1;;;;9914:15:0;-1:-1:-1;;;9914:15:0;;;9944:10;:8;:10::i;:::-;9969:8;:16;;-1:-1:-1;;;;9969:16:0;;;9703:294;10025:8;;-1:-1:-1;;;;;10050:25:0;;10009:12;10050:25;;;:19;:25;;;;;;10025:8;-1:-1:-1;;;10025:8:0;;;;;10024:9;;10050:25;;:52;;-1:-1:-1;;;;;;10079:23:0;;;;;;:19;:23;;;;;;;;10050:52;10046:100;;;-1:-1:-1;10129:5:0;10046:100;-1:-1:-1;;;;;10182:15:0;;10158:21;10182:15;;;:9;:15;;;;;;10230:23;;;;10208:111;;;;-1:-1:-1;;;10208:111:0;;15311:2:1;10208:111:0;;;15293:21:1;15350:2;15330:18;;;15323:30;15389:34;15369:18;;;15362:62;-1:-1:-1;;;15440:18:1;;;15433:36;15486:19;;10208:111:0;15109:402:1;10208:111:0;10332:12;10359:602;;;;-1:-1:-1;;;;;10391:29:0;;;;;;:25;:29;;;;;;;;:50;;;;-1:-1:-1;10424:13:0;;-1:-1:-1;;;10424:13:0;;;;:17;;10391:50;10387:264;;;10479:13;;10496:4;;10470:22;;-1:-1:-1;;;10479:13:0;;;;10470:6;:22;:::i;:::-;10469:31;;;;:::i;:::-;10462:38;;10387:264;;;-1:-1:-1;;;;;10526:31:0;;;;;;:25;:31;;;;;;;;:51;;;;-1:-1:-1;10561:12:0;;-1:-1:-1;;;10561:12:0;;;;:16;;10526:51;10522:129;;;10615:12;;10631:4;;10606:21;;-1:-1:-1;;;10615:12:0;;;;10606:6;:21;:::i;:::-;10605:30;;;;:::i;:::-;10598:37;;10522:129;10671:8;;10667:283;;-1:-1:-1;;;;;10778:15:0;;;;;;:9;:15;;;;;;;;:23;;;;;;;10842:4;10824:24;;;;;;;:32;;;;;;10899:35;1492:25:1;;;10742:13:0;;;;;10842:4;;10778:15;10899:35;;1465:18:1;10899:35:0;;;;;;;10667:283;-1:-1:-1;;;;;10996:15:0;;;;;;;:9;:15;;;;;;:25;;;;;;;11036:13;;;;;;;;;;:23;;;;;;11086:26;;;;;;11015:6;1492:25:1;;1480:2;1465:18;;1346:177;11086:26:0;;;;;;;;7847:3273;;;;7778:3342;;;:::o;722:381::-;867:59;;;-1:-1:-1;;;;;15708:32:1;;;867:59:0;;;15690:51:1;15757:18;;;;15750:34;;;867:59:0;;;;;;;;;;15663:18:1;;;;867:59:0;;;;;;;-1:-1:-1;;;;;867:59:0;-1:-1:-1;;;867:59:0;;;842:95;;-1:-1:-1;;;;842:10:0;;;;:95;;867:59;842:95;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;806:131;;;;970:7;:57;;;;-1:-1:-1;982:11:0;;:16;;:44;;;1013:4;1002:24;;;;;;;;;;;;:::i;:::-;948:147;;;;-1:-1:-1;;;948:147:0;;16553:2:1;948:147:0;;;16535:21:1;16592:2;16572:18;;;16565:30;16631:34;16611:18;;;16604:62;-1:-1:-1;;;16682:18:1;;;16675:38;16730:19;;948:147:0;16351:404:1;948:147:0;795:308;;722:381;;;:::o;19608:1012::-;19671:18;;19647:21;19756:23;19671:18;19777:2;19756:23;:::i;:::-;19747:4;6243:7;6270:18;;;:9;:18;;;;;;19729:50;19725:122;;;19812:18;;:23;;19833:2;19812:23;:::i;:::-;19796:39;;19725:122;19883:16;;;19897:1;19883:16;;;;;;;;19859:21;;19883:16;;;;;;;;;;-1:-1:-1;19883:16:0;19859:40;;19928:4;19910;19915:1;19910:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;19910:23:0;;;-1:-1:-1;;;;;19910:23:0;;;;;2786:42;19944:4;19949:1;19944:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19944:14:0;;;:7;;;;;;;;;;;:14;19971:198;;-1:-1:-1;;;19971:198:0;;3798:42;;19971:66;;:198;;20052:13;;20080:1;;20096:4;;20123;;20143:15;;19971:198;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20203:21:0;;-1:-1:-1;;20239:14:0;;;-1:-1:-1;20235:378:0;;20304:6;;20270:17;;20314:3;;20291:19;;-1:-1:-1;;;20304:6:0;;;;20291:10;:19;:::i;:::-;20290:27;;;;:::i;:::-;20270:47;-1:-1:-1;20332:18:0;20353:22;20270:47;20353:10;:22;:::i;:::-;20414:10;;20406:47;;20332:43;;-1:-1:-1;;;;;;20414:10:0;;20332:43;;20406:47;;;;20332:43;20414:10;20406:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20490:9:0;;20482:45;;20392:61;;-1:-1:-1;;;;;;20490:9:0;;20513;;20482:45;;;;20513:9;20490;20482:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20549:52:0;;;18323:25:1;;;18379:2;18364:18;;18357:34;;;18407:18;;;18400:34;;;20468:59:0;;-1:-1:-1;20549:52:0;;18311:2:1;18296:18;20549:52:0;;;;;;;20255:358;;20235:378;19636:984;;;;19608:1012::o;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:173::-;505:20;;-1:-1:-1;;;;;554:31:1;;544:42;;534:70;;600:1;597;590:12;534:70;437:173;;;:::o;615:300::-;683:6;691;744:2;732:9;723:7;719:23;715:32;712:52;;;760:1;757;750:12;712:52;783:29;802:9;783:29;:::i;:::-;773:39;881:2;866:18;;;;853:32;;-1:-1:-1;;;615:300:1:o;1717:374::-;1794:6;1802;1810;1863:2;1851:9;1842:7;1838:23;1834:32;1831:52;;;1879:1;1876;1869:12;1831:52;1902:29;1921:9;1902:29;:::i;:::-;1892:39;;1950:38;1984:2;1973:9;1969:18;1950:38;:::i;:::-;1717:374;;1940:48;;-1:-1:-1;;;2057:2:1;2042:18;;;;2029:32;;1717:374::o;2096:226::-;2155:6;2208:2;2196:9;2187:7;2183:23;2179:32;2176:52;;;2224:1;2221;2214:12;2176:52;-1:-1:-1;2269:23:1;;2096:226;-1:-1:-1;2096:226:1:o;2535:156::-;2601:20;;2661:4;2650:16;;2640:27;;2630:55;;2681:1;2678;2671:12;2696:252;2760:6;2768;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;2860:27;2877:9;2860:27;:::i;:::-;2850:37;;2906:36;2938:2;2927:9;2923:18;2906:36;:::i;:::-;2896:46;;2696:252;;;;;:::o;2953:118::-;3039:5;3032:13;3025:21;3018:5;3015:32;3005:60;;3061:1;3058;3051:12;3005:60;2953:118;:::o;3076:315::-;3141:6;3149;3202:2;3190:9;3181:7;3177:23;3173:32;3170:52;;;3218:1;3215;3208:12;3170:52;3241:29;3260:9;3241:29;:::i;:::-;3231:39;;3320:2;3309:9;3305:18;3292:32;3333:28;3355:5;3333:28;:::i;:::-;3380:5;3370:15;;;3076:315;;;;;:::o;3396:186::-;3455:6;3508:2;3496:9;3487:7;3483:23;3479:32;3476:52;;;3524:1;3521;3514:12;3476:52;3547:29;3566:9;3547:29;:::i;:::-;3537:39;3396:186;-1:-1:-1;;;3396:186:1:o;3587:260::-;3655:6;3663;3716:2;3704:9;3695:7;3691:23;3687:32;3684:52;;;3732:1;3729;3722:12;3684:52;3755:29;3774:9;3755:29;:::i;:::-;3745:39;;3803:38;3837:2;3826:9;3822:18;3803:38;:::i;4261:356::-;4463:2;4445:21;;;4482:18;;;4475:30;4541:34;4536:2;4521:18;;4514:62;4608:2;4593:18;;4261:356::o;4622:127::-;4683:10;4678:3;4674:20;4671:1;4664:31;4714:4;4711:1;4704:15;4738:4;4735:1;4728:15;4754:168;4827:9;;;4858;;4875:15;;;4869:22;;4855:37;4845:71;;4896:18;;:::i;4927:217::-;4967:1;4993;4983:132;;5037:10;5032:3;5028:20;5025:1;5018:31;5072:4;5069:1;5062:15;5100:4;5097:1;5090:15;4983:132;-1:-1:-1;5129:9:1;;4927:217::o;7628:346::-;7830:2;7812:21;;;7869:2;7849:18;;;7842:30;-1:-1:-1;;;7903:2:1;7888:18;;7881:52;7965:2;7950:18;;7628:346::o;8334:230::-;8404:6;8457:2;8445:9;8436:7;8432:23;8428:32;8425:52;;;8473:1;8470;8463:12;8425:52;-1:-1:-1;8518:16:1;;8334:230;-1:-1:-1;8334:230:1:o;10422:456::-;10510:6;10518;10526;10579:2;10567:9;10558:7;10554:23;10550:32;10547:52;;;10595:1;10592;10585:12;10547:52;-1:-1:-1;;10640:16:1;;10746:2;10731:18;;10725:25;10842:2;10827:18;;;10821:25;10640:16;;10725:25;;-1:-1:-1;10821:25:1;10422:456;-1:-1:-1;10422:456:1:o;10883:148::-;10971:4;10950:12;;;10964;;;10946:31;;10989:13;;10986:39;;;11005:18;;:::i;14224:125::-;14289:9;;;14310:10;;;14307:36;;;14323:18;;:::i;15795:301::-;15924:3;15962:6;15956:13;16008:6;16001:4;15993:6;15989:17;15984:3;15978:37;16070:1;16034:16;;16059:13;;;-1:-1:-1;16034:16:1;15795:301;-1:-1:-1;15795:301:1:o;16101:245::-;16168:6;16221:2;16209:9;16200:7;16196:23;16192:32;16189:52;;;16237:1;16234;16227:12;16189:52;16269:9;16263:16;16288:28;16310:5;16288:28;:::i;16892:127::-;16953:10;16948:3;16944:20;16941:1;16934:31;16984:4;16981:1;16974:15;17008:4;17005:1;16998:15;17024:959;17286:4;17334:3;17323:9;17319:19;17365:6;17354:9;17347:25;17408:6;17403:2;17392:9;17388:18;17381:34;17451:3;17446:2;17435:9;17431:18;17424:31;17475:6;17510;17504:13;17541:6;17533;17526:22;17579:3;17568:9;17564:19;17557:26;;17618:2;17610:6;17606:15;17592:29;;17639:1;17649:195;17663:6;17660:1;17657:13;17649:195;;;17728:13;;-1:-1:-1;;;;;17724:39:1;17712:52;;17793:2;17819:15;;;;17784:12;;;;17760:1;17678:9;17649:195;;;-1:-1:-1;;;;;;;17900:32:1;;;;17895:2;17880:18;;17873:60;-1:-1:-1;;17964:3:1;17949:19;17942:35;17861:3;17024:959;-1:-1:-1;;;17024:959:1:o;17988:128::-;18055:9;;;18076:11;;;18073:37;;;18090:18;;:::i
Swarm Source
ipfs://3824c637dadea052ce7ea543770d868e5e0ac3129b688ef1428af2e692dd27bd
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.