ERC-20
Overview
Max Total Supply
1,000,000,000 PEPEBURN
Holders
202
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
17,327,756.8868696850609832 PEPEBURNValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
PepeBurn
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-04-18 */ pragma solidity 0.8.17; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); 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 addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); 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 IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( 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 swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } library Address { function isContract(address account) internal view returns (bool) { return account.code.length > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { uint256 currentAllowance = _allowances[sender][_msgSender()]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } } _transfer(sender, recipient, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { 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 _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } contract PepeBurn is ERC20, Ownable { using Address for address payable; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; mapping (address => bool) private _isExcludedFromFees; uint256 public pepeBurnFeeOnBuy; uint256 public pepeBurnFeeOnSell; uint256 public marketingFeeOnBuy; uint256 public marketingFeeOnSell; uint256 private _totalFeesOnBuy; uint256 private _totalFeesOnSell; uint256 public walletToWalletTransferFee; address public marketingWallet; uint256 public swapTokensAtAmount; bool private swapping; bool public swapEnabled; event ExcludeFromFees(address indexed account, bool isExcluded); event MarketingWalletChanged(address marketingWallet); event UpdateBuyFees(uint256 boneBurnFeeOnBuy, uint256 marketingFeeOnBuy); event UpdateSellFees(uint256 boneBurnFeeOnSell, uint256 marketingFeeOnSell); event UpdateWalletToWalletTransferFee(uint256 walletToWalletTransferFee); event SwapAndLiquify(uint256 tokensSwapped,uint256 bnbReceived,uint256 tokensIntoLiqudity); event SwapAndSendETH(uint256 tokensSwapped, uint256 bnbSend); event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount); constructor () ERC20("PepeBurn", "PEPEBURN") { address router; if (block.chainid == 56) { router = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BSC Pancake Mainnet Router } else if (block.chainid == 97) { router = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // BSC Pancake Testnet Router } else if (block.chainid == 1 || block.chainid == 5) { router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH Shibaswap Mainnet } else { revert(); } IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router); address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = _uniswapV2Pair; _approve(address(this), address(uniswapV2Router), type(uint256).max); pepeBurnFeeOnBuy = 2; pepeBurnFeeOnSell = 2; marketingFeeOnBuy = 23; marketingFeeOnSell = 45; _totalFeesOnBuy = pepeBurnFeeOnBuy + marketingFeeOnBuy; _totalFeesOnSell = pepeBurnFeeOnSell + marketingFeeOnSell; marketingWallet = 0xe8b6E01e9F8A7D69c6dD0a1cF040643C435f6Df3; maxWalletLimitEnabled = true; maxTransactionLimitEnabled = true; _isExcludedFromMaxTxLimit[owner()] = true; _isExcludedFromMaxTxLimit[address(this)] = true; _isExcludedFromMaxTxLimit[address(0xdead)] = true; _isExcludedFromMaxTxLimit[marketingWallet] = true; _isExcludedFromMaxWalletLimit[owner()] = true; _isExcludedFromMaxWalletLimit[address(this)] = true; _isExcludedFromMaxWalletLimit[address(0xdead)] = true; _isExcludedFromMaxWalletLimit[marketingWallet] = true; _isExcludedFromFees[owner()] = true; _isExcludedFromFees[address(0xdead)] = true; _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[marketingWallet] = true; _mint(owner(), 1e9 * (10 ** decimals())); swapTokensAtAmount = (totalSupply() * 200) / 10000; // 2% swap wallet maxTransactionAmountBuy = (totalSupply() * 200) / 10000; // 2% maxTransactionAmountSell = (totalSupply() * 200) / 10000; // 2% maxWalletAmount = (totalSupply() * 200) / 10000; // 2% tradingEnabled = false; swapEnabled = false; } receive() external payable { } function claimStuckTokens(address token) external onlyOwner { require(token != address(this), "Owner cannot claim contract's balance of its own tokens"); if (token == address(0x0)) { payable(msg.sender).sendValue(address(this).balance); return; } IERC20 ERC20token = IERC20(token); uint256 balance = ERC20token.balanceOf(address(this)); ERC20token.transfer(msg.sender, balance); } function excludeFromFees(address account, bool excluded) external onlyOwner{ require(_isExcludedFromFees[account] != excluded,"Account is already the value of 'excluded'"); _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function updateFees(uint256 _pepeBurnFeeOnBuy, uint256 _marketingFeeOnBuy, uint256 _pepeBurnFeeOnSell, uint256 _marketingFeeOnSell) external onlyOwner { //buy fees pepeBurnFeeOnBuy = _pepeBurnFeeOnBuy; marketingFeeOnBuy = _marketingFeeOnBuy; _totalFeesOnBuy = pepeBurnFeeOnBuy + marketingFeeOnBuy; //sell fees pepeBurnFeeOnSell = _pepeBurnFeeOnSell; marketingFeeOnSell = _marketingFeeOnSell; _totalFeesOnSell = pepeBurnFeeOnSell + marketingFeeOnSell; require(_totalFeesOnBuy + _totalFeesOnSell <= 45, "Total Fees cannot exceed the maximum"); require(_totalFeesOnBuy + _totalFeesOnSell <= 45, "Total Fees cannot exceed the maximum"); emit UpdateBuyFees(pepeBurnFeeOnBuy, marketingFeeOnBuy); emit UpdateSellFees(pepeBurnFeeOnSell, marketingFeeOnSell); } function updateMarketingWallet(address _marketingWallet) external onlyOwner{ require(_marketingWallet != marketingWallet,"Marketing wallet is already that address"); require(_marketingWallet != address(0),"Marketing wallet cannot be the zero address"); marketingWallet = _marketingWallet; emit MarketingWalletChanged(marketingWallet); } bool public tradingEnabled; function updateTrading(bool enabled) external onlyOwner{ if(enabled){ tradingEnabled = true; swapEnabled = true; } } function _transfer(address from,address to,uint256 amount) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading not yet enabled!"); if (amount == 0) { super._transfer(from, to, 0); return; } if (maxTransactionLimitEnabled) { if ((from == uniswapV2Pair || to == uniswapV2Pair) && !_isExcludedFromMaxTxLimit[from] && !_isExcludedFromMaxTxLimit[to] ) { if (from == uniswapV2Pair) { require( amount <= maxTransactionAmountBuy, "AntiWhale: Transfer amount exceeds the maxTransactionAmount" ); } else { require( amount <= maxTransactionAmountSell, "AntiWhale: Transfer amount exceeds the maxTransactionAmount" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if (canSwap && !swapping && to == uniswapV2Pair && _totalFeesOnBuy + _totalFeesOnSell > 0 && swapEnabled ) { swapping = true; swapAndSendETH(swapTokensAtAmount); swapping = false; } uint256 _totalFees; if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) { _totalFees = 0; } else if (from == uniswapV2Pair) { _totalFees = _totalFeesOnBuy; } else if (to == uniswapV2Pair) { _totalFees = _totalFeesOnSell; } else { _totalFees = 0; } if (_totalFees > 0) { uint256 fees = (amount * _totalFees) / 100; amount = amount - fees; super._transfer(from, address(this), fees); } if (maxWalletLimitEnabled) { if (!_isExcludedFromMaxWalletLimit[from] && !_isExcludedFromMaxWalletLimit[to] && to != uniswapV2Pair ) { uint256 balance = balanceOf(to); require( balance + amount <= maxWalletAmount, "MaxWallet: Recipient exceeds the maxWalletAmount" ); } } super._transfer(from, to, amount); } /////////////////////////////////////// SWAP SYSTEM function changeSwapEnabled(bool _enabled) external onlyOwner{ swapEnabled = _enabled; } function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner{ swapTokensAtAmount = (totalSupply() * newAmount) / 10000; // 10 = 0.1%; 100 = 1%; emit SwapTokensAtAmountUpdated(swapTokensAtAmount); } function swapAndSendETH(uint256 tokenAmount) private { uint256 initialBalance = address(this).balance; address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp); uint256 newBalance = address(this).balance - initialBalance; uint256 marketingBalance = newBalance * (marketingFeeOnBuy + marketingFeeOnSell) / (_totalFeesOnBuy + _totalFeesOnSell); uint256 pepeBalance = newBalance - marketingBalance; if (marketingBalance > 0){ payable(marketingWallet).sendValue(marketingBalance); } if (pepeBalance > 0){ address[] memory pathTwo = new address[](2); pathTwo[0] = uniswapV2Router.WETH(); pathTwo[1] = address(0x6982508145454Ce325dDbE47a25d4ec3d2311933); uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: pepeBalance}( 0, pathTwo, address(0xdead), block.timestamp + 300 ); } emit SwapAndSendETH(tokenAmount, newBalance); } mapping(address => bool) private _isExcludedFromMaxWalletLimit; bool public maxWalletLimitEnabled; uint256 public maxWalletAmount; event ExcludedFromMaxWalletLimit(address indexed account, bool isExcluded); event MaxWalletLimitStateChanged(bool maxWalletLimit); event MaxWalletLimitAmountChanged(uint256 maxWalletAmount); function setEnableMaxWalletLimit(bool enable) external onlyOwner { require(enable != maxWalletLimitEnabled,"Max wallet limit is already set to that state"); maxWalletLimitEnabled = enable; emit MaxWalletLimitStateChanged(maxWalletLimitEnabled); } function excludeFromMaxWallet(address account, bool exclude) external onlyOwner { require( _isExcludedFromMaxWalletLimit[account] != exclude,"Account is already set to that state"); _isExcludedFromMaxWalletLimit[account] = exclude; emit ExcludedFromMaxWalletLimit(account, exclude); } function isExcludedFromMaxWalletLimit(address account) public view returns(bool) { return _isExcludedFromMaxWalletLimit[account]; } mapping(address => bool) private _isExcludedFromMaxTxLimit; bool public maxTransactionLimitEnabled; uint256 public maxTransactionAmountBuy; uint256 public maxTransactionAmountSell; event ExcludedFromMaxTransactionLimit(address indexed account, bool isExcluded); event MaxTransactionLimitStateChanged(bool maxTransactionLimit); event MaxTransactionLimitAmountChanged(uint256 maxTransactionAmountBuy, uint256 maxTransactionAmountSell); function setEnableMaxTransactionLimit(bool enable) external onlyOwner { require(enable != maxTransactionLimitEnabled, "Max transaction limit is already set to that state"); maxTransactionLimitEnabled = enable; emit MaxTransactionLimitStateChanged(maxTransactionLimitEnabled); } function updateLimits(uint256 _maxTransactionAmountBuy, uint256 _maxTransactionAmountSell, uint256 _maxWalletAmount) external onlyOwner { require( _maxTransactionAmountBuy >= (totalSupply() / (10 ** decimals())) / 1_000 && _maxTransactionAmountSell >= (totalSupply() / (10 ** decimals())) / 1_000, "Max Transaction limis cannot be lower than 0.1% of total supply" ); maxTransactionAmountBuy = _maxTransactionAmountBuy * (10 ** decimals()); maxTransactionAmountSell = _maxTransactionAmountSell * (10 ** decimals()); require(_maxWalletAmount >= (totalSupply() / (10 ** decimals())) / 100, "Max wallet percentage cannot be lower than 1%"); maxWalletAmount = _maxWalletAmount * (10 ** decimals()); emit MaxWalletLimitAmountChanged(maxWalletAmount); emit MaxTransactionLimitAmountChanged(maxTransactionAmountBuy, maxTransactionAmountSell); } function excludeFromMaxTransactionLimit(address account, bool exclude) external onlyOwner { require( _isExcludedFromMaxTxLimit[account] != exclude, "Account is already set to that state"); _isExcludedFromMaxTxLimit[account] = exclude; emit ExcludedFromMaxTransactionLimit(account, exclude); } function isExcludedFromMaxTransaction(address account) public view returns(bool) { return _isExcludedFromMaxTxLimit[account]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxTransactionLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxWalletLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingWallet","type":"address"}],"name":"MarketingWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTransactionAmountBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTransactionAmountSell","type":"uint256"}],"name":"MaxTransactionLimitAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"maxTransactionLimit","type":"bool"}],"name":"MaxTransactionLimitStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"MaxWalletLimitAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"maxWalletLimit","type":"bool"}],"name":"MaxWalletLimitStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"boneBurnFeeOnBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingFeeOnBuy","type":"uint256"}],"name":"UpdateBuyFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"boneBurnFeeOnSell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingFeeOnSell","type":"uint256"}],"name":"UpdateSellFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"walletToWalletTransferFee","type":"uint256"}],"name":"UpdateWalletToWalletTransferFee","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":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"changeSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeFromMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pepeBurnFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pepeBurnFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":"uint256","name":"_pepeBurnFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"_pepeBurnFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeOnSell","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransactionAmountBuy","type":"uint256"},{"internalType":"uint256","name":"_maxTransactionAmountSell","type":"uint256"},{"internalType":"uint256","name":"_maxWalletAmount","type":"uint256"}],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletToWalletTransferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040518060400160405280600881526020017f506570654275726e0000000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f504550454255524e00000000000000000000000000000000000000000000000081525081600390816200008f919062001122565b508060049081620000a1919062001122565b5050506000620000b662000b1060201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000603846036200017d577310ed43c718714eb63d5aa57b78b54704e256024e9050620001dd565b60614603620001a35773d99d1c33f9fc3444f8101754abc46c52416550d19050620001dc565b6001461480620001b35750600546145b15620001d657737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001db565b600080fd5b5b5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000230573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000256919062001273565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e4919062001273565b6040518363ffffffff1660e01b815260040162000303929190620012b6565b6020604051808303816000875af115801562000323573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000349919062001273565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200042230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000b1860201b60201c565b60026009819055506002600a819055506017600b81905550602d600c81905550600b5460095462000454919062001312565b600d81905550600c54600a546200046c919062001312565b600e8190555073e8b6e01e9f8a7d69c6dd0a1cf040643c435f6df3601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601460006101000a81548160ff0219169083151502179055506001601760006101000a81548160ff0219169083151502179055506001601660006200051362000ce960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016016600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160166000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160136000620006a662000ce960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016013600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160136000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860006200083962000ce960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000a05620009ca62000ce960201b60201c565b620009da62000d1360201b60201c565b600a620009e89190620014ae565b633b9aca00620009f99190620014ff565b62000d1c60201b60201c565b61271060c862000a1a62000e9460201b60201c565b62000a269190620014ff565b62000a32919062001579565b60118190555061271060c862000a4d62000e9460201b60201c565b62000a599190620014ff565b62000a65919062001579565b60188190555061271060c862000a8062000e9460201b60201c565b62000a8c9190620014ff565b62000a98919062001579565b60198190555061271060c862000ab362000e9460201b60201c565b62000abf9190620014ff565b62000acb919062001579565b6015819055506000601260026101000a81548160ff0219169083151502179055506000601260016101000a81548160ff02191690831515021790555050505062001792565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000b8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b819062001638565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000bfc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bf390620016d0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000cdc919062001703565b60405180910390a3505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000d8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d859062001770565b60405180910390fd5b62000da26000838362000e9e60201b60201c565b806002600082825462000db6919062001312565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000e0d919062001312565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000e74919062001703565b60405180910390a362000e906000838362000ea360201b60201c565b5050565b6000600254905090565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f2a57607f821691505b60208210810362000f405762000f3f62000ee2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000faa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000f6b565b62000fb6868362000f6b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200100362000ffd62000ff78462000fce565b62000fd8565b62000fce565b9050919050565b6000819050919050565b6200101f8362000fe2565b620010376200102e826200100a565b84845462000f78565b825550505050565b600090565b6200104e6200103f565b6200105b81848462001014565b505050565b5b8181101562001083576200107760008262001044565b60018101905062001061565b5050565b601f821115620010d2576200109c8162000f46565b620010a78462000f5b565b81016020851015620010b7578190505b620010cf620010c68562000f5b565b83018262001060565b50505b505050565b600082821c905092915050565b6000620010f760001984600802620010d7565b1980831691505092915050565b6000620011128383620010e4565b9150826002028217905092915050565b6200112d8262000ea8565b67ffffffffffffffff81111562001149576200114862000eb3565b5b62001155825462000f11565b6200116282828562001087565b600060209050601f8311600181146200119a576000841562001185578287015190505b62001191858262001104565b86555062001201565b601f198416620011aa8662000f46565b60005b82811015620011d457848901518255600182019150602085019450602081019050620011ad565b86831015620011f45784890151620011f0601f891682620010e4565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200123b826200120e565b9050919050565b6200124d816200122e565b81146200125957600080fd5b50565b6000815190506200126d8162001242565b92915050565b6000602082840312156200128c576200128b62001209565b5b60006200129c848285016200125c565b91505092915050565b620012b0816200122e565b82525050565b6000604082019050620012cd6000830185620012a5565b620012dc6020830184620012a5565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200131f8262000fce565b91506200132c8362000fce565b9250828201905080821115620013475762001346620012e3565b5b92915050565b60008160011c9050919050565b6000808291508390505b6001851115620013ac57808604811115620013845762001383620012e3565b5b6001851615620013945780820291505b8081029050620013a4856200134d565b945062001364565b94509492505050565b600082620013c757600190506200149a565b81620013d757600090506200149a565b8160018114620013f05760028114620013fb5762001431565b60019150506200149a565b60ff84111562001410576200140f620012e3565b5b8360020a9150848211156200142a5762001429620012e3565b5b506200149a565b5060208310610133831016604e8410600b84101617156200146b5782820a905083811115620014655762001464620012e3565b5b6200149a565b6200147a84848460016200135a565b92509050818404811115620014945762001493620012e3565b5b81810290505b9392505050565b600060ff82169050919050565b6000620014bb8262000fce565b9150620014c883620014a1565b9250620014f77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620013b5565b905092915050565b60006200150c8262000fce565b9150620015198362000fce565b9250828202620015298162000fce565b91508282048414831517620015435762001542620012e3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620015868262000fce565b9150620015938362000fce565b925082620015a657620015a56200154a565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062001620602483620015b1565b91506200162d82620015c2565b604082019050919050565b60006020820190508181036000830152620016538162001611565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000620016b8602283620015b1565b9150620016c5826200165a565b604082019050919050565b60006020820190508181036000830152620016eb81620016a9565b9050919050565b620016fd8162000fce565b82525050565b60006020820190506200171a6000830184620016f2565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001758601f83620015b1565b9150620017658262001720565b602082019050919050565b600060208201905081810360008301526200178b8162001749565b9050919050565b6154d480620017a26000396000f3fe6080604052600436106102765760003560e01c8063702509fd1161014f578063aacebbe3116100c1578063dc4c7dbc1161007a578063dc4c7dbc14610989578063dd62ed3e146109b4578063e2f45605146109f1578063e81ea6a914610a1c578063f2fde38b14610a45578063f9d0831a14610a6e5761027d565b8063aacebbe314610891578063afa4f3b2146108ba578063c0246668146108e3578063c6616ba11461090c578063cc9be3cd14610935578063d2fcc001146109605761027d565b80638da5cb5b116101135780638da5cb5b1461075957806395d89b4114610784578063a457c2d7146107af578063a8a69b9d146107ec578063a9059cbb14610829578063aa4bde28146108665761027d565b8063702509fd1461068657806370a08231146106b1578063715018a6146106ee57806375f0a87414610705578063880bcbc1146107305761027d565b8063313ce567116101e85780634ada218b116101ac5780634ada218b146105745780634fbee1931461059f57806356a6cabf146105dc57806359136fa5146106055780635fc2e596146106305780636ddd17131461065b5761027d565b8063313ce5671461048f57806336a0f8a5146104ba57806339509351146104e357806347f687951461052057806349bd5a5e146105495761027d565b806318d9ceae1161023a57806318d9ceae1461036b57806321a9d82a146103a857806323b872dd146103d35780632a16de21146104105780632a6c7dba1461043b5780632ba86bf2146104645761027d565b80630105d0fd1461028257806306fdde03146102ad578063095ea7b3146102d85780631694505e1461031557806318160ddd146103405761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a97565b6040516102a49190613c01565b60405180910390f35b3480156102b957600080fd5b506102c2610a9d565b6040516102cf9190613cac565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa9190613d5d565b610b2f565b60405161030c9190613db8565b60405180910390f35b34801561032157600080fd5b5061032a610b4d565b6040516103379190613e32565b60405180910390f35b34801561034c57600080fd5b50610355610b73565b6040516103629190613c01565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190613e4d565b610b7d565b60405161039f9190613db8565b60405180910390f35b3480156103b457600080fd5b506103bd610bd3565b6040516103ca9190613db8565b60405180910390f35b3480156103df57600080fd5b506103fa60048036038101906103f59190613e7a565b610be6565b6040516104079190613db8565b60405180910390f35b34801561041c57600080fd5b50610425610d05565b6040516104329190613c01565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d9190613ef9565b610d0b565b005b34801561047057600080fd5b50610479610e5a565b6040516104869190613db8565b60405180910390f35b34801561049b57600080fd5b506104a4610e6d565b6040516104b19190613f42565b60405180910390f35b3480156104c657600080fd5b506104e160048036038101906104dc9190613f5d565b610e76565b005b3480156104ef57600080fd5b5061050a60048036038101906105059190613d5d565b61111e565b6040516105179190613db8565b60405180910390f35b34801561052c57600080fd5b5061054760048036038101906105429190613ef9565b6111ca565b005b34801561055557600080fd5b5061055e6112a1565b60405161056b9190613fbf565b60405180910390f35b34801561058057600080fd5b506105896112c7565b6040516105969190613db8565b60405180910390f35b3480156105ab57600080fd5b506105c660048036038101906105c19190613e4d565b6112da565b6040516105d39190613db8565b60405180910390f35b3480156105e857600080fd5b5061060360048036038101906105fe9190613ef9565b611330565b005b34801561061157600080fd5b5061061a61147f565b6040516106279190613c01565b60405180910390f35b34801561063c57600080fd5b50610645611485565b6040516106529190613c01565b60405180910390f35b34801561066757600080fd5b5061067061148b565b60405161067d9190613db8565b60405180910390f35b34801561069257600080fd5b5061069b61149e565b6040516106a89190613c01565b60405180910390f35b3480156106bd57600080fd5b506106d860048036038101906106d39190613e4d565b6114a4565b6040516106e59190613c01565b60405180910390f35b3480156106fa57600080fd5b506107036114ec565b005b34801561071157600080fd5b5061071a611644565b6040516107279190613fbf565b60405180910390f35b34801561073c57600080fd5b5061075760048036038101906107529190613fda565b61166a565b005b34801561076557600080fd5b5061076e61183c565b60405161077b9190613fbf565b60405180910390f35b34801561079057600080fd5b50610799611866565b6040516107a69190613cac565b60405180910390f35b3480156107bb57600080fd5b506107d660048036038101906107d19190613d5d565b6118f8565b6040516107e39190613db8565b60405180910390f35b3480156107f857600080fd5b50610813600480360381019061080e9190613e4d565b6119e3565b6040516108209190613db8565b60405180910390f35b34801561083557600080fd5b50610850600480360381019061084b9190613d5d565b611a39565b60405161085d9190613db8565b60405180910390f35b34801561087257600080fd5b5061087b611a57565b6040516108889190613c01565b60405180910390f35b34801561089d57600080fd5b506108b860048036038101906108b39190613e4d565b611a5d565b005b3480156108c657600080fd5b506108e160048036038101906108dc919061401a565b611c90565b005b3480156108ef57600080fd5b5061090a60048036038101906109059190613fda565b611d89565b005b34801561091857600080fd5b50610933600480360381019061092e9190614047565b611f5b565b005b34801561094157600080fd5b5061094a612160565b6040516109579190613c01565b60405180910390f35b34801561096c57600080fd5b5061098760048036038101906109829190613fda565b612166565b005b34801561099557600080fd5b5061099e612338565b6040516109ab9190613c01565b60405180910390f35b3480156109c057600080fd5b506109db60048036038101906109d691906140ae565b61233e565b6040516109e89190613c01565b60405180910390f35b3480156109fd57600080fd5b50610a066123c5565b604051610a139190613c01565b60405180910390f35b348015610a2857600080fd5b50610a436004803603810190610a3e9190613ef9565b6123cb565b005b348015610a5157600080fd5b50610a6c6004803603810190610a679190613e4d565b61247f565b005b348015610a7a57600080fd5b50610a956004803603810190610a909190613e4d565b612645565b005b60185481565b606060038054610aac9061411d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad89061411d565b8015610b255780601f10610afa57610100808354040283529160200191610b25565b820191906000526020600020905b815481529060010190602001808311610b0857829003601f168201915b5050505050905090565b6000610b43610b3c6128b4565b84846128bc565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601460009054906101000a900460ff1681565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c326128b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610cee5782811015610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd0906141c0565b60405180910390fd5b610ced85610ce56128b4565b8584036128bc565b5b610cf9858585612a85565b60019150509392505050565b600a5481565b610d136128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d999061422c565b60405180910390fd5b601460009054906101000a900460ff16151581151503610df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dee906142be565b60405180910390fd5b80601460006101000a81548160ff0219169083151502179055507f670f884265aba2d05e7c26efbc42f8365effc4cb3fcfcefddba0c0b71a6231f1601460009054906101000a900460ff16604051610e4f9190613db8565b60405180910390a150565b601760009054906101000a900460ff1681565b60006012905090565b610e7e6128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f049061422c565b60405180910390fd5b6103e8610f18610e6d565b600a610f249190614440565b610f2c610b73565b610f3691906144ba565b610f4091906144ba565b8310158015610f8157506103e8610f55610e6d565b600a610f619190614440565b610f69610b73565b610f7391906144ba565b610f7d91906144ba565b8210155b610fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb79061455d565b60405180910390fd5b610fc8610e6d565b600a610fd49190614440565b83610fdf919061457d565b601881905550610fed610e6d565b600a610ff99190614440565b82611004919061457d565b6019819055506064611014610e6d565b600a6110209190614440565b611028610b73565b61103291906144ba565b61103c91906144ba565b81101561107e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107590614631565b60405180910390fd5b611086610e6d565b600a6110929190614440565b8161109d919061457d565b6015819055507f21bc0ea3406acb92d4449ab33befb4ae82f873a22f3b6cf0e466b2710beb59426015546040516110d49190613c01565b60405180910390a17f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb131601854601954604051611111929190614651565b60405180910390a1505050565b60006111c061112b6128b4565b8484600160006111396128b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111bb919061467a565b6128bc565b6001905092915050565b6111d26128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611261576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112589061422c565b60405180910390fd5b801561129e576001601260026101000a81548160ff0219169083151502179055506001601260016101000a81548160ff0219169083151502179055505b50565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260029054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6113386128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113be9061422c565b60405180910390fd5b601760009054906101000a900460ff1615158115150361141c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141390614720565b60405180910390fd5b80601760006101000a81548160ff0219169083151502179055507fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf601760009054906101000a900460ff166040516114749190613db8565b60405180910390a150565b60195481565b600b5481565b601260019054906101000a900460ff1681565b600f5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114f46128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157a9061422c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116726128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f89061422c565b60405180910390fd5b801515601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178a906147b2565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c10826040516118309190613db8565b60405180910390a25050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546118759061411d565b80601f01602080910402602001604051908101604052809291908181526020018280546118a19061411d565b80156118ee5780601f106118c3576101008083540402835291602001916118ee565b820191906000526020600020905b8154815290600101906020018083116118d157829003601f168201915b5050505050905090565b600080600160006119076128b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156119c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bb90614844565b60405180910390fd5b6119d86119cf6128b4565b858584036128bc565b600191505092915050565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611a4d611a466128b4565b8484612a85565b6001905092915050565b60155481565b611a656128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aeb9061422c565b60405180910390fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7b906148d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bea90614968565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611c859190613fbf565b60405180910390a150565b611c986128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1e9061422c565b60405180910390fd5b61271081611d33610b73565b611d3d919061457d565b611d4791906144ba565b6011819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145601154604051611d7e9190613c01565b60405180910390a150565b611d916128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e179061422c565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea9906149fa565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f4f9190613db8565b60405180910390a25050565b611f636128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe99061422c565b60405180910390fd5b8360098190555082600b81905550600b54600954612010919061467a565b600d8190555081600a8190555080600c81905550600c54600a54612034919061467a565b600e81905550602d600e54600d5461204c919061467a565b111561208d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208490614a8c565b60405180910390fd5b602d600e54600d5461209f919061467a565b11156120e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d790614a8c565b60405180910390fd5b7fccd61cb5df2cb048d1a7af40a431d6f247af01b6cf048f7a3f2aa9d313e2bc50600954600b54604051612115929190614651565b60405180910390a17f12dd4f8337f0c236c7994706854cca8cd53921c0032cb0fba8cdb797e73f67c6600a54600c54604051612152929190614651565b60405180910390a150505050565b60095481565b61216e6128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f49061422c565b60405180910390fd5b801515601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361228f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612286906147b2565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f1d9a11e204b58ad56c619c61600e42167624659d218f0143f1f64956b0daae6c8260405161232c9190613db8565b60405180910390a25050565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60115481565b6123d36128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612462576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124599061422c565b60405180910390fd5b80601260016101000a81548160ff02191690831515021790555050565b6124876128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250d9061422c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257c90614b1e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61264d6128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d39061422c565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361274a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274190614bb0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127ac576127a7473373ffffffffffffffffffffffffffffffffffffffff1661332690919063ffffffff16565b6128b1565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016127ec9190613fbf565b602060405180830381865afa158015612809573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282d9190614be5565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161286a929190614c12565b6020604051808303816000875af1158015612889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ad9190614c50565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361292b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292290614cef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361299a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299190614d81565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a789190613c01565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aeb90614e13565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5a90614ea5565b60405180910390fd5b601260029054906101000a900460ff1680612bc75750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612c1b5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5190614f11565b60405180910390fd5b60008103612c7357612c6e8383600061341a565b613321565b601760009054906101000a900460ff1615612ec957600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612d315750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8015612d875750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ddd5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ec857600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e8157601854811115612e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7390614fa3565b60405180910390fd5b612ec7565b601954811115612ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ebd90614fa3565b60405180910390fd5b5b5b5b6000612ed4306114a4565b905060006011548210159050808015612efa5750601260009054906101000a900460ff16155b8015612f535750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015612f6e57506000600e54600d54612f6c919061467a565b115b8015612f865750601260019054906101000a900460ff165b15612fcd576001601260006101000a81548160ff021916908315150217905550612fb1601154613699565b6000601260006101000a81548160ff0219169083151502179055505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130705750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806130875750601260009054906101000a900460ff165b15613095576000905061315a565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036130f457600d549050613159565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361315357600e549050613158565b600090505b5b5b600081111561319a57600060648286613173919061457d565b61317d91906144ba565b9050808561318b9190614fc3565b945061319887308361341a565b505b601460009054906101000a900460ff161561331257601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132535750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132ad5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156133115760006132bd866114a4565b905060155485826132ce919061467a565b111561330f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330690615069565b60405180910390fd5b505b5b61331d86868661341a565b5050505b505050565b80471015613369576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613360906150d5565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161338f90615126565b60006040518083038185875af1925050503d80600081146133cc576040519150601f19603f3d011682016040523d82523d6000602084013e6133d1565b606091505b5050905080613415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340c906151ad565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613489576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161348090614e13565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036134f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ef90614ea5565b60405180910390fd5b613503838383613bde565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613589576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135809061523f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461361c919061467a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136809190613c01565b60405180910390a3613693848484613be3565b50505050565b60004790506000600267ffffffffffffffff8111156136bb576136ba61525f565b5b6040519080825280602002602001820160405280156136e95781602001602082028036833780820191505090505b50905030816000815181106137015761370061528e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137cc91906152d2565b816001815181106137e0576137df61528e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b815260040161387e9594939291906153f8565b600060405180830381600087803b15801561389857600080fd5b505af11580156138ac573d6000803e3d6000fd5b50505050600082476138be9190614fc3565b90506000600e54600d546138d2919061467a565b600c54600b546138e2919061467a565b836138ed919061457d565b6138f791906144ba565b9050600081836139079190614fc3565b9050600082111561395e5761395d82601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661332690919063ffffffff16565b5b6000811115613b9d576000600267ffffffffffffffff8111156139845761398361525f565b5b6040519080825280602002602001820160405280156139b25781602001602082028036833780820191505090505b509050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a4691906152d2565b81600081518110613a5a57613a5961528e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050736982508145454ce325ddbe47a25d4ec3d231193381600181518110613abd57613abc61528e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008461dead61012c42613b4a919061467a565b6040518663ffffffff1660e01b8152600401613b699493929190615452565b6000604051808303818588803b158015613b8257600080fd5b505af1158015613b96573d6000803e3d6000fd5b5050505050505b7f94b0d5a5b2879507b25bbfd8a3bfed636aeb5ef2386d2c5368585e22e60d3d188684604051613bce929190614651565b60405180910390a1505050505050565b505050565b505050565b6000819050919050565b613bfb81613be8565b82525050565b6000602082019050613c166000830184613bf2565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c56578082015181840152602081019050613c3b565b60008484015250505050565b6000601f19601f8301169050919050565b6000613c7e82613c1c565b613c888185613c27565b9350613c98818560208601613c38565b613ca181613c62565b840191505092915050565b60006020820190508181036000830152613cc68184613c73565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613cfe82613cd3565b9050919050565b613d0e81613cf3565b8114613d1957600080fd5b50565b600081359050613d2b81613d05565b92915050565b613d3a81613be8565b8114613d4557600080fd5b50565b600081359050613d5781613d31565b92915050565b60008060408385031215613d7457613d73613cce565b5b6000613d8285828601613d1c565b9250506020613d9385828601613d48565b9150509250929050565b60008115159050919050565b613db281613d9d565b82525050565b6000602082019050613dcd6000830184613da9565b92915050565b6000819050919050565b6000613df8613df3613dee84613cd3565b613dd3565b613cd3565b9050919050565b6000613e0a82613ddd565b9050919050565b6000613e1c82613dff565b9050919050565b613e2c81613e11565b82525050565b6000602082019050613e476000830184613e23565b92915050565b600060208284031215613e6357613e62613cce565b5b6000613e7184828501613d1c565b91505092915050565b600080600060608486031215613e9357613e92613cce565b5b6000613ea186828701613d1c565b9350506020613eb286828701613d1c565b9250506040613ec386828701613d48565b9150509250925092565b613ed681613d9d565b8114613ee157600080fd5b50565b600081359050613ef381613ecd565b92915050565b600060208284031215613f0f57613f0e613cce565b5b6000613f1d84828501613ee4565b91505092915050565b600060ff82169050919050565b613f3c81613f26565b82525050565b6000602082019050613f576000830184613f33565b92915050565b600080600060608486031215613f7657613f75613cce565b5b6000613f8486828701613d48565b9350506020613f9586828701613d48565b9250506040613fa686828701613d48565b9150509250925092565b613fb981613cf3565b82525050565b6000602082019050613fd46000830184613fb0565b92915050565b60008060408385031215613ff157613ff0613cce565b5b6000613fff85828601613d1c565b925050602061401085828601613ee4565b9150509250929050565b6000602082840312156140305761402f613cce565b5b600061403e84828501613d48565b91505092915050565b6000806000806080858703121561406157614060613cce565b5b600061406f87828801613d48565b945050602061408087828801613d48565b935050604061409187828801613d48565b92505060606140a287828801613d48565b91505092959194509250565b600080604083850312156140c5576140c4613cce565b5b60006140d385828601613d1c565b92505060206140e485828601613d1c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061413557607f821691505b602082108103614148576141476140ee565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006141aa602883613c27565b91506141b58261414e565b604082019050919050565b600060208201905081810360008301526141d98161419d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614216602083613c27565b9150614221826141e0565b602082019050919050565b6000602082019050818103600083015261424581614209565b9050919050565b7f4d61782077616c6c6574206c696d697420697320616c7265616479207365742060008201527f746f207468617420737461746500000000000000000000000000000000000000602082015250565b60006142a8602d83613c27565b91506142b38261424c565b604082019050919050565b600060208201905081810360008301526142d78161429b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115614364578086048111156143405761433f6142de565b5b600185161561434f5780820291505b808102905061435d8561430d565b9450614324565b94509492505050565b60008261437d5760019050614439565b8161438b5760009050614439565b81600181146143a157600281146143ab576143da565b6001915050614439565b60ff8411156143bd576143bc6142de565b5b8360020a9150848211156143d4576143d36142de565b5b50614439565b5060208310610133831016604e8410600b841016171561440f5782820a90508381111561440a576144096142de565b5b614439565b61441c848484600161431a565b92509050818404811115614433576144326142de565b5b81810290505b9392505050565b600061444b82613be8565b915061445683613f26565b92506144837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461436d565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144c582613be8565b91506144d083613be8565b9250826144e0576144df61448b565b5b828204905092915050565b7f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060008201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c7900602082015250565b6000614547603f83613c27565b9150614552826144eb565b604082019050919050565b600060208201905081810360008301526145768161453a565b9050919050565b600061458882613be8565b915061459383613be8565b92508282026145a181613be8565b915082820484148315176145b8576145b76142de565b5b5092915050565b7f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060008201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b600061461b602d83613c27565b9150614626826145bf565b604082019050919050565b6000602082019050818103600083015261464a8161460e565b9050919050565b60006040820190506146666000830185613bf2565b6146736020830184613bf2565b9392505050565b600061468582613be8565b915061469083613be8565b92508282019050808211156146a8576146a76142de565b5b92915050565b7f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960008201527f2073657420746f20746861742073746174650000000000000000000000000000602082015250565b600061470a603283613c27565b9150614715826146ae565b604082019050919050565b60006020820190508181036000830152614739816146fd565b9050919050565b7f4163636f756e7420697320616c72656164792073657420746f2074686174207360008201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b600061479c602483613c27565b91506147a782614740565b604082019050919050565b600060208201905081810360008301526147cb8161478f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061482e602583613c27565b9150614839826147d2565b604082019050919050565b6000602082019050818103600083015261485d81614821565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b60006148c0602883613c27565b91506148cb82614864565b604082019050919050565b600060208201905081810360008301526148ef816148b3565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000614952602b83613c27565b915061495d826148f6565b604082019050919050565b6000602082019050818103600083015261498181614945565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b60006149e4602a83613c27565b91506149ef82614988565b604082019050919050565b60006020820190508181036000830152614a13816149d7565b9050919050565b7f546f74616c20466565732063616e6e6f742065786365656420746865206d617860008201527f696d756d00000000000000000000000000000000000000000000000000000000602082015250565b6000614a76602483613c27565b9150614a8182614a1a565b604082019050919050565b60006020820190508181036000830152614aa581614a69565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614b08602683613c27565b9150614b1382614aac565b604082019050919050565b60006020820190508181036000830152614b3781614afb565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b6000614b9a603783613c27565b9150614ba582614b3e565b604082019050919050565b60006020820190508181036000830152614bc981614b8d565b9050919050565b600081519050614bdf81613d31565b92915050565b600060208284031215614bfb57614bfa613cce565b5b6000614c0984828501614bd0565b91505092915050565b6000604082019050614c276000830185613fb0565b614c346020830184613bf2565b9392505050565b600081519050614c4a81613ecd565b92915050565b600060208284031215614c6657614c65613cce565b5b6000614c7484828501614c3b565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614cd9602483613c27565b9150614ce482614c7d565b604082019050919050565b60006020820190508181036000830152614d0881614ccc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d6b602283613c27565b9150614d7682614d0f565b604082019050919050565b60006020820190508181036000830152614d9a81614d5e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614dfd602583613c27565b9150614e0882614da1565b604082019050919050565b60006020820190508181036000830152614e2c81614df0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614e8f602383613c27565b9150614e9a82614e33565b604082019050919050565b60006020820190508181036000830152614ebe81614e82565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b6000614efb601883613c27565b9150614f0682614ec5565b602082019050919050565b60006020820190508181036000830152614f2a81614eee565b9050919050565b7f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73616374696f6e416d6f756e740000000000602082015250565b6000614f8d603b83613c27565b9150614f9882614f31565b604082019050919050565b60006020820190508181036000830152614fbc81614f80565b9050919050565b6000614fce82613be8565b9150614fd983613be8565b9250828203905081811115614ff157614ff06142de565b5b92915050565b7f4d617857616c6c65743a20526563697069656e7420657863656564732074686560008201527f206d617857616c6c6574416d6f756e7400000000000000000000000000000000602082015250565b6000615053603083613c27565b915061505e82614ff7565b604082019050919050565b6000602082019050818103600083015261508281615046565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006150bf601d83613c27565b91506150ca82615089565b602082019050919050565b600060208201905081810360008301526150ee816150b2565b9050919050565b600081905092915050565b50565b60006151106000836150f5565b915061511b82615100565b600082019050919050565b600061513182615103565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000615197603a83613c27565b91506151a28261513b565b604082019050919050565b600060208201905081810360008301526151c68161518a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615229602683613c27565b9150615234826151cd565b604082019050919050565b600060208201905081810360008301526152588161521c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506152cc81613d05565b92915050565b6000602082840312156152e8576152e7613cce565b5b60006152f6848285016152bd565b91505092915050565b6000819050919050565b600061532461531f61531a846152ff565b613dd3565b613be8565b9050919050565b61533481615309565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61536f81613cf3565b82525050565b60006153818383615366565b60208301905092915050565b6000602082019050919050565b60006153a58261533a565b6153af8185615345565b93506153ba83615356565b8060005b838110156153eb5781516153d28882615375565b97506153dd8361538d565b9250506001810190506153be565b5085935050505092915050565b600060a08201905061540d6000830188613bf2565b61541a602083018761532b565b818103604083015261542c818661539a565b905061543b6060830185613fb0565b6154486080830184613bf2565b9695505050505050565b6000608082019050615467600083018761532b565b8181036020830152615479818661539a565b90506154886040830185613fb0565b6154956060830184613bf2565b9594505050505056fea26469706673582212201a0134b98157214382e28eb2039b57bb61689fc8abaa7e31e1d3fc2286e254ef64736f6c63430008110033
Deployed Bytecode
0x6080604052600436106102765760003560e01c8063702509fd1161014f578063aacebbe3116100c1578063dc4c7dbc1161007a578063dc4c7dbc14610989578063dd62ed3e146109b4578063e2f45605146109f1578063e81ea6a914610a1c578063f2fde38b14610a45578063f9d0831a14610a6e5761027d565b8063aacebbe314610891578063afa4f3b2146108ba578063c0246668146108e3578063c6616ba11461090c578063cc9be3cd14610935578063d2fcc001146109605761027d565b80638da5cb5b116101135780638da5cb5b1461075957806395d89b4114610784578063a457c2d7146107af578063a8a69b9d146107ec578063a9059cbb14610829578063aa4bde28146108665761027d565b8063702509fd1461068657806370a08231146106b1578063715018a6146106ee57806375f0a87414610705578063880bcbc1146107305761027d565b8063313ce567116101e85780634ada218b116101ac5780634ada218b146105745780634fbee1931461059f57806356a6cabf146105dc57806359136fa5146106055780635fc2e596146106305780636ddd17131461065b5761027d565b8063313ce5671461048f57806336a0f8a5146104ba57806339509351146104e357806347f687951461052057806349bd5a5e146105495761027d565b806318d9ceae1161023a57806318d9ceae1461036b57806321a9d82a146103a857806323b872dd146103d35780632a16de21146104105780632a6c7dba1461043b5780632ba86bf2146104645761027d565b80630105d0fd1461028257806306fdde03146102ad578063095ea7b3146102d85780631694505e1461031557806318160ddd146103405761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a97565b6040516102a49190613c01565b60405180910390f35b3480156102b957600080fd5b506102c2610a9d565b6040516102cf9190613cac565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa9190613d5d565b610b2f565b60405161030c9190613db8565b60405180910390f35b34801561032157600080fd5b5061032a610b4d565b6040516103379190613e32565b60405180910390f35b34801561034c57600080fd5b50610355610b73565b6040516103629190613c01565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190613e4d565b610b7d565b60405161039f9190613db8565b60405180910390f35b3480156103b457600080fd5b506103bd610bd3565b6040516103ca9190613db8565b60405180910390f35b3480156103df57600080fd5b506103fa60048036038101906103f59190613e7a565b610be6565b6040516104079190613db8565b60405180910390f35b34801561041c57600080fd5b50610425610d05565b6040516104329190613c01565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d9190613ef9565b610d0b565b005b34801561047057600080fd5b50610479610e5a565b6040516104869190613db8565b60405180910390f35b34801561049b57600080fd5b506104a4610e6d565b6040516104b19190613f42565b60405180910390f35b3480156104c657600080fd5b506104e160048036038101906104dc9190613f5d565b610e76565b005b3480156104ef57600080fd5b5061050a60048036038101906105059190613d5d565b61111e565b6040516105179190613db8565b60405180910390f35b34801561052c57600080fd5b5061054760048036038101906105429190613ef9565b6111ca565b005b34801561055557600080fd5b5061055e6112a1565b60405161056b9190613fbf565b60405180910390f35b34801561058057600080fd5b506105896112c7565b6040516105969190613db8565b60405180910390f35b3480156105ab57600080fd5b506105c660048036038101906105c19190613e4d565b6112da565b6040516105d39190613db8565b60405180910390f35b3480156105e857600080fd5b5061060360048036038101906105fe9190613ef9565b611330565b005b34801561061157600080fd5b5061061a61147f565b6040516106279190613c01565b60405180910390f35b34801561063c57600080fd5b50610645611485565b6040516106529190613c01565b60405180910390f35b34801561066757600080fd5b5061067061148b565b60405161067d9190613db8565b60405180910390f35b34801561069257600080fd5b5061069b61149e565b6040516106a89190613c01565b60405180910390f35b3480156106bd57600080fd5b506106d860048036038101906106d39190613e4d565b6114a4565b6040516106e59190613c01565b60405180910390f35b3480156106fa57600080fd5b506107036114ec565b005b34801561071157600080fd5b5061071a611644565b6040516107279190613fbf565b60405180910390f35b34801561073c57600080fd5b5061075760048036038101906107529190613fda565b61166a565b005b34801561076557600080fd5b5061076e61183c565b60405161077b9190613fbf565b60405180910390f35b34801561079057600080fd5b50610799611866565b6040516107a69190613cac565b60405180910390f35b3480156107bb57600080fd5b506107d660048036038101906107d19190613d5d565b6118f8565b6040516107e39190613db8565b60405180910390f35b3480156107f857600080fd5b50610813600480360381019061080e9190613e4d565b6119e3565b6040516108209190613db8565b60405180910390f35b34801561083557600080fd5b50610850600480360381019061084b9190613d5d565b611a39565b60405161085d9190613db8565b60405180910390f35b34801561087257600080fd5b5061087b611a57565b6040516108889190613c01565b60405180910390f35b34801561089d57600080fd5b506108b860048036038101906108b39190613e4d565b611a5d565b005b3480156108c657600080fd5b506108e160048036038101906108dc919061401a565b611c90565b005b3480156108ef57600080fd5b5061090a60048036038101906109059190613fda565b611d89565b005b34801561091857600080fd5b50610933600480360381019061092e9190614047565b611f5b565b005b34801561094157600080fd5b5061094a612160565b6040516109579190613c01565b60405180910390f35b34801561096c57600080fd5b5061098760048036038101906109829190613fda565b612166565b005b34801561099557600080fd5b5061099e612338565b6040516109ab9190613c01565b60405180910390f35b3480156109c057600080fd5b506109db60048036038101906109d691906140ae565b61233e565b6040516109e89190613c01565b60405180910390f35b3480156109fd57600080fd5b50610a066123c5565b604051610a139190613c01565b60405180910390f35b348015610a2857600080fd5b50610a436004803603810190610a3e9190613ef9565b6123cb565b005b348015610a5157600080fd5b50610a6c6004803603810190610a679190613e4d565b61247f565b005b348015610a7a57600080fd5b50610a956004803603810190610a909190613e4d565b612645565b005b60185481565b606060038054610aac9061411d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad89061411d565b8015610b255780601f10610afa57610100808354040283529160200191610b25565b820191906000526020600020905b815481529060010190602001808311610b0857829003601f168201915b5050505050905090565b6000610b43610b3c6128b4565b84846128bc565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601460009054906101000a900460ff1681565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c326128b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610cee5782811015610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd0906141c0565b60405180910390fd5b610ced85610ce56128b4565b8584036128bc565b5b610cf9858585612a85565b60019150509392505050565b600a5481565b610d136128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d999061422c565b60405180910390fd5b601460009054906101000a900460ff16151581151503610df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dee906142be565b60405180910390fd5b80601460006101000a81548160ff0219169083151502179055507f670f884265aba2d05e7c26efbc42f8365effc4cb3fcfcefddba0c0b71a6231f1601460009054906101000a900460ff16604051610e4f9190613db8565b60405180910390a150565b601760009054906101000a900460ff1681565b60006012905090565b610e7e6128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f049061422c565b60405180910390fd5b6103e8610f18610e6d565b600a610f249190614440565b610f2c610b73565b610f3691906144ba565b610f4091906144ba565b8310158015610f8157506103e8610f55610e6d565b600a610f619190614440565b610f69610b73565b610f7391906144ba565b610f7d91906144ba565b8210155b610fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb79061455d565b60405180910390fd5b610fc8610e6d565b600a610fd49190614440565b83610fdf919061457d565b601881905550610fed610e6d565b600a610ff99190614440565b82611004919061457d565b6019819055506064611014610e6d565b600a6110209190614440565b611028610b73565b61103291906144ba565b61103c91906144ba565b81101561107e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107590614631565b60405180910390fd5b611086610e6d565b600a6110929190614440565b8161109d919061457d565b6015819055507f21bc0ea3406acb92d4449ab33befb4ae82f873a22f3b6cf0e466b2710beb59426015546040516110d49190613c01565b60405180910390a17f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb131601854601954604051611111929190614651565b60405180910390a1505050565b60006111c061112b6128b4565b8484600160006111396128b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111bb919061467a565b6128bc565b6001905092915050565b6111d26128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611261576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112589061422c565b60405180910390fd5b801561129e576001601260026101000a81548160ff0219169083151502179055506001601260016101000a81548160ff0219169083151502179055505b50565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260029054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6113386128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113be9061422c565b60405180910390fd5b601760009054906101000a900460ff1615158115150361141c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141390614720565b60405180910390fd5b80601760006101000a81548160ff0219169083151502179055507fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf601760009054906101000a900460ff166040516114749190613db8565b60405180910390a150565b60195481565b600b5481565b601260019054906101000a900460ff1681565b600f5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114f46128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157a9061422c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116726128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f89061422c565b60405180910390fd5b801515601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178a906147b2565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c10826040516118309190613db8565b60405180910390a25050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546118759061411d565b80601f01602080910402602001604051908101604052809291908181526020018280546118a19061411d565b80156118ee5780601f106118c3576101008083540402835291602001916118ee565b820191906000526020600020905b8154815290600101906020018083116118d157829003601f168201915b5050505050905090565b600080600160006119076128b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156119c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bb90614844565b60405180910390fd5b6119d86119cf6128b4565b858584036128bc565b600191505092915050565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611a4d611a466128b4565b8484612a85565b6001905092915050565b60155481565b611a656128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aeb9061422c565b60405180910390fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7b906148d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bea90614968565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611c859190613fbf565b60405180910390a150565b611c986128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1e9061422c565b60405180910390fd5b61271081611d33610b73565b611d3d919061457d565b611d4791906144ba565b6011819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145601154604051611d7e9190613c01565b60405180910390a150565b611d916128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e179061422c565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea9906149fa565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f4f9190613db8565b60405180910390a25050565b611f636128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe99061422c565b60405180910390fd5b8360098190555082600b81905550600b54600954612010919061467a565b600d8190555081600a8190555080600c81905550600c54600a54612034919061467a565b600e81905550602d600e54600d5461204c919061467a565b111561208d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208490614a8c565b60405180910390fd5b602d600e54600d5461209f919061467a565b11156120e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d790614a8c565b60405180910390fd5b7fccd61cb5df2cb048d1a7af40a431d6f247af01b6cf048f7a3f2aa9d313e2bc50600954600b54604051612115929190614651565b60405180910390a17f12dd4f8337f0c236c7994706854cca8cd53921c0032cb0fba8cdb797e73f67c6600a54600c54604051612152929190614651565b60405180910390a150505050565b60095481565b61216e6128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f49061422c565b60405180910390fd5b801515601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361228f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612286906147b2565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f1d9a11e204b58ad56c619c61600e42167624659d218f0143f1f64956b0daae6c8260405161232c9190613db8565b60405180910390a25050565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60115481565b6123d36128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612462576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124599061422c565b60405180910390fd5b80601260016101000a81548160ff02191690831515021790555050565b6124876128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250d9061422c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257c90614b1e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61264d6128b4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d39061422c565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361274a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274190614bb0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127ac576127a7473373ffffffffffffffffffffffffffffffffffffffff1661332690919063ffffffff16565b6128b1565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016127ec9190613fbf565b602060405180830381865afa158015612809573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282d9190614be5565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161286a929190614c12565b6020604051808303816000875af1158015612889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ad9190614c50565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361292b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292290614cef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361299a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299190614d81565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a789190613c01565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aeb90614e13565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5a90614ea5565b60405180910390fd5b601260029054906101000a900460ff1680612bc75750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612c1b5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5190614f11565b60405180910390fd5b60008103612c7357612c6e8383600061341a565b613321565b601760009054906101000a900460ff1615612ec957600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612d315750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8015612d875750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ddd5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ec857600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e8157601854811115612e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7390614fa3565b60405180910390fd5b612ec7565b601954811115612ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ebd90614fa3565b60405180910390fd5b5b5b5b6000612ed4306114a4565b905060006011548210159050808015612efa5750601260009054906101000a900460ff16155b8015612f535750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015612f6e57506000600e54600d54612f6c919061467a565b115b8015612f865750601260019054906101000a900460ff165b15612fcd576001601260006101000a81548160ff021916908315150217905550612fb1601154613699565b6000601260006101000a81548160ff0219169083151502179055505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130705750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806130875750601260009054906101000a900460ff165b15613095576000905061315a565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036130f457600d549050613159565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361315357600e549050613158565b600090505b5b5b600081111561319a57600060648286613173919061457d565b61317d91906144ba565b9050808561318b9190614fc3565b945061319887308361341a565b505b601460009054906101000a900460ff161561331257601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132535750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132ad5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156133115760006132bd866114a4565b905060155485826132ce919061467a565b111561330f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330690615069565b60405180910390fd5b505b5b61331d86868661341a565b5050505b505050565b80471015613369576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613360906150d5565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161338f90615126565b60006040518083038185875af1925050503d80600081146133cc576040519150601f19603f3d011682016040523d82523d6000602084013e6133d1565b606091505b5050905080613415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340c906151ad565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613489576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161348090614e13565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036134f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ef90614ea5565b60405180910390fd5b613503838383613bde565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613589576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135809061523f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461361c919061467a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136809190613c01565b60405180910390a3613693848484613be3565b50505050565b60004790506000600267ffffffffffffffff8111156136bb576136ba61525f565b5b6040519080825280602002602001820160405280156136e95781602001602082028036833780820191505090505b50905030816000815181106137015761370061528e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137cc91906152d2565b816001815181106137e0576137df61528e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b815260040161387e9594939291906153f8565b600060405180830381600087803b15801561389857600080fd5b505af11580156138ac573d6000803e3d6000fd5b50505050600082476138be9190614fc3565b90506000600e54600d546138d2919061467a565b600c54600b546138e2919061467a565b836138ed919061457d565b6138f791906144ba565b9050600081836139079190614fc3565b9050600082111561395e5761395d82601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661332690919063ffffffff16565b5b6000811115613b9d576000600267ffffffffffffffff8111156139845761398361525f565b5b6040519080825280602002602001820160405280156139b25781602001602082028036833780820191505090505b509050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a4691906152d2565b81600081518110613a5a57613a5961528e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050736982508145454ce325ddbe47a25d4ec3d231193381600181518110613abd57613abc61528e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008461dead61012c42613b4a919061467a565b6040518663ffffffff1660e01b8152600401613b699493929190615452565b6000604051808303818588803b158015613b8257600080fd5b505af1158015613b96573d6000803e3d6000fd5b5050505050505b7f94b0d5a5b2879507b25bbfd8a3bfed636aeb5ef2386d2c5368585e22e60d3d188684604051613bce929190614651565b60405180910390a1505050505050565b505050565b505050565b6000819050919050565b613bfb81613be8565b82525050565b6000602082019050613c166000830184613bf2565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c56578082015181840152602081019050613c3b565b60008484015250505050565b6000601f19601f8301169050919050565b6000613c7e82613c1c565b613c888185613c27565b9350613c98818560208601613c38565b613ca181613c62565b840191505092915050565b60006020820190508181036000830152613cc68184613c73565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613cfe82613cd3565b9050919050565b613d0e81613cf3565b8114613d1957600080fd5b50565b600081359050613d2b81613d05565b92915050565b613d3a81613be8565b8114613d4557600080fd5b50565b600081359050613d5781613d31565b92915050565b60008060408385031215613d7457613d73613cce565b5b6000613d8285828601613d1c565b9250506020613d9385828601613d48565b9150509250929050565b60008115159050919050565b613db281613d9d565b82525050565b6000602082019050613dcd6000830184613da9565b92915050565b6000819050919050565b6000613df8613df3613dee84613cd3565b613dd3565b613cd3565b9050919050565b6000613e0a82613ddd565b9050919050565b6000613e1c82613dff565b9050919050565b613e2c81613e11565b82525050565b6000602082019050613e476000830184613e23565b92915050565b600060208284031215613e6357613e62613cce565b5b6000613e7184828501613d1c565b91505092915050565b600080600060608486031215613e9357613e92613cce565b5b6000613ea186828701613d1c565b9350506020613eb286828701613d1c565b9250506040613ec386828701613d48565b9150509250925092565b613ed681613d9d565b8114613ee157600080fd5b50565b600081359050613ef381613ecd565b92915050565b600060208284031215613f0f57613f0e613cce565b5b6000613f1d84828501613ee4565b91505092915050565b600060ff82169050919050565b613f3c81613f26565b82525050565b6000602082019050613f576000830184613f33565b92915050565b600080600060608486031215613f7657613f75613cce565b5b6000613f8486828701613d48565b9350506020613f9586828701613d48565b9250506040613fa686828701613d48565b9150509250925092565b613fb981613cf3565b82525050565b6000602082019050613fd46000830184613fb0565b92915050565b60008060408385031215613ff157613ff0613cce565b5b6000613fff85828601613d1c565b925050602061401085828601613ee4565b9150509250929050565b6000602082840312156140305761402f613cce565b5b600061403e84828501613d48565b91505092915050565b6000806000806080858703121561406157614060613cce565b5b600061406f87828801613d48565b945050602061408087828801613d48565b935050604061409187828801613d48565b92505060606140a287828801613d48565b91505092959194509250565b600080604083850312156140c5576140c4613cce565b5b60006140d385828601613d1c565b92505060206140e485828601613d1c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061413557607f821691505b602082108103614148576141476140ee565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006141aa602883613c27565b91506141b58261414e565b604082019050919050565b600060208201905081810360008301526141d98161419d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614216602083613c27565b9150614221826141e0565b602082019050919050565b6000602082019050818103600083015261424581614209565b9050919050565b7f4d61782077616c6c6574206c696d697420697320616c7265616479207365742060008201527f746f207468617420737461746500000000000000000000000000000000000000602082015250565b60006142a8602d83613c27565b91506142b38261424c565b604082019050919050565b600060208201905081810360008301526142d78161429b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115614364578086048111156143405761433f6142de565b5b600185161561434f5780820291505b808102905061435d8561430d565b9450614324565b94509492505050565b60008261437d5760019050614439565b8161438b5760009050614439565b81600181146143a157600281146143ab576143da565b6001915050614439565b60ff8411156143bd576143bc6142de565b5b8360020a9150848211156143d4576143d36142de565b5b50614439565b5060208310610133831016604e8410600b841016171561440f5782820a90508381111561440a576144096142de565b5b614439565b61441c848484600161431a565b92509050818404811115614433576144326142de565b5b81810290505b9392505050565b600061444b82613be8565b915061445683613f26565b92506144837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461436d565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144c582613be8565b91506144d083613be8565b9250826144e0576144df61448b565b5b828204905092915050565b7f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060008201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c7900602082015250565b6000614547603f83613c27565b9150614552826144eb565b604082019050919050565b600060208201905081810360008301526145768161453a565b9050919050565b600061458882613be8565b915061459383613be8565b92508282026145a181613be8565b915082820484148315176145b8576145b76142de565b5b5092915050565b7f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060008201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b600061461b602d83613c27565b9150614626826145bf565b604082019050919050565b6000602082019050818103600083015261464a8161460e565b9050919050565b60006040820190506146666000830185613bf2565b6146736020830184613bf2565b9392505050565b600061468582613be8565b915061469083613be8565b92508282019050808211156146a8576146a76142de565b5b92915050565b7f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960008201527f2073657420746f20746861742073746174650000000000000000000000000000602082015250565b600061470a603283613c27565b9150614715826146ae565b604082019050919050565b60006020820190508181036000830152614739816146fd565b9050919050565b7f4163636f756e7420697320616c72656164792073657420746f2074686174207360008201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b600061479c602483613c27565b91506147a782614740565b604082019050919050565b600060208201905081810360008301526147cb8161478f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061482e602583613c27565b9150614839826147d2565b604082019050919050565b6000602082019050818103600083015261485d81614821565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b60006148c0602883613c27565b91506148cb82614864565b604082019050919050565b600060208201905081810360008301526148ef816148b3565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000614952602b83613c27565b915061495d826148f6565b604082019050919050565b6000602082019050818103600083015261498181614945565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b60006149e4602a83613c27565b91506149ef82614988565b604082019050919050565b60006020820190508181036000830152614a13816149d7565b9050919050565b7f546f74616c20466565732063616e6e6f742065786365656420746865206d617860008201527f696d756d00000000000000000000000000000000000000000000000000000000602082015250565b6000614a76602483613c27565b9150614a8182614a1a565b604082019050919050565b60006020820190508181036000830152614aa581614a69565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614b08602683613c27565b9150614b1382614aac565b604082019050919050565b60006020820190508181036000830152614b3781614afb565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b6000614b9a603783613c27565b9150614ba582614b3e565b604082019050919050565b60006020820190508181036000830152614bc981614b8d565b9050919050565b600081519050614bdf81613d31565b92915050565b600060208284031215614bfb57614bfa613cce565b5b6000614c0984828501614bd0565b91505092915050565b6000604082019050614c276000830185613fb0565b614c346020830184613bf2565b9392505050565b600081519050614c4a81613ecd565b92915050565b600060208284031215614c6657614c65613cce565b5b6000614c7484828501614c3b565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614cd9602483613c27565b9150614ce482614c7d565b604082019050919050565b60006020820190508181036000830152614d0881614ccc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d6b602283613c27565b9150614d7682614d0f565b604082019050919050565b60006020820190508181036000830152614d9a81614d5e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614dfd602583613c27565b9150614e0882614da1565b604082019050919050565b60006020820190508181036000830152614e2c81614df0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614e8f602383613c27565b9150614e9a82614e33565b604082019050919050565b60006020820190508181036000830152614ebe81614e82565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b6000614efb601883613c27565b9150614f0682614ec5565b602082019050919050565b60006020820190508181036000830152614f2a81614eee565b9050919050565b7f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73616374696f6e416d6f756e740000000000602082015250565b6000614f8d603b83613c27565b9150614f9882614f31565b604082019050919050565b60006020820190508181036000830152614fbc81614f80565b9050919050565b6000614fce82613be8565b9150614fd983613be8565b9250828203905081811115614ff157614ff06142de565b5b92915050565b7f4d617857616c6c65743a20526563697069656e7420657863656564732074686560008201527f206d617857616c6c6574416d6f756e7400000000000000000000000000000000602082015250565b6000615053603083613c27565b915061505e82614ff7565b604082019050919050565b6000602082019050818103600083015261508281615046565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006150bf601d83613c27565b91506150ca82615089565b602082019050919050565b600060208201905081810360008301526150ee816150b2565b9050919050565b600081905092915050565b50565b60006151106000836150f5565b915061511b82615100565b600082019050919050565b600061513182615103565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000615197603a83613c27565b91506151a28261513b565b604082019050919050565b600060208201905081810360008301526151c68161518a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615229602683613c27565b9150615234826151cd565b604082019050919050565b600060208201905081810360008301526152588161521c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506152cc81613d05565b92915050565b6000602082840312156152e8576152e7613cce565b5b60006152f6848285016152bd565b91505092915050565b6000819050919050565b600061532461531f61531a846152ff565b613dd3565b613be8565b9050919050565b61533481615309565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61536f81613cf3565b82525050565b60006153818383615366565b60208301905092915050565b6000602082019050919050565b60006153a58261533a565b6153af8185615345565b93506153ba83615356565b8060005b838110156153eb5781516153d28882615375565b97506153dd8361538d565b9250506001810190506153be565b5085935050505092915050565b600060a08201905061540d6000830188613bf2565b61541a602083018761532b565b818103604083015261542c818661539a565b905061543b6060830185613fb0565b6154486080830184613bf2565b9695505050505050565b6000608082019050615467600083018761532b565b8181036020830152615479818661539a565b90506154886040830185613fb0565b6154956060830184613bf2565b9594505050505056fea26469706673582212201a0134b98157214382e28eb2039b57bb61689fc8abaa7e31e1d3fc2286e254ef64736f6c63430008110033
Deployed Bytecode Sourcemap
19631:14253:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31724:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14916:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15830:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19716:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15237:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33740:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30545:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16007:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19903:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30835:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31675:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15136:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32408:990;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16588:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25722:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19764:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25687:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24282:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32089:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31770:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19945:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20270:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20107:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15353:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14099:148;;;;;;;;;;;;;:::i;:::-;;20157:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33406:326;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13885:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15024:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16811:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31455:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15488:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30588:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25300:379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28867:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23984:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24415:870;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19864:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31129:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19985:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15671:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20196:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28748:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14255:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23511:465;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31724:39;;;;:::o;14916:100::-;14970:13;15003:5;14996:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14916:100;:::o;15830:169::-;15913:4;15930:39;15939:12;:10;:12::i;:::-;15953:7;15962:6;15930:8;:39::i;:::-;15987:4;15980:11;;15830:169;;;;:::o;19716:41::-;;;;;;;;;;;;;:::o;15237:108::-;15298:7;15325:12;;15318:19;;15237:108;:::o;33740:141::-;33815:4;33839:25;:34;33865:7;33839:34;;;;;;;;;;;;;;;;;;;;;;;;;33832:41;;33740:141;;;:::o;30545:36::-;;;;;;;;;;;;;:::o;16007:573::-;16147:4;16164:24;16191:11;:19;16203:6;16191:19;;;;;;;;;;;;;;;:33;16211:12;:10;:12::i;:::-;16191:33;;;;;;;;;;;;;;;;16164:60;;16259:17;16239:16;:37;16235:265;;16321:6;16301:16;:26;;16293:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;16416:57;16425:6;16433:12;:10;:12::i;:::-;16466:6;16447:16;:25;16416:8;:57::i;:::-;16235:265;16512:36;16522:6;16530:9;16541:6;16512:9;:36::i;:::-;16568:4;16561:11;;;16007:573;;;;;:::o;19903:33::-;;;;:::o;30835:280::-;14022:12;:10;:12::i;:::-;14012:22;;:6;;;;;;;;;;;:22;;;14004:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30929:21:::1;;;;;;;;;;;30919:31;;:6;:31;;::::0;30911:88:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;31034:6;31010:21;;:30;;;;;;;;;;;;;;;;;;31058:49;31085:21;;;;;;;;;;;31058:49;;;;;;:::i;:::-;;;;;;;;30835:280:::0;:::o;31675:42::-;;;;;;;;;;;;;:::o;15136:93::-;15194:5;15219:2;15212:9;;15136:93;:::o;32408:990::-;14022:12;:10;:12::i;:::-;14012:22;;:6;;;;;;;;;;;:22;;;14004:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32665:5:::1;32650:10;:8;:10::i;:::-;32644:2;:16;;;;:::i;:::-;32627:13;:11;:13::i;:::-;:34;;;;:::i;:::-;32626:44;;;;:::i;:::-;32597:24;:73;;:164;;;;;32756:5;32741:10;:8;:10::i;:::-;32735:2;:16;;;;:::i;:::-;32718:13;:11;:13::i;:::-;:34;;;;:::i;:::-;32717:44;;;;:::i;:::-;32688:25;:73;;32597:164;32575:278;;;;;;;;;;;;:::i;:::-;;;;;;;;;32927:10;:8;:10::i;:::-;32921:2;:16;;;;:::i;:::-;32892:24;:46;;;;:::i;:::-;32865:23;:73;;;;33011:10;:8;:10::i;:::-;33005:2;:16;;;;:::i;:::-;32976:25;:46;;;;:::i;:::-;32949:24;:73;;;;33110:3;33095:10;:8;:10::i;:::-;33089:2;:16;;;;:::i;:::-;33072:13;:11;:13::i;:::-;:34;;;;:::i;:::-;33071:42;;;;:::i;:::-;33051:16;:62;;33043:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;33218:10;:8;:10::i;:::-;33212:2;:16;;;;:::i;:::-;33192;:37;;;;:::i;:::-;33174:15;:55;;;;33247:44;33275:15;;33247:44;;;;;;:::i;:::-;;;;;;;;33307:83;33340:23;;33365:24;;33307:83;;;;;;;:::i;:::-;;;;;;;;32408:990:::0;;;:::o;16588:215::-;16676:4;16693:80;16702:12;:10;:12::i;:::-;16716:7;16762:10;16725:11;:25;16737:12;:10;:12::i;:::-;16725:25;;;;;;;;;;;;;;;:34;16751:7;16725:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;16693:8;:80::i;:::-;16791:4;16784:11;;16588:215;;;;:::o;25722:185::-;14022:12;:10;:12::i;:::-;14012:22;;:6;;;;;;;;;;;:22;;;14004:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25791:7:::1;25788:96;;;25833:4;25816:14;;:21;;;;;;;;;;;;;;;;;;25866:4;25852:11;;:18;;;;;;;;;;;;;;;;;;25788:96;25722:185:::0;:::o;19764:29::-;;;;;;;;;;;;;:::o;25687:26::-;;;;;;;;;;;;;:::o;24282:125::-;24347:4;24371:19;:28;24391:7;24371:28;;;;;;;;;;;;;;;;;;;;;;;;;24364:35;;24282:125;;;:::o;32089:311::-;14022:12;:10;:12::i;:::-;14012:22;;:6;;;;;;;;;;;:22;;;14004:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32188:26:::1;;;;;;;;;;;32178:36;;:6;:36;;::::0;32170:99:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;32309:6;32280:26;;:35;;;;;;;;;;;;;;;;;;32333:59;32365:26;;;;;;;;;;;32333:59;;;;;;:::i;:::-;;;;;;;;32089:311:::0;:::o;31770:40::-;;;;:::o;19945:33::-;;;;:::o;20270:26::-;;;;;;;;;;;;;:::o;20107:41::-;;;;:::o;15353:127::-;15427:7;15454:9;:18;15464:7;15454:18;;;;;;;;;;;;;;;;15447:25;;15353:127;;;:::o;14099:148::-;14022:12;:10;:12::i;:::-;14012:22;;:6;;;;;;;;;;;:22;;;14004:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14206:1:::1;14169:40;;14190:6;;;;;;;;;;;14169:40;;;;;;;;;;;;14237:1;14220:6;;:19;;;;;;;;;;;;;;;;;;14099:148::o:0;20157:30::-;;;;;;;;;;;;;:::o;33406:326::-;14022:12;:10;:12::i;:::-;14012:22;;:6;;;;;;;;;;;:22;;;14004:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33554:7:::1;33516:45;;:25;:34;33542:7;33516:34;;;;;;;;;;;;;;;;;;;;;;;;;:45;;::::0;33507:95:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;33650:7;33613:25;:34;33639:7;33613:34;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;33707:7;33675:49;;;33716:7;33675:49;;;;;;:::i;:::-;;;;;;;;33406:326:::0;;:::o;13885:79::-;13923:7;13950:6;;;;;;;;;;;13943:13;;13885:79;:::o;15024:104::-;15080:13;15113:7;15106:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15024:104;:::o;16811:413::-;16904:4;16921:24;16948:11;:25;16960:12;:10;:12::i;:::-;16948:25;;;;;;;;;;;;;;;:34;16974:7;16948:34;;;;;;;;;;;;;;;;16921:61;;17021:15;17001:16;:35;;16993:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;17114:67;17123:12;:10;:12::i;:::-;17137:7;17165:15;17146:16;:34;17114:8;:67::i;:::-;17212:4;17205:11;;;16811:413;;;;:::o;31455:145::-;31530:4;31554:29;:38;31584:7;31554:38;;;;;;;;;;;;;;;;;;;;;;;;;31547:45;;31455:145;;;:::o;15488:175::-;15574:4;15591:42;15601:12;:10;:12::i;:::-;15615:9;15626:6;15591:9;:42::i;:::-;15651:4;15644:11;;15488:175;;;;:::o;30588:30::-;;;;:::o;25300:379::-;14022:12;:10;:12::i;:::-;14012:22;;:6;;;;;;;;;;;:22;;;14004:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25414:15:::1;;;;;;;;;;;25394:35;;:16;:35;;::::0;25386:87:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25520:1;25492:30;;:16;:30;;::::0;25484:85:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25598:16;25580:15;;:34;;;;;;;;;;;;;;;;;;25632:39;25655:15;;;;;;;;;;;25632:39;;;;;;:::i;:::-;;;;;;;;25300:379:::0;:::o;28867:239::-;14022:12;:10;:12::i;:::-;14012:22;;:6;;;;;;;;;;;:22;;;14004:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29006:5:::1;28993:9;28977:13;:11;:13::i;:::-;:25;;;;:::i;:::-;28976:35;;;;:::i;:::-;28955:18;:56;;;;29053:45;29079:18;;29053:45;;;;;;:::i;:::-;;;;;;;;28867:239:::0;:::o;23984:290::-;14022:12;:10;:12::i;:::-;14012:22;;:6;;;;;;;;;;;:22;;;14004:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24110:8:::1;24078:40;;:19;:28;24098:7;24078:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;24070:94:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24206:8;24175:19;:28;24195:7;24175:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24248:7;24232:34;;;24257:8;24232:34;;;;;;:::i;:::-;;;;;;;;23984:290:::0;;:::o;24415:870::-;14022:12;:10;:12::i;:::-;14012:22;;:6;;;;;;;;;;;:22;;;14004:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24616:17:::1;24597:16;:36;;;;24664:18;24644:17;:38;;;;24732:17;;24713:16;;:36;;;;:::i;:::-;24693:15;:56;;;;24801:18;24781:17;:38;;;;24851:19;24830:18;:40;;;;24922:18;;24902:17;;:38;;;;:::i;:::-;24881:16;:59;;;;24999:2;24979:16;;24961:15;;:34;;;;:::i;:::-;:40;;24953:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;25099:2;25079:16;;25061:15;;:34;;;;:::i;:::-;:40;;25053:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;25158:50;25172:16;;25190:17;;25158:50;;;;;;;:::i;:::-;;;;;;;;25224:53;25239:17;;25258:18;;25224:53;;;;;;;:::i;:::-;;;;;;;;24415:870:::0;;;;:::o;19864:32::-;;;;:::o;31129:318::-;14022:12;:10;:12::i;:::-;14012:22;;:6;;;;;;;;;;;:22;;;14004:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31271:7:::1;31229:49;;:29;:38;31259:7;31229:38;;;;;;;;;;;;;;;;;;;;;;;;;:49;;::::0;31220:98:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;31370:7;31329:29;:38;31359:7;31329:38;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;31422:7;31395:44;;;31431:7;31395:44;;;;;;:::i;:::-;;;;;;;;31129:318:::0;;:::o;19985:34::-;;;;:::o;15671:151::-;15760:7;15787:11;:18;15799:5;15787:18;;;;;;;;;;;;;;;:27;15806:7;15787:27;;;;;;;;;;;;;;;;15780:34;;15671:151;;;;:::o;20196:34::-;;;;:::o;28748:111::-;14022:12;:10;:12::i;:::-;14012:22;;:6;;;;;;;;;;;:22;;;14004:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28843:8:::1;28829:11;;:22;;;;;;;;;;;;;;;;;;28748:111:::0;:::o;14255:244::-;14022:12;:10;:12::i;:::-;14012:22;;:6;;;;;;;;;;;:22;;;14004:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14364:1:::1;14344:22;;:8;:22;;::::0;14336:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14454:8;14425:38;;14446:6;;;;;;;;;;;14425:38;;;;;;;;;;;;14483:8;14474:6;;:17;;;;;;;;;;;;;;;;;;14255:244:::0;:::o;23511:465::-;14022:12;:10;:12::i;:::-;14012:22;;:6;;;;;;;;;;;:22;;;14004:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23607:4:::1;23590:22;;:5;:22;;::::0;23582:90:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23704:3;23687:21;;:5;:21;;::::0;23683:127:::1;;23725:52;23755:21;23733:10;23725:29;;;;:52;;;;:::i;:::-;23792:7;;23683:127;23820:17;23847:5;23820:33;;23864:15;23882:10;:20;;;23911:4;23882:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23864:53;;23928:10;:19;;;23948:10;23960:7;23928:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23571:405;;14082:1;23511:465:::0;:::o;13208:98::-;13261:7;13288:10;13281:17;;13208:98;:::o;18979:380::-;19132:1;19115:19;;:5;:19;;;19107:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19213:1;19194:21;;:7;:21;;;19186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19297:6;19267:11;:18;19279:5;19267:18;;;;;;;;;;;;;;;:27;19286:7;19267:27;;;;;;;;;;;;;;;:36;;;;19335:7;19319:32;;19328:5;19319:32;;;19344:6;19319:32;;;;;;:::i;:::-;;;;;;;;18979:380;;;:::o;25923:2758::-;26036:1;26020:18;;:4;:18;;;26012:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26113:1;26099:16;;:2;:16;;;26091:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26174:14;;;;;;;;;;;:43;;;;26192:19;:25;26212:4;26192:25;;;;;;;;;;;;;;;;;;;;;;;;;26174:43;:70;;;;26221:19;:23;26241:2;26221:23;;;;;;;;;;;;;;;;;;;;;;;;;26174:70;26166:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;26307:1;26297:6;:11;26293:93;;26325:28;26341:4;26347:2;26351:1;26325:15;:28::i;:::-;26368:7;;26293:93;26402:26;;;;;;;;;;;26398:752;;;26468:13;;;;;;;;;;;26460:21;;:4;:21;;;:44;;;;26491:13;;;;;;;;;;;26485:19;;:2;:19;;;26460:44;26459:99;;;;;26527:25;:31;26553:4;26527:31;;;;;;;;;;;;;;;;;;;;;;;;;26526:32;26459:99;:151;;;;;26581:25;:29;26607:2;26581:29;;;;;;;;;;;;;;;;;;;;;;;;;26580:30;26459:151;26455:684;;;26657:13;;;;;;;;;;;26649:21;;:4;:21;;;26645:479;;26739:23;;26729:6;:33;;26695:180;;;;;;;;;;;;:::i;:::-;;;;;;;;;26645:479;;;26968:24;;26958:6;:34;;26924:180;;;;;;;;;;;;:::i;:::-;;;;;;;;;26645:479;26455:684;26398:752;27156:28;27187:24;27205:4;27187:9;:24::i;:::-;27156:55;;27224:12;27263:18;;27239:20;:42;;27224:57;;27298:7;:33;;;;;27323:8;;;;;;;;;;;27322:9;27298:33;:69;;;;;27354:13;;;;;;;;;;;27348:19;;:2;:19;;;27298:69;:124;;;;;27421:1;27402:16;;27384:15;;:34;;;;:::i;:::-;:38;27298:124;:152;;;;;27439:11;;;;;;;;;;;27298:152;27294:294;;;27488:4;27477:8;;:15;;;;;;;;;;;;;;;;;;27509:34;27524:18;;27509:14;:34::i;:::-;27571:5;27560:8;;:16;;;;;;;;;;;;;;;;;;27294:294;27600:18;27633:19;:25;27653:4;27633:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;27662:19;:23;27682:2;27662:23;;;;;;;;;;;;;;;;;;;;;;;;;27633:52;:64;;;;27689:8;;;;;;;;;;;27633:64;27629:333;;;27727:1;27714:14;;27629:333;;;27758:13;;;;;;;;;;;27750:21;;:4;:21;;;27746:216;;27801:15;;27788:28;;27746:216;;;27844:13;;;;;;;;;;;27838:19;;:2;:19;;;27834:128;;27887:16;;27874:29;;27834:128;;;27949:1;27936:14;;27834:128;27746:216;27629:333;27991:1;27978:10;:14;27974:183;;;28009:12;28048:3;28034:10;28025:6;:19;;;;:::i;:::-;28024:27;;;;:::i;:::-;28009:42;;28084:4;28075:6;:13;;;;:::i;:::-;28066:22;;28103:42;28119:4;28133;28140;28103:15;:42::i;:::-;27994:163;27974:183;28173:21;;;;;;;;;;;28169:459;;;28226:29;:35;28256:4;28226:35;;;;;;;;;;;;;;;;;;;;;;;;;28225:36;:92;;;;;28284:29;:33;28314:2;28284:33;;;;;;;;;;;;;;;;;;;;;;;;;28283:34;28225:92;:132;;;;;28344:13;;;;;;;;;;;28338:19;;:2;:19;;;;28225:132;28221:396;;;28392:15;28411:13;28421:2;28411:9;:13::i;:::-;28392:32;;28493:15;;28483:6;28473:7;:16;;;;:::i;:::-;:35;;28443:158;;;;;;;;;;;;:::i;:::-;;;;;;;;;28373:244;28221:396;28169:459;28640:33;28656:4;28662:2;28666:6;28640:15;:33::i;:::-;26001:2680;;;25923:2758;;;;:::o;9067:317::-;9182:6;9157:21;:31;;9149:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9236:12;9254:9;:14;;9276:6;9254:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9235:52;;;9306:7;9298:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;9138:246;9067:317;;:::o;17232:733::-;17390:1;17372:20;;:6;:20;;;17364:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;17474:1;17453:23;;:9;:23;;;17445:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17529:47;17550:6;17558:9;17569:6;17529:20;:47::i;:::-;17589:21;17613:9;:17;17623:6;17613:17;;;;;;;;;;;;;;;;17589:41;;17666:6;17649:13;:23;;17641:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;17787:6;17771:13;:22;17751:9;:17;17761:6;17751:17;;;;;;;;;;;;;;;:42;;;;17839:6;17815:9;:20;17825:9;17815:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;17880:9;17863:35;;17872:6;17863:35;;;17891:6;17863:35;;;;;;:::i;:::-;;;;;;;;17911:46;17931:6;17939:9;17950:6;17911:19;:46::i;:::-;17353:612;17232:733;;;:::o;29114:1354::-;29178:22;29203:21;29178:46;;29237:21;29275:1;29261:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29237:40;;29306:4;29288;29293:1;29288:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;29332:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29322:4;29327:1;29322:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;29367:15;;;;;;;;;;;:66;;;29448:11;29474:1;29490:4;29517;29537:15;29367:186;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29566:18;29611:14;29587:21;:38;;;;:::i;:::-;29566:59;;29636:24;29738:16;;29720:15;;:34;;;;:::i;:::-;29697:18;;29677:17;;:38;;;;:::i;:::-;29663:10;:53;;;;:::i;:::-;:92;;;;:::i;:::-;29636:119;;29766:19;29801:16;29788:10;:29;;;;:::i;:::-;29766:51;;29853:1;29834:16;:20;29830:104;;;29870:52;29905:16;29878:15;;;;;;;;;;;29870:34;;;;:52;;;;:::i;:::-;29830:104;29964:1;29950:11;:15;29946:458;;;29981:24;30022:1;30008:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29981:43;;30052:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30039:7;30047:1;30039:10;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;30110:42;30089:7;30097:1;30089:10;;;;;;;;:::i;:::-;;;;;;;:64;;;;;;;;;;;30170:15;;;;;;;;;;;:66;;;30244:11;30276:1;30296:7;30330:6;30374:3;30356:15;:21;;;;:::i;:::-;30170:222;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29966:438;29946:458;30421:39;30436:11;30449:10;30421:39;;;;;;;:::i;:::-;;;;;;;;29167:1301;;;;;29114:1354;:::o;19367:125::-;;;;:::o;19500:124::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:152::-;4220:9;4253:37;4284:5;4253:37;:::i;:::-;4240:50;;4144:152;;;:::o;4302:183::-;4415:63;4472:5;4415:63;:::i;:::-;4410:3;4403:76;4302:183;;:::o;4491:274::-;4610:4;4648:2;4637:9;4633:18;4625:26;;4661:97;4755:1;4744:9;4740:17;4731:6;4661:97;:::i;:::-;4491:274;;;;:::o;4771:329::-;4830:6;4879:2;4867:9;4858:7;4854:23;4850:32;4847:119;;;4885:79;;:::i;:::-;4847:119;5005:1;5030:53;5075:7;5066:6;5055:9;5051:22;5030:53;:::i;:::-;5020:63;;4976:117;4771:329;;;;:::o;5106:619::-;5183:6;5191;5199;5248:2;5236:9;5227:7;5223:23;5219:32;5216:119;;;5254:79;;:::i;:::-;5216:119;5374:1;5399:53;5444:7;5435:6;5424:9;5420:22;5399:53;:::i;:::-;5389:63;;5345:117;5501:2;5527:53;5572:7;5563:6;5552:9;5548:22;5527:53;:::i;:::-;5517:63;;5472:118;5629:2;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5600:118;5106:619;;;;;:::o;5731:116::-;5801:21;5816:5;5801:21;:::i;:::-;5794:5;5791:32;5781:60;;5837:1;5834;5827:12;5781:60;5731:116;:::o;5853:133::-;5896:5;5934:6;5921:20;5912:29;;5950:30;5974:5;5950:30;:::i;:::-;5853:133;;;;:::o;5992:323::-;6048:6;6097:2;6085:9;6076:7;6072:23;6068:32;6065:119;;;6103:79;;:::i;:::-;6065:119;6223:1;6248:50;6290:7;6281:6;6270:9;6266:22;6248:50;:::i;:::-;6238:60;;6194:114;5992:323;;;;:::o;6321:86::-;6356:7;6396:4;6389:5;6385:16;6374:27;;6321:86;;;:::o;6413:112::-;6496:22;6512:5;6496:22;:::i;:::-;6491:3;6484:35;6413:112;;:::o;6531:214::-;6620:4;6658:2;6647:9;6643:18;6635:26;;6671:67;6735:1;6724:9;6720:17;6711:6;6671:67;:::i;:::-;6531:214;;;;:::o;6751:619::-;6828:6;6836;6844;6893:2;6881:9;6872:7;6868:23;6864:32;6861:119;;;6899:79;;:::i;:::-;6861:119;7019:1;7044:53;7089:7;7080:6;7069:9;7065:22;7044:53;:::i;:::-;7034:63;;6990:117;7146:2;7172:53;7217:7;7208:6;7197:9;7193:22;7172:53;:::i;:::-;7162:63;;7117:118;7274:2;7300:53;7345:7;7336:6;7325:9;7321:22;7300:53;:::i;:::-;7290:63;;7245:118;6751:619;;;;;:::o;7376:118::-;7463:24;7481:5;7463:24;:::i;:::-;7458:3;7451:37;7376:118;;:::o;7500:222::-;7593:4;7631:2;7620:9;7616:18;7608:26;;7644:71;7712:1;7701:9;7697:17;7688:6;7644:71;:::i;:::-;7500:222;;;;:::o;7728:468::-;7793:6;7801;7850:2;7838:9;7829:7;7825:23;7821:32;7818:119;;;7856:79;;:::i;:::-;7818:119;7976:1;8001:53;8046:7;8037:6;8026:9;8022:22;8001:53;:::i;:::-;7991:63;;7947:117;8103:2;8129:50;8171:7;8162:6;8151:9;8147:22;8129:50;:::i;:::-;8119:60;;8074:115;7728:468;;;;;:::o;8202:329::-;8261:6;8310:2;8298:9;8289:7;8285:23;8281:32;8278:119;;;8316:79;;:::i;:::-;8278:119;8436:1;8461:53;8506:7;8497:6;8486:9;8482:22;8461:53;:::i;:::-;8451:63;;8407:117;8202:329;;;;:::o;8537:765::-;8623:6;8631;8639;8647;8696:3;8684:9;8675:7;8671:23;8667:33;8664:120;;;8703:79;;:::i;:::-;8664:120;8823:1;8848:53;8893:7;8884:6;8873:9;8869:22;8848:53;:::i;:::-;8838:63;;8794:117;8950:2;8976:53;9021:7;9012:6;9001:9;8997:22;8976:53;:::i;:::-;8966:63;;8921:118;9078:2;9104:53;9149:7;9140:6;9129:9;9125:22;9104:53;:::i;:::-;9094:63;;9049:118;9206:2;9232:53;9277:7;9268:6;9257:9;9253:22;9232:53;:::i;:::-;9222:63;;9177:118;8537:765;;;;;;;:::o;9308:474::-;9376:6;9384;9433:2;9421:9;9412:7;9408:23;9404:32;9401:119;;;9439:79;;:::i;:::-;9401:119;9559:1;9584:53;9629:7;9620:6;9609:9;9605:22;9584:53;:::i;:::-;9574:63;;9530:117;9686:2;9712:53;9757:7;9748:6;9737:9;9733:22;9712:53;:::i;:::-;9702:63;;9657:118;9308:474;;;;;:::o;9788:180::-;9836:77;9833:1;9826:88;9933:4;9930:1;9923:15;9957:4;9954:1;9947:15;9974:320;10018:6;10055:1;10049:4;10045:12;10035:22;;10102:1;10096:4;10092:12;10123:18;10113:81;;10179:4;10171:6;10167:17;10157:27;;10113:81;10241:2;10233:6;10230:14;10210:18;10207:38;10204:84;;10260:18;;:::i;:::-;10204:84;10025:269;9974:320;;;:::o;10300:227::-;10440:34;10436:1;10428:6;10424:14;10417:58;10509:10;10504:2;10496:6;10492:15;10485:35;10300:227;:::o;10533:366::-;10675:3;10696:67;10760:2;10755:3;10696:67;:::i;:::-;10689:74;;10772:93;10861:3;10772:93;:::i;:::-;10890:2;10885:3;10881:12;10874:19;;10533:366;;;:::o;10905:419::-;11071:4;11109:2;11098:9;11094:18;11086:26;;11158:9;11152:4;11148:20;11144:1;11133:9;11129:17;11122:47;11186:131;11312:4;11186:131;:::i;:::-;11178:139;;10905:419;;;:::o;11330:182::-;11470:34;11466:1;11458:6;11454:14;11447:58;11330:182;:::o;11518:366::-;11660:3;11681:67;11745:2;11740:3;11681:67;:::i;:::-;11674:74;;11757:93;11846:3;11757:93;:::i;:::-;11875:2;11870:3;11866:12;11859:19;;11518:366;;;:::o;11890:419::-;12056:4;12094:2;12083:9;12079:18;12071:26;;12143:9;12137:4;12133:20;12129:1;12118:9;12114:17;12107:47;12171:131;12297:4;12171:131;:::i;:::-;12163:139;;11890:419;;;:::o;12315:232::-;12455:34;12451:1;12443:6;12439:14;12432:58;12524:15;12519:2;12511:6;12507:15;12500:40;12315:232;:::o;12553:366::-;12695:3;12716:67;12780:2;12775:3;12716:67;:::i;:::-;12709:74;;12792:93;12881:3;12792:93;:::i;:::-;12910:2;12905:3;12901:12;12894:19;;12553:366;;;:::o;12925:419::-;13091:4;13129:2;13118:9;13114:18;13106:26;;13178:9;13172:4;13168:20;13164:1;13153:9;13149:17;13142:47;13206:131;13332:4;13206:131;:::i;:::-;13198:139;;12925:419;;;:::o;13350:180::-;13398:77;13395:1;13388:88;13495:4;13492:1;13485:15;13519:4;13516:1;13509:15;13536:102;13578:8;13625:5;13622:1;13618:13;13597:34;;13536:102;;;:::o;13644:848::-;13705:5;13712:4;13736:6;13727:15;;13760:5;13751:14;;13774:712;13795:1;13785:8;13782:15;13774:712;;;13890:4;13885:3;13881:14;13875:4;13872:24;13869:50;;;13899:18;;:::i;:::-;13869:50;13949:1;13939:8;13935:16;13932:451;;;14364:4;14357:5;14353:16;14344:25;;13932:451;14414:4;14408;14404:15;14396:23;;14444:32;14467:8;14444:32;:::i;:::-;14432:44;;13774:712;;;13644:848;;;;;;;:::o;14498:1073::-;14552:5;14743:8;14733:40;;14764:1;14755:10;;14766:5;;14733:40;14792:4;14782:36;;14809:1;14800:10;;14811:5;;14782:36;14878:4;14926:1;14921:27;;;;14962:1;14957:191;;;;14871:277;;14921:27;14939:1;14930:10;;14941:5;;;14957:191;15002:3;14992:8;14989:17;14986:43;;;15009:18;;:::i;:::-;14986:43;15058:8;15055:1;15051:16;15042:25;;15093:3;15086:5;15083:14;15080:40;;;15100:18;;:::i;:::-;15080:40;15133:5;;;14871:277;;15257:2;15247:8;15244:16;15238:3;15232:4;15229:13;15225:36;15207:2;15197:8;15194:16;15189:2;15183:4;15180:12;15176:35;15160:111;15157:246;;;15313:8;15307:4;15303:19;15294:28;;15348:3;15341:5;15338:14;15335:40;;;15355:18;;:::i;:::-;15335:40;15388:5;;15157:246;15428:42;15466:3;15456:8;15450:4;15447:1;15428:42;:::i;:::-;15413:57;;;;15502:4;15497:3;15493:14;15486:5;15483:25;15480:51;;;15511:18;;:::i;:::-;15480:51;15560:4;15553:5;15549:16;15540:25;;14498:1073;;;;;;:::o;15577:281::-;15635:5;15659:23;15677:4;15659:23;:::i;:::-;15651:31;;15703:25;15719:8;15703:25;:::i;:::-;15691:37;;15747:104;15784:66;15774:8;15768:4;15747:104;:::i;:::-;15738:113;;15577:281;;;;:::o;15864:180::-;15912:77;15909:1;15902:88;16009:4;16006:1;15999:15;16033:4;16030:1;16023:15;16050:185;16090:1;16107:20;16125:1;16107:20;:::i;:::-;16102:25;;16141:20;16159:1;16141:20;:::i;:::-;16136:25;;16180:1;16170:35;;16185:18;;:::i;:::-;16170:35;16227:1;16224;16220:9;16215:14;;16050:185;;;;:::o;16241:250::-;16381:34;16377:1;16369:6;16365:14;16358:58;16450:33;16445:2;16437:6;16433:15;16426:58;16241:250;:::o;16497:366::-;16639:3;16660:67;16724:2;16719:3;16660:67;:::i;:::-;16653:74;;16736:93;16825:3;16736:93;:::i;:::-;16854:2;16849:3;16845:12;16838:19;;16497:366;;;:::o;16869:419::-;17035:4;17073:2;17062:9;17058:18;17050:26;;17122:9;17116:4;17112:20;17108:1;17097:9;17093:17;17086:47;17150:131;17276:4;17150:131;:::i;:::-;17142:139;;16869:419;;;:::o;17294:410::-;17334:7;17357:20;17375:1;17357:20;:::i;:::-;17352:25;;17391:20;17409:1;17391:20;:::i;:::-;17386:25;;17446:1;17443;17439:9;17468:30;17486:11;17468:30;:::i;:::-;17457:41;;17647:1;17638:7;17634:15;17631:1;17628:22;17608:1;17601:9;17581:83;17558:139;;17677:18;;:::i;:::-;17558:139;17342:362;17294:410;;;;:::o;17710:232::-;17850:34;17846:1;17838:6;17834:14;17827:58;17919:15;17914:2;17906:6;17902:15;17895:40;17710:232;:::o;17948:366::-;18090:3;18111:67;18175:2;18170:3;18111:67;:::i;:::-;18104:74;;18187:93;18276:3;18187:93;:::i;:::-;18305:2;18300:3;18296:12;18289:19;;17948:366;;;:::o;18320:419::-;18486:4;18524:2;18513:9;18509:18;18501:26;;18573:9;18567:4;18563:20;18559:1;18548:9;18544:17;18537:47;18601:131;18727:4;18601:131;:::i;:::-;18593:139;;18320:419;;;:::o;18745:332::-;18866:4;18904:2;18893:9;18889:18;18881:26;;18917:71;18985:1;18974:9;18970:17;18961:6;18917:71;:::i;:::-;18998:72;19066:2;19055:9;19051:18;19042:6;18998:72;:::i;:::-;18745:332;;;;;:::o;19083:191::-;19123:3;19142:20;19160:1;19142:20;:::i;:::-;19137:25;;19176:20;19194:1;19176:20;:::i;:::-;19171:25;;19219:1;19216;19212:9;19205:16;;19240:3;19237:1;19234:10;19231:36;;;19247:18;;:::i;:::-;19231:36;19083:191;;;;:::o;19280:237::-;19420:34;19416:1;19408:6;19404:14;19397:58;19489:20;19484:2;19476:6;19472:15;19465:45;19280:237;:::o;19523:366::-;19665:3;19686:67;19750:2;19745:3;19686:67;:::i;:::-;19679:74;;19762:93;19851:3;19762:93;:::i;:::-;19880:2;19875:3;19871:12;19864:19;;19523:366;;;:::o;19895:419::-;20061:4;20099:2;20088:9;20084:18;20076:26;;20148:9;20142:4;20138:20;20134:1;20123:9;20119:17;20112:47;20176:131;20302:4;20176:131;:::i;:::-;20168:139;;19895:419;;;:::o;20320:223::-;20460:34;20456:1;20448:6;20444:14;20437:58;20529:6;20524:2;20516:6;20512:15;20505:31;20320:223;:::o;20549:366::-;20691:3;20712:67;20776:2;20771:3;20712:67;:::i;:::-;20705:74;;20788:93;20877:3;20788:93;:::i;:::-;20906:2;20901:3;20897:12;20890:19;;20549:366;;;:::o;20921:419::-;21087:4;21125:2;21114:9;21110:18;21102:26;;21174:9;21168:4;21164:20;21160:1;21149:9;21145:17;21138:47;21202:131;21328:4;21202:131;:::i;:::-;21194:139;;20921:419;;;:::o;21346:224::-;21486:34;21482:1;21474:6;21470:14;21463:58;21555:7;21550:2;21542:6;21538:15;21531:32;21346:224;:::o;21576:366::-;21718:3;21739:67;21803:2;21798:3;21739:67;:::i;:::-;21732:74;;21815:93;21904:3;21815:93;:::i;:::-;21933:2;21928:3;21924:12;21917:19;;21576:366;;;:::o;21948:419::-;22114:4;22152:2;22141:9;22137:18;22129:26;;22201:9;22195:4;22191:20;22187:1;22176:9;22172:17;22165:47;22229:131;22355:4;22229:131;:::i;:::-;22221:139;;21948:419;;;:::o;22373:227::-;22513:34;22509:1;22501:6;22497:14;22490:58;22582:10;22577:2;22569:6;22565:15;22558:35;22373:227;:::o;22606:366::-;22748:3;22769:67;22833:2;22828:3;22769:67;:::i;:::-;22762:74;;22845:93;22934:3;22845:93;:::i;:::-;22963:2;22958:3;22954:12;22947:19;;22606:366;;;:::o;22978:419::-;23144:4;23182:2;23171:9;23167:18;23159:26;;23231:9;23225:4;23221:20;23217:1;23206:9;23202:17;23195:47;23259:131;23385:4;23259:131;:::i;:::-;23251:139;;22978:419;;;:::o;23403:230::-;23543:34;23539:1;23531:6;23527:14;23520:58;23612:13;23607:2;23599:6;23595:15;23588:38;23403:230;:::o;23639:366::-;23781:3;23802:67;23866:2;23861:3;23802:67;:::i;:::-;23795:74;;23878:93;23967:3;23878:93;:::i;:::-;23996:2;23991:3;23987:12;23980:19;;23639:366;;;:::o;24011:419::-;24177:4;24215:2;24204:9;24200:18;24192:26;;24264:9;24258:4;24254:20;24250:1;24239:9;24235:17;24228:47;24292:131;24418:4;24292:131;:::i;:::-;24284:139;;24011:419;;;:::o;24436:229::-;24576:34;24572:1;24564:6;24560:14;24553:58;24645:12;24640:2;24632:6;24628:15;24621:37;24436:229;:::o;24671:366::-;24813:3;24834:67;24898:2;24893:3;24834:67;:::i;:::-;24827:74;;24910:93;24999:3;24910:93;:::i;:::-;25028:2;25023:3;25019:12;25012:19;;24671:366;;;:::o;25043:419::-;25209:4;25247:2;25236:9;25232:18;25224:26;;25296:9;25290:4;25286:20;25282:1;25271:9;25267:17;25260:47;25324:131;25450:4;25324:131;:::i;:::-;25316:139;;25043:419;;;:::o;25468:223::-;25608:34;25604:1;25596:6;25592:14;25585:58;25677:6;25672:2;25664:6;25660:15;25653:31;25468:223;:::o;25697:366::-;25839:3;25860:67;25924:2;25919:3;25860:67;:::i;:::-;25853:74;;25936:93;26025:3;25936:93;:::i;:::-;26054:2;26049:3;26045:12;26038:19;;25697:366;;;:::o;26069:419::-;26235:4;26273:2;26262:9;26258:18;26250:26;;26322:9;26316:4;26312:20;26308:1;26297:9;26293:17;26286:47;26350:131;26476:4;26350:131;:::i;:::-;26342:139;;26069:419;;;:::o;26494:225::-;26634:34;26630:1;26622:6;26618:14;26611:58;26703:8;26698:2;26690:6;26686:15;26679:33;26494:225;:::o;26725:366::-;26867:3;26888:67;26952:2;26947:3;26888:67;:::i;:::-;26881:74;;26964:93;27053:3;26964:93;:::i;:::-;27082:2;27077:3;27073:12;27066:19;;26725:366;;;:::o;27097:419::-;27263:4;27301:2;27290:9;27286:18;27278:26;;27350:9;27344:4;27340:20;27336:1;27325:9;27321:17;27314:47;27378:131;27504:4;27378:131;:::i;:::-;27370:139;;27097:419;;;:::o;27522:242::-;27662:34;27658:1;27650:6;27646:14;27639:58;27731:25;27726:2;27718:6;27714:15;27707:50;27522:242;:::o;27770:366::-;27912:3;27933:67;27997:2;27992:3;27933:67;:::i;:::-;27926:74;;28009:93;28098:3;28009:93;:::i;:::-;28127:2;28122:3;28118:12;28111:19;;27770:366;;;:::o;28142:419::-;28308:4;28346:2;28335:9;28331:18;28323:26;;28395:9;28389:4;28385:20;28381:1;28370:9;28366:17;28359:47;28423:131;28549:4;28423:131;:::i;:::-;28415:139;;28142:419;;;:::o;28567:143::-;28624:5;28655:6;28649:13;28640:22;;28671:33;28698:5;28671:33;:::i;:::-;28567:143;;;;:::o;28716:351::-;28786:6;28835:2;28823:9;28814:7;28810:23;28806:32;28803:119;;;28841:79;;:::i;:::-;28803:119;28961:1;28986:64;29042:7;29033:6;29022:9;29018:22;28986:64;:::i;:::-;28976:74;;28932:128;28716:351;;;;:::o;29073:332::-;29194:4;29232:2;29221:9;29217:18;29209:26;;29245:71;29313:1;29302:9;29298:17;29289:6;29245:71;:::i;:::-;29326:72;29394:2;29383:9;29379:18;29370:6;29326:72;:::i;:::-;29073:332;;;;;:::o;29411:137::-;29465:5;29496:6;29490:13;29481:22;;29512:30;29536:5;29512:30;:::i;:::-;29411:137;;;;:::o;29554:345::-;29621:6;29670:2;29658:9;29649:7;29645:23;29641:32;29638:119;;;29676:79;;:::i;:::-;29638:119;29796:1;29821:61;29874:7;29865:6;29854:9;29850:22;29821:61;:::i;:::-;29811:71;;29767:125;29554:345;;;;:::o;29905:223::-;30045:34;30041:1;30033:6;30029:14;30022:58;30114:6;30109:2;30101:6;30097:15;30090:31;29905:223;:::o;30134:366::-;30276:3;30297:67;30361:2;30356:3;30297:67;:::i;:::-;30290:74;;30373:93;30462:3;30373:93;:::i;:::-;30491:2;30486:3;30482:12;30475:19;;30134:366;;;:::o;30506:419::-;30672:4;30710:2;30699:9;30695:18;30687:26;;30759:9;30753:4;30749:20;30745:1;30734:9;30730:17;30723:47;30787:131;30913:4;30787:131;:::i;:::-;30779:139;;30506:419;;;:::o;30931:221::-;31071:34;31067:1;31059:6;31055:14;31048:58;31140:4;31135:2;31127:6;31123:15;31116:29;30931:221;:::o;31158:366::-;31300:3;31321:67;31385:2;31380:3;31321:67;:::i;:::-;31314:74;;31397:93;31486:3;31397:93;:::i;:::-;31515:2;31510:3;31506:12;31499:19;;31158:366;;;:::o;31530:419::-;31696:4;31734:2;31723:9;31719:18;31711:26;;31783:9;31777:4;31773:20;31769:1;31758:9;31754:17;31747:47;31811:131;31937:4;31811:131;:::i;:::-;31803:139;;31530:419;;;:::o;31955:224::-;32095:34;32091:1;32083:6;32079:14;32072:58;32164:7;32159:2;32151:6;32147:15;32140:32;31955:224;:::o;32185:366::-;32327:3;32348:67;32412:2;32407:3;32348:67;:::i;:::-;32341:74;;32424:93;32513:3;32424:93;:::i;:::-;32542:2;32537:3;32533:12;32526:19;;32185:366;;;:::o;32557:419::-;32723:4;32761:2;32750:9;32746:18;32738:26;;32810:9;32804:4;32800:20;32796:1;32785:9;32781:17;32774:47;32838:131;32964:4;32838:131;:::i;:::-;32830:139;;32557:419;;;:::o;32982:222::-;33122:34;33118:1;33110:6;33106:14;33099:58;33191:5;33186:2;33178:6;33174:15;33167:30;32982:222;:::o;33210:366::-;33352:3;33373:67;33437:2;33432:3;33373:67;:::i;:::-;33366:74;;33449:93;33538:3;33449:93;:::i;:::-;33567:2;33562:3;33558:12;33551:19;;33210:366;;;:::o;33582:419::-;33748:4;33786:2;33775:9;33771:18;33763:26;;33835:9;33829:4;33825:20;33821:1;33810:9;33806:17;33799:47;33863:131;33989:4;33863:131;:::i;:::-;33855:139;;33582:419;;;:::o;34007:174::-;34147:26;34143:1;34135:6;34131:14;34124:50;34007:174;:::o;34187:366::-;34329:3;34350:67;34414:2;34409:3;34350:67;:::i;:::-;34343:74;;34426:93;34515:3;34426:93;:::i;:::-;34544:2;34539:3;34535:12;34528:19;;34187:366;;;:::o;34559:419::-;34725:4;34763:2;34752:9;34748:18;34740:26;;34812:9;34806:4;34802:20;34798:1;34787:9;34783:17;34776:47;34840:131;34966:4;34840:131;:::i;:::-;34832:139;;34559:419;;;:::o;34984:246::-;35124:34;35120:1;35112:6;35108:14;35101:58;35193:29;35188:2;35180:6;35176:15;35169:54;34984:246;:::o;35236:366::-;35378:3;35399:67;35463:2;35458:3;35399:67;:::i;:::-;35392:74;;35475:93;35564:3;35475:93;:::i;:::-;35593:2;35588:3;35584:12;35577:19;;35236:366;;;:::o;35608:419::-;35774:4;35812:2;35801:9;35797:18;35789:26;;35861:9;35855:4;35851:20;35847:1;35836:9;35832:17;35825:47;35889:131;36015:4;35889:131;:::i;:::-;35881:139;;35608:419;;;:::o;36033:194::-;36073:4;36093:20;36111:1;36093:20;:::i;:::-;36088:25;;36127:20;36145:1;36127:20;:::i;:::-;36122:25;;36171:1;36168;36164:9;36156:17;;36195:1;36189:4;36186:11;36183:37;;;36200:18;;:::i;:::-;36183:37;36033:194;;;;:::o;36233:235::-;36373:34;36369:1;36361:6;36357:14;36350:58;36442:18;36437:2;36429:6;36425:15;36418:43;36233:235;:::o;36474:366::-;36616:3;36637:67;36701:2;36696:3;36637:67;:::i;:::-;36630:74;;36713:93;36802:3;36713:93;:::i;:::-;36831:2;36826:3;36822:12;36815:19;;36474:366;;;:::o;36846:419::-;37012:4;37050:2;37039:9;37035:18;37027:26;;37099:9;37093:4;37089:20;37085:1;37074:9;37070:17;37063:47;37127:131;37253:4;37127:131;:::i;:::-;37119:139;;36846:419;;;:::o;37271:179::-;37411:31;37407:1;37399:6;37395:14;37388:55;37271:179;:::o;37456:366::-;37598:3;37619:67;37683:2;37678:3;37619:67;:::i;:::-;37612:74;;37695:93;37784:3;37695:93;:::i;:::-;37813:2;37808:3;37804:12;37797:19;;37456:366;;;:::o;37828:419::-;37994:4;38032:2;38021:9;38017:18;38009:26;;38081:9;38075:4;38071:20;38067:1;38056:9;38052:17;38045:47;38109:131;38235:4;38109:131;:::i;:::-;38101:139;;37828:419;;;:::o;38253:147::-;38354:11;38391:3;38376:18;;38253:147;;;;:::o;38406:114::-;;:::o;38526:398::-;38685:3;38706:83;38787:1;38782:3;38706:83;:::i;:::-;38699:90;;38798:93;38887:3;38798:93;:::i;:::-;38916:1;38911:3;38907:11;38900:18;;38526:398;;;:::o;38930:379::-;39114:3;39136:147;39279:3;39136:147;:::i;:::-;39129:154;;39300:3;39293:10;;38930:379;;;:::o;39315:245::-;39455:34;39451:1;39443:6;39439:14;39432:58;39524:28;39519:2;39511:6;39507:15;39500:53;39315:245;:::o;39566:366::-;39708:3;39729:67;39793:2;39788:3;39729:67;:::i;:::-;39722:74;;39805:93;39894:3;39805:93;:::i;:::-;39923:2;39918:3;39914:12;39907:19;;39566:366;;;:::o;39938:419::-;40104:4;40142:2;40131:9;40127:18;40119:26;;40191:9;40185:4;40181:20;40177:1;40166:9;40162:17;40155:47;40219:131;40345:4;40219:131;:::i;:::-;40211:139;;39938:419;;;:::o;40363:225::-;40503:34;40499:1;40491:6;40487:14;40480:58;40572:8;40567:2;40559:6;40555:15;40548:33;40363:225;:::o;40594:366::-;40736:3;40757:67;40821:2;40816:3;40757:67;:::i;:::-;40750:74;;40833:93;40922:3;40833:93;:::i;:::-;40951:2;40946:3;40942:12;40935:19;;40594:366;;;:::o;40966:419::-;41132:4;41170:2;41159:9;41155:18;41147:26;;41219:9;41213:4;41209:20;41205:1;41194:9;41190:17;41183:47;41247:131;41373:4;41247:131;:::i;:::-;41239:139;;40966:419;;;:::o;41391:180::-;41439:77;41436:1;41429:88;41536:4;41533:1;41526:15;41560:4;41557:1;41550:15;41577:180;41625:77;41622:1;41615:88;41722:4;41719:1;41712:15;41746:4;41743:1;41736:15;41763:143;41820:5;41851:6;41845:13;41836:22;;41867:33;41894:5;41867:33;:::i;:::-;41763:143;;;;:::o;41912:351::-;41982:6;42031:2;42019:9;42010:7;42006:23;42002:32;41999:119;;;42037:79;;:::i;:::-;41999:119;42157:1;42182:64;42238:7;42229:6;42218:9;42214:22;42182:64;:::i;:::-;42172:74;;42128:128;41912:351;;;;:::o;42269:85::-;42314:7;42343:5;42332:16;;42269:85;;;:::o;42360:158::-;42418:9;42451:61;42469:42;42478:32;42504:5;42478:32;:::i;:::-;42469:42;:::i;:::-;42451:61;:::i;:::-;42438:74;;42360:158;;;:::o;42524:147::-;42619:45;42658:5;42619:45;:::i;:::-;42614:3;42607:58;42524:147;;:::o;42677:114::-;42744:6;42778:5;42772:12;42762:22;;42677:114;;;:::o;42797:184::-;42896:11;42930:6;42925:3;42918:19;42970:4;42965:3;42961:14;42946:29;;42797:184;;;;:::o;42987:132::-;43054:4;43077:3;43069:11;;43107:4;43102:3;43098:14;43090:22;;42987:132;;;:::o;43125:108::-;43202:24;43220:5;43202:24;:::i;:::-;43197:3;43190:37;43125:108;;:::o;43239:179::-;43308:10;43329:46;43371:3;43363:6;43329:46;:::i;:::-;43407:4;43402:3;43398:14;43384:28;;43239:179;;;;:::o;43424:113::-;43494:4;43526;43521:3;43517:14;43509:22;;43424:113;;;:::o;43573:732::-;43692:3;43721:54;43769:5;43721:54;:::i;:::-;43791:86;43870:6;43865:3;43791:86;:::i;:::-;43784:93;;43901:56;43951:5;43901:56;:::i;:::-;43980:7;44011:1;43996:284;44021:6;44018:1;44015:13;43996:284;;;44097:6;44091:13;44124:63;44183:3;44168:13;44124:63;:::i;:::-;44117:70;;44210:60;44263:6;44210:60;:::i;:::-;44200:70;;44056:224;44043:1;44040;44036:9;44031:14;;43996:284;;;44000:14;44296:3;44289:10;;43697:608;;;43573:732;;;;:::o;44311:831::-;44574:4;44612:3;44601:9;44597:19;44589:27;;44626:71;44694:1;44683:9;44679:17;44670:6;44626:71;:::i;:::-;44707:80;44783:2;44772:9;44768:18;44759:6;44707:80;:::i;:::-;44834:9;44828:4;44824:20;44819:2;44808:9;44804:18;44797:48;44862:108;44965:4;44956:6;44862:108;:::i;:::-;44854:116;;44980:72;45048:2;45037:9;45033:18;45024:6;44980:72;:::i;:::-;45062:73;45130:3;45119:9;45115:19;45106:6;45062:73;:::i;:::-;44311:831;;;;;;;;:::o;45148:720::-;45383:4;45421:3;45410:9;45406:19;45398:27;;45435:79;45511:1;45500:9;45496:17;45487:6;45435:79;:::i;:::-;45561:9;45555:4;45551:20;45546:2;45535:9;45531:18;45524:48;45589:108;45692:4;45683:6;45589:108;:::i;:::-;45581:116;;45707:72;45775:2;45764:9;45760:18;45751:6;45707:72;:::i;:::-;45789;45857:2;45846:9;45842:18;45833:6;45789:72;:::i;:::-;45148:720;;;;;;;:::o
Swarm Source
ipfs://1a0134b98157214382e28eb2039b57bb61689fc8abaa7e31e1d3fc2286e254ef
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.