ERC-20
Overview
Max Total Supply
1,000,000 FARM
Holders
6
Market
Price
$0.00 @ 0.000000 S
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
2,998.90456933095888866 FARMValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
FARMER
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2025-03-02 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; // OpenZeppelin Contracts v5.0.1 /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, 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 from, address to, 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); } /** * @dev Contract module that helps prevent reentrant calls to a function. */ abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } modifier nonReentrant() { require(_status != _ENTERED, "R1"); _status = _ENTERED; _; _status = _NOT_ENTERED; } } /** * @dev Contract module which provides a basic access control mechanism */ abstract contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor(address initialOwner) { if (initialOwner == address(0)) { revert("O1"); } _transferOwnership(initialOwner); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal view virtual { require(owner() == msg.sender, "O2"); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "O1"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } /** * @dev Implementation of the {IERC20} interface. */ abstract contract ERC20 is IERC20 { 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 returns (string memory) { return _name; } function symbol() public view virtual returns (string memory) { return _symbol; } function decimals() public view virtual returns (uint8) { return 18; } function totalSupply() public view virtual returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual returns (uint256) { return _balances[account]; } function transfer(address to, uint256 amount) public virtual returns (bool) { address owner = msg.sender; _transfer(owner, to, amount); return true; } function allowance(address owner, address spender) public view virtual returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual returns (bool) { address owner = msg.sender; _approve(owner, spender, amount); return true; } function transferFrom(address from, address to, uint256 amount) public virtual returns (bool) { address spender = msg.sender; _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0) && to != address(0), "E1"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "E2"); unchecked { _balances[from] = fromBalance - amount; _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "E3"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0) && spender != address(0), "E4"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "E5"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} } interface IMetropolisRouter { function factory() external pure returns (address); function WETH() external pure returns (address); // Mevcut fonksiyonlar 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 swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); // Yeni eklenen fonksiyonlar 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 IMetropolisFactory { function getPair(address tokenA, address tokenB) external view returns (address pair); function createPair(address tokenA, address tokenB) external returns (address pair); } // Pair interface'ini de ekleyelim interface IMetropolisPair { function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); 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 sync() external; } // FARMER Token Contract contract FARMER is ERC20, ReentrancyGuard, Ownable { // Constants uint256 private constant TOTAL_SUPPLY = 1_000_000 * 10**18; uint256 private constant TAX_RATE = 5; // 5% uint256 private constant LIQUIDITY_TAX = 25; // 2.5% uint256 private constant AIRDROP_TAX = 25; // 2.5% uint256 private constant MIN_HOLDER_AMOUNT = 10 * 10**18; // 10 tokens minimum for holder status uint256 private constant MIN_TOKENS_FOR_PROCESS = 100 * 10**18; // 100 tokens minimum for processing uint256 private constant SWAP_PERCENTAGE = 75; // 75% will be swapped uint256 private constant LIQUIDITY_PERCENTAGE = 25; // 25% will be used for liquidity uint256 private constant MAX_SLIPPAGE = 30; // 30% slippage tolerance // Metropolis DEX addresses IMetropolisRouter public metropolisRouter; IMetropolisFactory public metropolisFactory; address public sonicToken; address public liquidityPair; // Holder tracking mapping(address => bool) public isHolder; address[] public holders; // Events event LiquidityAdded(uint256 tokenAmount, uint256 sonicAmount); event AirdropDistributed(uint256 amount, uint256 holdersCount); event SwapFailed(string reason); event LiquidityAddFailed(string reason); event AirdropFailed(string reason); event ProcessStarted(uint256 tokensForLiquidity, uint256 tokensForAirdrop); event SwapSuccessful(uint256 tokensSwapped, uint256 wethReceived); event SwapAndLiquidityProcessed( uint256 tokensSwapped, uint256 wethReceived, uint256 tokensIntoLiquidity, uint256 wethIntoLiquidity ); event PairReservesUpdated(uint256 farmReserve, uint256 wethReserve); event ApprovalRefreshed(address token, address spender, uint256 amount); event ContractInitialized(address router, address factory, address sonic, address pair); uint256 private _pendingLiquidityTokens; uint256 private _pendingAirdropTokens; bool private _initialized; constructor() ERC20("FARMER", "FARM") Ownable(msg.sender) { address _metropolisRouter = 0x95a7e403d7cF20F675fF9273D66e94d35ba49fA3; address _metropolisFactory = 0x1570300e9cFEC66c9Fb0C8bc14366C86EB170Ad0; address _sonicToken = 0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38; require(_metropolisRouter != address(0) && _metropolisFactory != address(0) && _sonicToken != address(0), "F1"); metropolisRouter = IMetropolisRouter(_metropolisRouter); metropolisFactory = IMetropolisFactory(_metropolisFactory); sonicToken = _sonicToken; _mint(address(this), TOTAL_SUPPLY); } function initialize() external onlyOwner { require(!_initialized, "F2"); _initialized = true; // Try to get existing pair first liquidityPair = metropolisFactory.getPair(address(this), sonicToken); // If pair doesn't exist, create it if (liquidityPair == address(0)) { liquidityPair = metropolisFactory.createPair(address(this), sonicToken); } require(liquidityPair != address(0), "F3"); _approve(address(this), address(metropolisRouter), type(uint256).max); require(IERC20(sonicToken).approve(address(metropolisRouter), type(uint256).max), "F4"); IERC20(sonicToken).approve(liquidityPair, type(uint256).max); IERC20(address(this)).approve(liquidityPair, type(uint256).max); emit ContractInitialized(address(metropolisRouter), address(metropolisFactory), sonicToken, liquidityPair); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual override { super._beforeTokenTransfer(from, to, amount); } function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual override { super._afterTokenTransfer(from, to, amount); } function _transfer( address from, address to, uint256 amount ) internal virtual override { require(from != address(0) && to != address(0), "Transfer to/from zero address"); // Skip tax for owner and contract transfers if (from == owner() || to == owner() || from == address(this) || to == address(this) || !_initialized) { super._transfer(from, to, amount); _updateHolder(from); _updateHolder(to); return; } bool isSellOrBuy = to == liquidityPair || from == liquidityPair; if (isSellOrBuy) { // Calculate tax amount (5%) uint256 totalTax = (amount * TAX_RATE) / 100; uint256 transferAmount = amount - totalTax; // First transfer main amount to recipient super._transfer(from, to, transferAmount); // Then transfer tax to contract super._transfer(from, address(this), totalTax); // Split tax between liquidity and airdrop (2.5% each) _pendingLiquidityTokens += (totalTax * LIQUIDITY_TAX) / 100; // 2.5% for liquidity _pendingAirdropTokens += (totalTax * AIRDROP_TAX) / 100; // 2.5% for airdrop // Try to process if we have enough tokens if ((_pendingLiquidityTokens >= MIN_TOKENS_FOR_PROCESS || _pendingAirdropTokens >= MIN_TOKENS_FOR_PROCESS) && holders.length > 0) { // Refresh router approvals first _approve(address(this), address(metropolisRouter), type(uint256).max); IERC20(sonicToken).approve(address(metropolisRouter), type(uint256).max); // Then refresh pair approvals IERC20(sonicToken).approve(liquidityPair, type(uint256).max); IERC20(address(this)).approve(liquidityPair, type(uint256).max); try this.processLiquidityAndAirdrop() { // Process successful } catch Error(string memory reason) { emit SwapFailed(string(abi.encodePacked("Auto process failed: ", reason))); } catch { emit SwapFailed("Unknown error in automatic processing"); } } } else { // Normal transfer without tax super._transfer(from, to, amount); } // Update holder status for both addresses _updateHolder(from); _updateHolder(to); } function _updateHolder(address account) private { if (account != liquidityPair && account != address(this)) { uint256 balance = balanceOf(account); bool isCurrentlyHolder = isHolder[account]; if (balance >= MIN_HOLDER_AMOUNT && !isCurrentlyHolder) { isHolder[account] = true; holders.push(account); } else if (balance < MIN_HOLDER_AMOUNT && isCurrentlyHolder) { isHolder[account] = false; _removeHolder(account); } } } function _removeHolder(address account) private { for (uint256 i = 0; i < holders.length; i++) { if (holders[i] == account) { holders[i] = holders[holders.length - 1]; holders.pop(); break; } } } function processLiquidityAndAirdrop() external nonReentrant { require(_pendingLiquidityTokens > 0 || _pendingAirdropTokens > 0, "No pending tokens"); require(holders.length > 0, "No holders"); uint256 totalTokens = _pendingLiquidityTokens + _pendingAirdropTokens; require(totalTokens >= MIN_TOKENS_FOR_PROCESS, "Insufficient tokens for processing"); emit ProcessStarted(_pendingLiquidityTokens, _pendingAirdropTokens); // Reset pending amounts uint256 tempLiquidityTokens = _pendingLiquidityTokens; uint256 tempAirdropTokens = _pendingAirdropTokens; _pendingLiquidityTokens = 0; _pendingAirdropTokens = 0; // Keep 25% of tokens for liquidity uint256 tokensForLiquidity = (totalTokens * LIQUIDITY_PERCENTAGE) / 100; uint256 tokensToSwap = totalTokens - tokensForLiquidity; // First swap 75% of tokens to SONIC uint256 sonicReceived = _processSwap(tokensToSwap); if (sonicReceived == 0) { // If swap fails, restore pending amounts _pendingLiquidityTokens = tempLiquidityTokens; _pendingAirdropTokens = tempAirdropTokens; return; } // Add liquidity with 25% of FARMER tokens and 25% of received SONIC uint256 sonicForLiquidity = (sonicReceived * LIQUIDITY_PERCENTAGE) / 100; if (sonicForLiquidity > 0) { _processLiquidity(tokensForLiquidity, sonicForLiquidity); } // Distribute remaining SONIC as airdrop (75% of received SONIC) uint256 sonicForAirdrop = sonicReceived - sonicForLiquidity; if (sonicForAirdrop > 0) { _processAirdrop(sonicForAirdrop); } } function _processSwap(uint256 totalTokens) private returns (uint256) { if (totalTokens == 0) return 0; // Refresh approvals first _approve(address(this), address(metropolisRouter), type(uint256).max); IERC20(sonicToken).approve(address(metropolisRouter), type(uint256).max); // Sync pair first and check success try IMetropolisPair(liquidityPair).sync() { (uint256 farmReserve, uint256 wethReserve) = getPairReserves(); emit PairReservesUpdated(farmReserve, wethReserve); } catch Error(string memory reason) { emit SwapFailed(string(abi.encodePacked("Pair sync failed: ", reason))); return 0; } address[] memory path = new address[](2); path[0] = address(this); path[1] = sonicToken; uint256 initialSonicBalance = IERC20(sonicToken).balanceOf(address(this)); try metropolisRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens( totalTokens, 0, // minOutput path, address(this), // Hedef adres kontrat olmalı block.timestamp + 300 ) { uint256 finalSonicBalance = IERC20(sonicToken).balanceOf(address(this)); uint256 sonicReceived = finalSonicBalance - initialSonicBalance; // Swap başarılı oldu mu kontrol et require(sonicReceived > 0, "No SONIC received after swap"); emit SwapSuccessful(totalTokens, sonicReceived); return sonicReceived; } catch Error(string memory reason) { emit SwapFailed(string(abi.encodePacked("Swap failed: ", reason))); return 0; } catch { emit SwapFailed("Unknown error in swap"); return 0; } } function _processLiquidity(uint256 tokensForLiquidity, uint256 sonicForLiquidity) private { if (tokensForLiquidity == 0 || sonicForLiquidity == 0) return; // Check router approvals _approve(address(this), address(metropolisRouter), tokensForLiquidity); IERC20(sonicToken).approve(address(metropolisRouter), sonicForLiquidity); try metropolisRouter.addLiquidity( address(this), sonicToken, tokensForLiquidity, sonicForLiquidity, tokensForLiquidity * (100 - MAX_SLIPPAGE) / 100, // 30% slippage tolerance sonicForLiquidity * (100 - MAX_SLIPPAGE) / 100, // 30% slippage tolerance address(this), block.timestamp + 300 ) { emit LiquidityAdded(tokensForLiquidity, sonicForLiquidity); } catch Error(string memory reason) { emit LiquidityAddFailed(reason); } catch { emit LiquidityAddFailed("Unknown error in addLiquidity"); } } function _processAirdrop(uint256 sonicAmount) private { if (sonicAmount == 0 || holders.length == 0) return; uint256 amountPerHolder = sonicAmount / holders.length; if (amountPerHolder == 0) return; for (uint256 i = 0; i < holders.length && i < 100; i++) { if (holders[i] != address(0)) { try IERC20(sonicToken).transfer(holders[i], amountPerHolder) { // Transfer successful } catch { continue; } } } emit AirdropDistributed(sonicAmount, holders.length); } // View functions function getHolderCount() external view returns (uint256) { return holders.length; } function getHolders() external view returns (address[] memory) { return holders; } // Initial liquidity function (must be called by owner with ETH) function addInitialLiquidity(uint256 tokenAmount) external payable onlyOwner { require(msg.value > 0, "Must provide ETH for initial liquidity"); require(tokenAmount > 0, "Must provide token amount for initial liquidity"); require( IERC20(address(this)).balanceOf(address(this)) >= tokenAmount, "Insufficient token balance in contract" ); _approve(address(this), address(metropolisRouter), tokenAmount); try metropolisRouter.addLiquidityETH{value: msg.value}( address(this), tokenAmount, 0, 0, msg.sender, block.timestamp ) { emit LiquidityAdded(tokenAmount, msg.value); } catch { _approve(address(this), address(metropolisRouter), 0); revert("Failed to add liquidity"); } uint256 remainingETH = address(this).balance; if (remainingETH > 0) { payable(msg.sender).transfer(remainingETH); } } function setRouter(address _router) external onlyOwner { require(_router != address(0), "Invalid router address"); metropolisRouter = IMetropolisRouter(_router); } function rescueTokens(address _token, uint256 _amount) external onlyOwner { require(_token != address(this), "Cannot rescue FARMER tokens"); IERC20(_token).transfer(owner(), _amount); } // Transfer tokens to owner function withdrawTokensToOwner(uint256 amount) external onlyOwner { require( IERC20(address(this)).balanceOf(address(this)) >= amount, "Insufficient balance" ); _transfer(address(this), msg.sender, amount); } // View functions for pending amounts function getPendingLiquidityTokens() external view returns (uint256) { return _pendingLiquidityTokens; } function getPendingAirdropTokens() external view returns (uint256) { return _pendingAirdropTokens; } // Manual trigger for processing (only owner) function triggerProcessing() external onlyOwner { require(_pendingLiquidityTokens > 0 || _pendingAirdropTokens > 0, "No pending tokens"); require(holders.length > 0, "No holders"); try this.processLiquidityAndAirdrop() { // Process successful } catch { emit ProcessStarted(_pendingLiquidityTokens, _pendingAirdropTokens); } } function checkAndRefreshAllowances() external onlyOwner { uint256 farmAllowance = IERC20(address(this)).allowance(address(this), address(metropolisRouter)); if (farmAllowance < TOTAL_SUPPLY) { _approve(address(this), address(metropolisRouter), TOTAL_SUPPLY); } uint256 wethBalance = IERC20(sonicToken).balanceOf(address(this)); if (wethBalance > 0) { uint256 wethAllowance = IERC20(sonicToken).allowance(address(this), address(metropolisRouter)); if (wethAllowance < wethBalance) { IERC20(sonicToken).approve(address(metropolisRouter), type(uint256).max); } } } // Debug function function getSwapInfo() external view returns ( uint256 contractBalance, uint256 routerAllowance, bool pairExists, address pair, uint256 pendingLiq, uint256 pendingAirdrop ) { contractBalance = IERC20(address(this)).balanceOf(address(this)); routerAllowance = IERC20(address(this)).allowance(address(this), address(metropolisRouter)); pair = IMetropolisFactory(metropolisRouter.factory()).getPair(address(this), sonicToken); pairExists = pair != address(0); pendingLiq = _pendingLiquidityTokens; pendingAirdrop = _pendingAirdropTokens; } function getPairReserves() public view returns (uint256 farmReserve, uint256 wethReserve) { (uint112 reserve0, uint112 reserve1,) = IMetropolisPair(liquidityPair).getReserves(); address token0 = IMetropolisPair(liquidityPair).token0(); if (token0 == address(this)) { return (uint256(reserve0), uint256(reserve1)); } return (uint256(reserve1), uint256(reserve0)); } function getMinimumOutput(uint256 amountIn) public view returns (uint256) { (uint256 farmReserve, uint256 wethReserve) = getPairReserves(); if (farmReserve == 0 || wethReserve == 0) return 0; uint256 amountInWithFee = amountIn * 997; // %0.3 işlem ücreti uint256 numerator = amountInWithFee * wethReserve; uint256 denominator = (farmReserve * 1000) + amountInWithFee; return numerator / denominator; } // aprov all function refreshAllApprovals() external onlyOwner { _approve(address(this), address(metropolisRouter), type(uint256).max); IERC20(sonicToken).approve(address(metropolisRouter), type(uint256).max); try IERC20(sonicToken).approve(liquidityPair, type(uint256).max) {} catch {} try IERC20(address(this)).approve(liquidityPair, type(uint256).max) {} catch {} } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"holdersCount","type":"uint256"}],"name":"AirdropDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"AirdropFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ApprovalRefreshed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"router","type":"address"},{"indexed":false,"internalType":"address","name":"factory","type":"address"},{"indexed":false,"internalType":"address","name":"sonic","type":"address"},{"indexed":false,"internalType":"address","name":"pair","type":"address"}],"name":"ContractInitialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"LiquidityAddFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sonicAmount","type":"uint256"}],"name":"LiquidityAdded","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":"farmReserve","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"wethReserve","type":"uint256"}],"name":"PairReservesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensForLiquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensForAirdrop","type":"uint256"}],"name":"ProcessStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"wethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"wethIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquidityProcessed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"SwapFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"wethReceived","type":"uint256"}],"name":"SwapSuccessful","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"addInitialLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkAndRefreshAllowances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHolderCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHolders","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"getMinimumOutput","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPairReserves","outputs":[{"internalType":"uint256","name":"farmReserve","type":"uint256"},{"internalType":"uint256","name":"wethReserve","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPendingAirdropTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPendingLiquidityTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSwapInfo","outputs":[{"internalType":"uint256","name":"contractBalance","type":"uint256"},{"internalType":"uint256","name":"routerAllowance","type":"uint256"},{"internalType":"bool","name":"pairExists","type":"bool"},{"internalType":"address","name":"pair","type":"address"},{"internalType":"uint256","name":"pendingLiq","type":"uint256"},{"internalType":"uint256","name":"pendingAirdrop","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"holders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metropolisFactory","outputs":[{"internalType":"contract IMetropolisFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metropolisRouter","outputs":[{"internalType":"contract IMetropolisRouter","name":"","type":"address"}],"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":"processLiquidityAndAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"refreshAllApprovals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sonicToken","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":"triggerProcessing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTokensToOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b50336040518060400160405280600681526020017f4641524d455200000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4641524d00000000000000000000000000000000000000000000000000000000815250816003908162000090919062000832565b508060049081620000a2919062000832565b5050506001600581905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000116906200097a565b60405180910390fd5b62000130816200034b60201b60201c565b5060007395a7e403d7cf20f675ff9273d66e94d35ba49fa390506000731570300e9cfec66c9fb0c8bc14366c86eb170ad09050600073039e2fb66102314ce7b64ce5ce3e5183bc94ad389050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015620001e75750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015620002215750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b62000263576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200025a90620009ec565b60405180910390fd5b82600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003423069d3c21bcecceda10000006200041160201b60201c565b50505062000b18565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000483576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200047a9062000a5e565b60405180910390fd5b62000497600083836200057e60201b60201c565b8060026000828254620004ab919062000aaf565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200055e919062000afb565b60405180910390a36200057a600083836200059660201b60201c565b5050565b62000591838383620005ae60201b60201c565b505050565b620005a9838383620005b360201b60201c565b505050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200063a57607f821691505b60208210810362000650576200064f620005f2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006ba7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200067b565b620006c686836200067b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007136200070d6200070784620006de565b620006e8565b620006de565b9050919050565b6000819050919050565b6200072f83620006f2565b620007476200073e826200071a565b84845462000688565b825550505050565b600090565b6200075e6200074f565b6200076b81848462000724565b505050565b5b8181101562000793576200078760008262000754565b60018101905062000771565b5050565b601f821115620007e257620007ac8162000656565b620007b7846200066b565b81016020851015620007c7578190505b620007df620007d6856200066b565b83018262000770565b50505b505050565b600082821c905092915050565b60006200080760001984600802620007e7565b1980831691505092915050565b6000620008228383620007f4565b9150826002028217905092915050565b6200083d82620005b8565b67ffffffffffffffff811115620008595762000858620005c3565b5b62000865825462000621565b6200087282828562000797565b600060209050601f831160018114620008aa576000841562000895578287015190505b620008a1858262000814565b86555062000911565b601f198416620008ba8662000656565b60005b82811015620008e457848901518255600182019150602085019450602081019050620008bd565b8683101562000904578489015162000900601f891682620007f4565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f4f31000000000000000000000000000000000000000000000000000000000000600082015250565b60006200096260028362000919565b91506200096f826200092a565b602082019050919050565b60006020820190508181036000830152620009958162000953565b9050919050565b7f4631000000000000000000000000000000000000000000000000000000000000600082015250565b6000620009d460028362000919565b9150620009e1826200099c565b602082019050919050565b6000602082019050818103600083015262000a0781620009c5565b9050919050565b7f4533000000000000000000000000000000000000000000000000000000000000600082015250565b600062000a4660028362000919565b915062000a538262000a0e565b602082019050919050565b6000602082019050818103600083015262000a798162000a37565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000abc82620006de565b915062000ac983620006de565b925082820190508082111562000ae45762000ae362000a80565b5b92915050565b62000af581620006de565b82525050565b600060208201905062000b12600083018462000aea565b92915050565b615edd8062000b286000396000f3fe6080604052600436106101f25760003560e01c806370a082311161010d5780639df93f6c116100a0578063d4d7b19a1161006f578063d4d7b19a146106bf578063dd62ed3e146106fc578063ed9cacfe14610739578063f2fde38b14610750578063fd7c9fab14610779576101f9565b80639df93f6c14610616578063a9059cbb14610642578063c026d93a1461067f578063c0d7865514610696576101f9565b8063808a5457116100dc578063808a54571461057e5780638129fc1c146105a95780638da5cb5b146105c057806395d89b41146105eb576101f9565b806370a08231146104d65780637136982b1461051357806379304bec1461053e5780637ac84fc114610567576101f9565b8063313ce567116101855780635737619811610154578063573761981461042c5780635d76b04c146104555780635fe8e7cc1461048057806362b6327a146104ab576101f9565b8063313ce567146103a3578063397883d2146103ce57806341a22cc2146103e5578063461a3a9514610401576101f9565b80631b26c80d116101c15780631b26c80d146102bc57806323b872dd146102ec578063298926cb146103295780632a11ced014610366576101f9565b806306fdde03146101fe57806308dee2b414610229578063095ea7b31461025457806318160ddd14610291576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b506102136107a4565b6040516102209190614596565b60405180910390f35b34801561023557600080fd5b5061023e610836565b60405161024b91906145d1565b60405180910390f35b34801561026057600080fd5b5061027b60048036038101906102769190614685565b610840565b60405161028891906146e0565b60405180910390f35b34801561029d57600080fd5b506102a661085c565b6040516102b391906145d1565b60405180910390f35b3480156102c857600080fd5b506102d1610866565b6040516102e39695949392919061470a565b60405180910390f35b3480156102f857600080fd5b50610313600480360381019061030e919061476b565b610b00565b60405161032091906146e0565b60405180910390f35b34801561033557600080fd5b50610350600480360381019061034b91906147be565b610b28565b60405161035d91906145d1565b60405180910390f35b34801561037257600080fd5b5061038d600480360381019061038891906147be565b610bb0565b60405161039a91906147eb565b60405180910390f35b3480156103af57600080fd5b506103b8610bef565b6040516103c59190614822565b60405180910390f35b3480156103da57600080fd5b506103e3610bf8565b005b6103ff60048036038101906103fa91906147be565b610d3c565b005b34801561040d57600080fd5b50610416611059565b60405161042391906147eb565b60405180910390f35b34801561043857600080fd5b50610453600480360381019061044e9190614685565b61107f565b005b34801561046157600080fd5b5061046a61117f565b60405161047791906145d1565b60405180910390f35b34801561048c57600080fd5b50610495611189565b6040516104a291906148fb565b60405180910390f35b3480156104b757600080fd5b506104c0611217565b6040516104cd919061497c565b60405180910390f35b3480156104e257600080fd5b506104fd60048036038101906104f89190614997565b61123d565b60405161050a91906145d1565b60405180910390f35b34801561051f57600080fd5b50610528611285565b60405161053591906145d1565b60405180910390f35b34801561054a57600080fd5b50610565600480360381019061056091906147be565b611292565b005b34801561057357600080fd5b5061057c611364565b005b34801561058a57600080fd5b506105936115c8565b6040516105a091906147eb565b60405180910390f35b3480156105b557600080fd5b506105be6115ee565b005b3480156105cc57600080fd5b506105d5611d24565b6040516105e291906147eb565b60405180910390f35b3480156105f757600080fd5b50610600611d4e565b60405161060d9190614596565b60405180910390f35b34801561062257600080fd5b5061062b611de0565b6040516106399291906149c4565b60405180910390f35b34801561064e57600080fd5b5061066960048036038101906106649190614685565b611fa0565b60405161067691906146e0565b60405180910390f35b34801561068b57600080fd5b50610694611fbc565b005b3480156106a257600080fd5b506106bd60048036038101906106b89190614997565b61230f565b005b3480156106cb57600080fd5b506106e660048036038101906106e19190614997565b6123ca565b6040516106f391906146e0565b60405180910390f35b34801561070857600080fd5b50610723600480360381019061071e91906149ed565b6123ea565b60405161073091906145d1565b60405180910390f35b34801561074557600080fd5b5061074e612471565b005b34801561075c57600080fd5b5061077760048036038101906107729190614997565b61274d565b005b34801561078557600080fd5b5061078e6127d0565b60405161079b9190614a4e565b60405180910390f35b6060600380546107b390614a98565b80601f01602080910402602001604051908101604052809291908181526020018280546107df90614a98565b801561082c5780601f106108015761010080835404028352916020019161082c565b820191906000526020600020905b81548152906001019060200180831161080f57829003601f168201915b5050505050905090565b6000600d54905090565b6000803390506108518185856127f6565b600191505092915050565b6000600254905090565b6000806000806000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108a891906147eb565b602060405180830381865afa1580156108c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e99190614ade565b95503073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401610948929190614b0b565b602060405180830381865afa158015610965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109899190614ade565b9450600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c9190614b49565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401610a78929190614b0b565b602060405180830381865afa158015610a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab99190614b49565b9250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614159350600d549150600e549050909192939495565b600080339050610b1185828561298a565b610b1c858585612a16565b60019150509392505050565b6000806000610b35611de0565b915091506000821480610b485750600081145b15610b5857600092505050610bab565b60006103e585610b689190614ba5565b905060008282610b789190614ba5565b90506000826103e886610b8b9190614ba5565b610b959190614be7565b90508082610ba39190614c4a565b955050505050505b919050565b600c8181548110610bc057600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b610c0061318f565b6000600d541180610c1357506000600e54115b610c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4990614cc7565b60405180910390fd5b6000600c8054905011610c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9190614d33565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16637ac84fc16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ce257600080fd5b505af1925050508015610cf3575060015b610d39577f6f85944d879d05feade37c54fd09ce05482d063b08c263185a9400ecb991e5cd600d54600e54604051610d2c9291906149c4565b60405180910390a1610d3a565b5b565b610d4461318f565b60003411610d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7e90614dc5565b60405180910390fd5b60008111610dca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc190614e57565b60405180910390fd5b803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e0491906147eb565b602060405180830381865afa158015610e21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e459190614ade565b1015610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d90614ee9565b60405180910390fd5b610eb330600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836127f6565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71934308460008033426040518863ffffffff1660e01b8152600401610f1a96959493929190614f44565b60606040518083038185885af193505050508015610f5657506040513d601f19601f82011682018060405250810190610f539190614fa5565b60015b610fc357610f8830600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660006127f6565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fba90615044565b60405180910390fd5b5050507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b8134604051610ff79291906149c4565b60405180910390a160004790506000811115611055573373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611053573d6000803e3d6000fd5b505b5050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61108761318f565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec906150b0565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611119611d24565b836040518363ffffffff1660e01b81526004016111379291906150d0565b6020604051808303816000875af1158015611156573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117a9190615125565b505050565b6000600e54905090565b6060600c80548060200260200160405190810160405280929190818152602001828054801561120d57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116111c3575b5050505050905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600c80549050905090565b61129a61318f565b803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112d491906147eb565b602060405180830381865afa1580156112f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113159190614ade565b1015611356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134d9061519e565b60405180910390fd5b611361303383612a16565b50565b6002600554036113a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a09061520a565b60405180910390fd5b60026005819055506000600d5411806113c457506000600e54115b611403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fa90614cc7565b60405180910390fd5b6000600c805490501161144b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144290614d33565b60405180910390fd5b6000600e54600d5461145d9190614be7565b905068056bc75e2d631000008110156114ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a29061529c565b60405180910390fd5b7f6f85944d879d05feade37c54fd09ce05482d063b08c263185a9400ecb991e5cd600d54600e546040516114e09291906149c4565b60405180910390a16000600d5490506000600e5490506000600d819055506000600e81905550600060646019856115179190614ba5565b6115219190614c4a565b90506000818561153191906152bc565b9050600061153e82613206565b9050600081036115615784600d8190555083600e819055505050505050506115be565b600060646019836115729190614ba5565b61157c9190614c4a565b905060008111156115925761159184826138f6565b5b600081836115a091906152bc565b905060008111156115b5576115b481613bfc565b5b50505050505050505b6001600581905550565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6115f661318f565b600f60009054906101000a900460ff1615611646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163d9061533c565b60405180910390fd5b6001600f60006101000a81548160ff021916908315150217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016116e0929190614b0b565b602060405180830381865afa1580156116fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117219190614b49565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036118ba57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611836929190614b0b565b6020604051808303816000875af1158015611855573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118799190614b49565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361194b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611942906153a8565b60405180910390fd5b61199830600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6127f6565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611a379291906150d0565b6020604051808303816000875af1158015611a56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7a9190615125565b611ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab090615414565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611b589291906150d0565b6020604051808303816000875af1158015611b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9b9190615125565b503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611c199291906150d0565b6020604051808303816000875af1158015611c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5c9190615125565b507f1aee311dae12417944704a8411a039c41e8ae395e0c0075565cb1c93934babc4600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611d1a9493929190615434565b60405180910390a1565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611d5d90614a98565b80601f0160208091040260200160405190810160405280929190818152602001828054611d8990614a98565b8015611dd65780601f10611dab57610100808354040283529160200191611dd6565b820191906000526020600020905b815481529060010190602001808311611db957829003601f168201915b5050505050905090565b600080600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7791906154fb565b50915091506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0f9190614b49565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f7257826dffffffffffffffffffffffffffff16826dffffffffffffffffffffffffffff1694509450505050611f9c565b816dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff16945094505050505b9091565b600080339050611fb1818585612a16565b600191505092915050565b611fc461318f565b60003073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401612023929190614b0b565b602060405180830381865afa158015612040573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120649190614ade565b905069d3c21bcecceda10000008110156120b0576120af30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda10000006127f6565b5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161210d91906147eb565b602060405180830381865afa15801561212a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214e9190614ade565b9050600081111561230b576000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016121da929190614b0b565b602060405180830381865afa1580156121f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221b9190614ade565b90508181101561230957600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016122c49291906150d0565b6020604051808303816000875af11580156122e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123079190615125565b505b505b5050565b61231761318f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237d9061559a565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61247961318f565b6124c630600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6127f6565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016125659291906150d0565b6020604051808303816000875af1158015612584573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a89190615125565b50600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016126489291906150d0565b6020604051808303816000875af192505050801561268457506040513d601f19601f820116820180604052508101906126819190615125565b60015b1561268b57505b3073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016127089291906150d0565b6020604051808303816000875af192505050801561274457506040513d601f19601f820116820180604052508101906127419190615125565b60015b1561274b57505b565b61275561318f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bb90615606565b60405180910390fd5b6127cd81613dfb565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128605750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61289f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289690615672565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161297d91906145d1565b60405180910390a3505050565b600061299684846123ea565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612a105781811015612a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f9906156de565b60405180910390fd5b612a0f84848484036127f6565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a805750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab69061574a565b60405180910390fd5b612ac7611d24565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612b325750612b03611d24565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612b6857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80612b9e57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612bb65750600f60009054906101000a900460ff16155b15612bdd57612bc6838383613ec1565b612bcf83614102565b612bd882614102565b61318a565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612c885750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b9050801561316a5760006064600584612ca19190614ba5565b612cab9190614c4a565b905060008184612cbb91906152bc565b9050612cc8868683613ec1565b612cd3863084613ec1565b6064601983612ce29190614ba5565b612cec9190614c4a565b600d6000828254612cfd9190614be7565b925050819055506064601983612d139190614ba5565b612d1d9190614c4a565b600e6000828254612d2e9190614be7565b9250508190555068056bc75e2d63100000600d54101580612d5a575068056bc75e2d63100000600e5410155b8015612d6b57506000600c80549050115b1561316357612dbd30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6127f6565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612e5c9291906150d0565b6020604051808303816000875af1158015612e7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9f9190615125565b50600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612f3f9291906150d0565b6020604051808303816000875af1158015612f5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f829190615125565b503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016130009291906150d0565b6020604051808303816000875af115801561301f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130439190615125565b503073ffffffffffffffffffffffffffffffffffffffff16637ac84fc16040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561308c57600080fd5b505af192505050801561309d575060015b613161576130a9615777565b806308c379a00361312457506130bd6157f9565b806130c85750613126565b7f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec0723816040516020016130fa9190615911565b6040516020818303038152906040526040516131169190614596565b60405180910390a15061315c565b505b7f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec0723604051613153906159a5565b60405180910390a15b613162565b5b5b5050613176565b613175848484613ec1565b5b61317f84614102565b61318883614102565b505b505050565b3373ffffffffffffffffffffffffffffffffffffffff166131ae611d24565b73ffffffffffffffffffffffffffffffffffffffff1614613204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131fb90615a11565b60405180910390fd5b565b600080820361321857600090506138f1565b61326530600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6127f6565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016133049291906150d0565b6020604051808303816000875af1158015613323573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133479190615125565b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156133b257600080fd5b505af19250505080156133c3575060015b61345a576133cf615777565b806308c379a00361344e57506133e36157f9565b806133ee5750613450565b7f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec0723816040516020016134209190615a7d565b60405160208183030381529060405260405161343c9190614596565b60405180910390a160009150506138f1565b505b3d6000803e3d6000fd5b600080613465611de0565b915091507f5e9e475d0268bd6813a61d283a670a9cc62d0b8cab38b2b1ae98d442f65a93e1828260405161349a9291906149c4565b60405180910390a150506000600267ffffffffffffffff8111156134c1576134c0615799565b5b6040519080825280602002602001820160405280156134ef5781602001602082028036833780820191505090505b509050308160008151811061350757613506615a9f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061357857613577615a9f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161360f91906147eb565b602060405180830381865afa15801561362c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136509190614ade565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795856000853061012c426136a39190614be7565b6040518663ffffffff1660e01b81526004016136c3959493929190615ace565b600060405180830381600087803b1580156136dd57600080fd5b505af19250505080156136ee575060015b6137bd576136fa615777565b806308c379a00361377b575061370e6157f9565b80613719575061377d565b7f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec07238160405160200161374b9190615b74565b6040516020818303038152906040526040516137679190614596565b60405180910390a1600093505050506138f1565b505b7f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec07236040516137aa90615be2565b60405180910390a16000925050506138f1565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161381a91906147eb565b602060405180830381865afa158015613837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385b9190614ade565b90506000828261386b91906152bc565b9050600081116138b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138a790615c4e565b60405180910390fd5b7fdd819f6d4da11821175805e17c46b8094c817290420e3de00dee96b4d256dc0186826040516138e19291906149c4565b60405180910390a1809450505050505b919050565b60008214806139055750600081145b613bf85761393630600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846127f6565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016139b59291906150d0565b6020604051808303816000875af11580156139d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f89190615125565b50600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e3370030600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685856064601e6064613a6d91906152bc565b89613a789190614ba5565b613a829190614c4a565b6064601e6064613a9291906152bc565b89613a9d9190614ba5565b613aa79190614c4a565b3061012c42613ab69190614be7565b6040518963ffffffff1660e01b8152600401613ad9989796959493929190615c6e565b6060604051808303816000875af1925050508015613b1557506040513d601f19601f82011682018060405250810190613b129190614fa5565b60015b613bba57613b21615777565b806308c379a003613b7d5750613b356157f9565b80613b405750613b7f565b7fa31e27a09b547b7d81f05436d3ed82a86121c091c82f730e0ab84b988ae730ad81604051613b6f9190614596565b60405180910390a150613bb5565b505b7fa31e27a09b547b7d81f05436d3ed82a86121c091c82f730e0ab84b988ae730ad604051613bac90615d38565b60405180910390a15b613bf7565b5050507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b8282604051613bee9291906149c4565b60405180910390a15b5b5050565b6000811480613c1057506000600c80549050145b613df8576000600c8054905082613c279190614c4a565b905060008103613c375750613df8565b60005b600c8054905081108015613c4e5750606481105b15613db757600073ffffffffffffffffffffffffffffffffffffffff16600c8281548110613c7f57613c7e615a9f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613da357600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600c8381548110613d1757613d16615a9f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401613d609291906150d0565b6020604051808303816000875af1925050508015613d9c57506040513d601f19601f82011682018060405250810190613d999190615125565b60015b15613da457505b5b8080613daf90615d58565b915050613c3a565b507f6570e65a772d8d30d76e42c8d07c41bf88b28ecf39ca57095a61b4a76584c21782600c80549050604051613dee9291906149c4565b60405180910390a1505b50565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613f2b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b613f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f6190615dec565b60405180910390fd5b613f7583838361434c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613ffb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ff290615e58565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516140e991906145d1565b60405180910390a36140fc84848461435c565b50505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561418c57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1561434957600061419c8261123d565b90506000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050678ac7230489e800008210158015614205575080155b156142ca576001600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600c839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614346565b678ac7230489e80000821080156142de5750805b15614345576000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506143448361436c565b5b5b50505b50565b6143578383836144fc565b505050565b614367838383614501565b505050565b60005b600c805490508110156144f8578173ffffffffffffffffffffffffffffffffffffffff16600c82815481106143a7576143a6615a9f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036144e557600c6001600c8054905061440191906152bc565b8154811061441257614411615a9f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c828154811061445157614450615a9f565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c8054806144ab576144aa615e78565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556144f8565b80806144f090615d58565b91505061436f565b5050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614540578082015181840152602081019050614525565b60008484015250505050565b6000601f19601f8301169050919050565b600061456882614506565b6145728185614511565b9350614582818560208601614522565b61458b8161454c565b840191505092915050565b600060208201905081810360008301526145b0818461455d565b905092915050565b6000819050919050565b6145cb816145b8565b82525050565b60006020820190506145e660008301846145c2565b92915050565b6000604051905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614626826145fb565b9050919050565b6146368161461b565b811461464157600080fd5b50565b6000813590506146538161462d565b92915050565b614662816145b8565b811461466d57600080fd5b50565b60008135905061467f81614659565b92915050565b6000806040838503121561469c5761469b6145f6565b5b60006146aa85828601614644565b92505060206146bb85828601614670565b9150509250929050565b60008115159050919050565b6146da816146c5565b82525050565b60006020820190506146f560008301846146d1565b92915050565b6147048161461b565b82525050565b600060c08201905061471f60008301896145c2565b61472c60208301886145c2565b61473960408301876146d1565b61474660608301866146fb565b61475360808301856145c2565b61476060a08301846145c2565b979650505050505050565b600080600060608486031215614784576147836145f6565b5b600061479286828701614644565b93505060206147a386828701614644565b92505060406147b486828701614670565b9150509250925092565b6000602082840312156147d4576147d36145f6565b5b60006147e284828501614670565b91505092915050565b600060208201905061480060008301846146fb565b92915050565b600060ff82169050919050565b61481c81614806565b82525050565b60006020820190506148376000830184614813565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6148728161461b565b82525050565b60006148848383614869565b60208301905092915050565b6000602082019050919050565b60006148a88261483d565b6148b28185614848565b93506148bd83614859565b8060005b838110156148ee5781516148d58882614878565b97506148e083614890565b9250506001810190506148c1565b5085935050505092915050565b60006020820190508181036000830152614915818461489d565b905092915050565b6000819050919050565b600061494261493d614938846145fb565b61491d565b6145fb565b9050919050565b600061495482614927565b9050919050565b600061496682614949565b9050919050565b6149768161495b565b82525050565b6000602082019050614991600083018461496d565b92915050565b6000602082840312156149ad576149ac6145f6565b5b60006149bb84828501614644565b91505092915050565b60006040820190506149d960008301856145c2565b6149e660208301846145c2565b9392505050565b60008060408385031215614a0457614a036145f6565b5b6000614a1285828601614644565b9250506020614a2385828601614644565b9150509250929050565b6000614a3882614949565b9050919050565b614a4881614a2d565b82525050565b6000602082019050614a636000830184614a3f565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614ab057607f821691505b602082108103614ac357614ac2614a69565b5b50919050565b600081519050614ad881614659565b92915050565b600060208284031215614af457614af36145f6565b5b6000614b0284828501614ac9565b91505092915050565b6000604082019050614b2060008301856146fb565b614b2d60208301846146fb565b9392505050565b600081519050614b438161462d565b92915050565b600060208284031215614b5f57614b5e6145f6565b5b6000614b6d84828501614b34565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614bb0826145b8565b9150614bbb836145b8565b9250828202614bc9816145b8565b91508282048414831517614be057614bdf614b76565b5b5092915050565b6000614bf2826145b8565b9150614bfd836145b8565b9250828201905080821115614c1557614c14614b76565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c55826145b8565b9150614c60836145b8565b925082614c7057614c6f614c1b565b5b828204905092915050565b7f4e6f2070656e64696e6720746f6b656e73000000000000000000000000000000600082015250565b6000614cb1601183614511565b9150614cbc82614c7b565b602082019050919050565b60006020820190508181036000830152614ce081614ca4565b9050919050565b7f4e6f20686f6c6465727300000000000000000000000000000000000000000000600082015250565b6000614d1d600a83614511565b9150614d2882614ce7565b602082019050919050565b60006020820190508181036000830152614d4c81614d10565b9050919050565b7f4d7573742070726f766964652045544820666f7220696e697469616c206c697160008201527f7569646974790000000000000000000000000000000000000000000000000000602082015250565b6000614daf602683614511565b9150614dba82614d53565b604082019050919050565b60006020820190508181036000830152614dde81614da2565b9050919050565b7f4d7573742070726f7669646520746f6b656e20616d6f756e7420666f7220696e60008201527f697469616c206c69717569646974790000000000000000000000000000000000602082015250565b6000614e41602f83614511565b9150614e4c82614de5565b604082019050919050565b60006020820190508181036000830152614e7081614e34565b9050919050565b7f496e73756666696369656e7420746f6b656e2062616c616e636520696e20636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b6000614ed3602683614511565b9150614ede82614e77565b604082019050919050565b60006020820190508181036000830152614f0281614ec6565b9050919050565b6000819050919050565b6000614f2e614f29614f2484614f09565b61491d565b6145b8565b9050919050565b614f3e81614f13565b82525050565b600060c082019050614f5960008301896146fb565b614f6660208301886145c2565b614f736040830187614f35565b614f806060830186614f35565b614f8d60808301856146fb565b614f9a60a08301846145c2565b979650505050505050565b600080600060608486031215614fbe57614fbd6145f6565b5b6000614fcc86828701614ac9565b9350506020614fdd86828701614ac9565b9250506040614fee86828701614ac9565b9150509250925092565b7f4661696c656420746f20616464206c6971756964697479000000000000000000600082015250565b600061502e601783614511565b915061503982614ff8565b602082019050919050565b6000602082019050818103600083015261505d81615021565b9050919050565b7f43616e6e6f7420726573637565204641524d455220746f6b656e730000000000600082015250565b600061509a601b83614511565b91506150a582615064565b602082019050919050565b600060208201905081810360008301526150c98161508d565b9050919050565b60006040820190506150e560008301856146fb565b6150f260208301846145c2565b9392505050565b615102816146c5565b811461510d57600080fd5b50565b60008151905061511f816150f9565b92915050565b60006020828403121561513b5761513a6145f6565b5b600061514984828501615110565b91505092915050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000615188601483614511565b915061519382615152565b602082019050919050565b600060208201905081810360008301526151b78161517b565b9050919050565b7f5231000000000000000000000000000000000000000000000000000000000000600082015250565b60006151f4600283614511565b91506151ff826151be565b602082019050919050565b60006020820190508181036000830152615223816151e7565b9050919050565b7f496e73756666696369656e7420746f6b656e7320666f722070726f636573736960008201527f6e67000000000000000000000000000000000000000000000000000000000000602082015250565b6000615286602283614511565b91506152918261522a565b604082019050919050565b600060208201905081810360008301526152b581615279565b9050919050565b60006152c7826145b8565b91506152d2836145b8565b92508282039050818111156152ea576152e9614b76565b5b92915050565b7f4632000000000000000000000000000000000000000000000000000000000000600082015250565b6000615326600283614511565b9150615331826152f0565b602082019050919050565b6000602082019050818103600083015261535581615319565b9050919050565b7f4633000000000000000000000000000000000000000000000000000000000000600082015250565b6000615392600283614511565b915061539d8261535c565b602082019050919050565b600060208201905081810360008301526153c181615385565b9050919050565b7f4634000000000000000000000000000000000000000000000000000000000000600082015250565b60006153fe600283614511565b9150615409826153c8565b602082019050919050565b6000602082019050818103600083015261542d816153f1565b9050919050565b600060808201905061544960008301876146fb565b61545660208301866146fb565b61546360408301856146fb565b61547060608301846146fb565b95945050505050565b60006dffffffffffffffffffffffffffff82169050919050565b61549c81615479565b81146154a757600080fd5b50565b6000815190506154b981615493565b92915050565b600063ffffffff82169050919050565b6154d8816154bf565b81146154e357600080fd5b50565b6000815190506154f5816154cf565b92915050565b600080600060608486031215615514576155136145f6565b5b6000615522868287016154aa565b9350506020615533868287016154aa565b9250506040615544868287016154e6565b9150509250925092565b7f496e76616c696420726f75746572206164647265737300000000000000000000600082015250565b6000615584601683614511565b915061558f8261554e565b602082019050919050565b600060208201905081810360008301526155b381615577565b9050919050565b7f4f31000000000000000000000000000000000000000000000000000000000000600082015250565b60006155f0600283614511565b91506155fb826155ba565b602082019050919050565b6000602082019050818103600083015261561f816155e3565b9050919050565b7f4534000000000000000000000000000000000000000000000000000000000000600082015250565b600061565c600283614511565b915061566782615626565b602082019050919050565b6000602082019050818103600083015261568b8161564f565b9050919050565b7f4535000000000000000000000000000000000000000000000000000000000000600082015250565b60006156c8600283614511565b91506156d382615692565b602082019050919050565b600060208201905081810360008301526156f7816156bb565b9050919050565b7f5472616e7366657220746f2f66726f6d207a65726f2061646472657373000000600082015250565b6000615734601d83614511565b915061573f826156fe565b602082019050919050565b6000602082019050818103600083015261576381615727565b9050919050565b60008160e01c9050919050565b600060033d11156157965760046000803e61579360005161576a565b90505b90565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6157d18261454c565b810181811067ffffffffffffffff821117156157f0576157ef615799565b5b80604052505050565b600060443d106158865761580b6145ec565b60043d036004823e80513d602482011167ffffffffffffffff82111715615833575050615886565b808201805167ffffffffffffffff8111156158515750505050615886565b80602083010160043d03850181111561586e575050505050615886565b61587d826020018501866157c8565b82955050505050505b90565b600081905092915050565b7f4175746f2070726f63657373206661696c65643a200000000000000000000000600082015250565b60006158ca601583615889565b91506158d582615894565b601582019050919050565b60006158eb82614506565b6158f58185615889565b9350615905818560208601614522565b80840191505092915050565b600061591c826158bd565b915061592882846158e0565b915081905092915050565b7f556e6b6e6f776e206572726f7220696e206175746f6d617469632070726f636560008201527f7373696e67000000000000000000000000000000000000000000000000000000602082015250565b600061598f602583614511565b915061599a82615933565b604082019050919050565b600060208201905081810360008301526159be81615982565b9050919050565b7f4f32000000000000000000000000000000000000000000000000000000000000600082015250565b60006159fb600283614511565b9150615a06826159c5565b602082019050919050565b60006020820190508181036000830152615a2a816159ee565b9050919050565b7f506169722073796e63206661696c65643a200000000000000000000000000000600082015250565b6000615a67601283615889565b9150615a7282615a31565b601282019050919050565b6000615a8882615a5a565b9150615a9482846158e0565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060a082019050615ae360008301886145c2565b615af06020830187614f35565b8181036040830152615b02818661489d565b9050615b1160608301856146fb565b615b1e60808301846145c2565b9695505050505050565b7f53776170206661696c65643a2000000000000000000000000000000000000000600082015250565b6000615b5e600d83615889565b9150615b6982615b28565b600d82019050919050565b6000615b7f82615b51565b9150615b8b82846158e0565b915081905092915050565b7f556e6b6e6f776e206572726f7220696e20737761700000000000000000000000600082015250565b6000615bcc601583614511565b9150615bd782615b96565b602082019050919050565b60006020820190508181036000830152615bfb81615bbf565b9050919050565b7f4e6f20534f4e4943207265636569766564206166746572207377617000000000600082015250565b6000615c38601c83614511565b9150615c4382615c02565b602082019050919050565b60006020820190508181036000830152615c6781615c2b565b9050919050565b600061010082019050615c84600083018b6146fb565b615c91602083018a6146fb565b615c9e60408301896145c2565b615cab60608301886145c2565b615cb860808301876145c2565b615cc560a08301866145c2565b615cd260c08301856146fb565b615cdf60e08301846145c2565b9998505050505050505050565b7f556e6b6e6f776e206572726f7220696e206164644c6971756964697479000000600082015250565b6000615d22601d83614511565b9150615d2d82615cec565b602082019050919050565b60006020820190508181036000830152615d5181615d15565b9050919050565b6000615d63826145b8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615d9557615d94614b76565b5b600182019050919050565b7f4531000000000000000000000000000000000000000000000000000000000000600082015250565b6000615dd6600283614511565b9150615de182615da0565b602082019050919050565b60006020820190508181036000830152615e0581615dc9565b9050919050565b7f4532000000000000000000000000000000000000000000000000000000000000600082015250565b6000615e42600283614511565b9150615e4d82615e0c565b602082019050919050565b60006020820190508181036000830152615e7181615e35565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220cb730eecf6b19db9464b6b344d4aeb1724b4b1ef69d88060cf82c3365e0369b164736f6c63430008130033
Deployed Bytecode
0x6080604052600436106101f25760003560e01c806370a082311161010d5780639df93f6c116100a0578063d4d7b19a1161006f578063d4d7b19a146106bf578063dd62ed3e146106fc578063ed9cacfe14610739578063f2fde38b14610750578063fd7c9fab14610779576101f9565b80639df93f6c14610616578063a9059cbb14610642578063c026d93a1461067f578063c0d7865514610696576101f9565b8063808a5457116100dc578063808a54571461057e5780638129fc1c146105a95780638da5cb5b146105c057806395d89b41146105eb576101f9565b806370a08231146104d65780637136982b1461051357806379304bec1461053e5780637ac84fc114610567576101f9565b8063313ce567116101855780635737619811610154578063573761981461042c5780635d76b04c146104555780635fe8e7cc1461048057806362b6327a146104ab576101f9565b8063313ce567146103a3578063397883d2146103ce57806341a22cc2146103e5578063461a3a9514610401576101f9565b80631b26c80d116101c15780631b26c80d146102bc57806323b872dd146102ec578063298926cb146103295780632a11ced014610366576101f9565b806306fdde03146101fe57806308dee2b414610229578063095ea7b31461025457806318160ddd14610291576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b506102136107a4565b6040516102209190614596565b60405180910390f35b34801561023557600080fd5b5061023e610836565b60405161024b91906145d1565b60405180910390f35b34801561026057600080fd5b5061027b60048036038101906102769190614685565b610840565b60405161028891906146e0565b60405180910390f35b34801561029d57600080fd5b506102a661085c565b6040516102b391906145d1565b60405180910390f35b3480156102c857600080fd5b506102d1610866565b6040516102e39695949392919061470a565b60405180910390f35b3480156102f857600080fd5b50610313600480360381019061030e919061476b565b610b00565b60405161032091906146e0565b60405180910390f35b34801561033557600080fd5b50610350600480360381019061034b91906147be565b610b28565b60405161035d91906145d1565b60405180910390f35b34801561037257600080fd5b5061038d600480360381019061038891906147be565b610bb0565b60405161039a91906147eb565b60405180910390f35b3480156103af57600080fd5b506103b8610bef565b6040516103c59190614822565b60405180910390f35b3480156103da57600080fd5b506103e3610bf8565b005b6103ff60048036038101906103fa91906147be565b610d3c565b005b34801561040d57600080fd5b50610416611059565b60405161042391906147eb565b60405180910390f35b34801561043857600080fd5b50610453600480360381019061044e9190614685565b61107f565b005b34801561046157600080fd5b5061046a61117f565b60405161047791906145d1565b60405180910390f35b34801561048c57600080fd5b50610495611189565b6040516104a291906148fb565b60405180910390f35b3480156104b757600080fd5b506104c0611217565b6040516104cd919061497c565b60405180910390f35b3480156104e257600080fd5b506104fd60048036038101906104f89190614997565b61123d565b60405161050a91906145d1565b60405180910390f35b34801561051f57600080fd5b50610528611285565b60405161053591906145d1565b60405180910390f35b34801561054a57600080fd5b50610565600480360381019061056091906147be565b611292565b005b34801561057357600080fd5b5061057c611364565b005b34801561058a57600080fd5b506105936115c8565b6040516105a091906147eb565b60405180910390f35b3480156105b557600080fd5b506105be6115ee565b005b3480156105cc57600080fd5b506105d5611d24565b6040516105e291906147eb565b60405180910390f35b3480156105f757600080fd5b50610600611d4e565b60405161060d9190614596565b60405180910390f35b34801561062257600080fd5b5061062b611de0565b6040516106399291906149c4565b60405180910390f35b34801561064e57600080fd5b5061066960048036038101906106649190614685565b611fa0565b60405161067691906146e0565b60405180910390f35b34801561068b57600080fd5b50610694611fbc565b005b3480156106a257600080fd5b506106bd60048036038101906106b89190614997565b61230f565b005b3480156106cb57600080fd5b506106e660048036038101906106e19190614997565b6123ca565b6040516106f391906146e0565b60405180910390f35b34801561070857600080fd5b50610723600480360381019061071e91906149ed565b6123ea565b60405161073091906145d1565b60405180910390f35b34801561074557600080fd5b5061074e612471565b005b34801561075c57600080fd5b5061077760048036038101906107729190614997565b61274d565b005b34801561078557600080fd5b5061078e6127d0565b60405161079b9190614a4e565b60405180910390f35b6060600380546107b390614a98565b80601f01602080910402602001604051908101604052809291908181526020018280546107df90614a98565b801561082c5780601f106108015761010080835404028352916020019161082c565b820191906000526020600020905b81548152906001019060200180831161080f57829003601f168201915b5050505050905090565b6000600d54905090565b6000803390506108518185856127f6565b600191505092915050565b6000600254905090565b6000806000806000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108a891906147eb565b602060405180830381865afa1580156108c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e99190614ade565b95503073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401610948929190614b0b565b602060405180830381865afa158015610965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109899190614ade565b9450600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c9190614b49565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401610a78929190614b0b565b602060405180830381865afa158015610a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab99190614b49565b9250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614159350600d549150600e549050909192939495565b600080339050610b1185828561298a565b610b1c858585612a16565b60019150509392505050565b6000806000610b35611de0565b915091506000821480610b485750600081145b15610b5857600092505050610bab565b60006103e585610b689190614ba5565b905060008282610b789190614ba5565b90506000826103e886610b8b9190614ba5565b610b959190614be7565b90508082610ba39190614c4a565b955050505050505b919050565b600c8181548110610bc057600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b610c0061318f565b6000600d541180610c1357506000600e54115b610c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4990614cc7565b60405180910390fd5b6000600c8054905011610c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9190614d33565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16637ac84fc16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ce257600080fd5b505af1925050508015610cf3575060015b610d39577f6f85944d879d05feade37c54fd09ce05482d063b08c263185a9400ecb991e5cd600d54600e54604051610d2c9291906149c4565b60405180910390a1610d3a565b5b565b610d4461318f565b60003411610d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7e90614dc5565b60405180910390fd5b60008111610dca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc190614e57565b60405180910390fd5b803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e0491906147eb565b602060405180830381865afa158015610e21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e459190614ade565b1015610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d90614ee9565b60405180910390fd5b610eb330600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836127f6565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71934308460008033426040518863ffffffff1660e01b8152600401610f1a96959493929190614f44565b60606040518083038185885af193505050508015610f5657506040513d601f19601f82011682018060405250810190610f539190614fa5565b60015b610fc357610f8830600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660006127f6565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fba90615044565b60405180910390fd5b5050507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b8134604051610ff79291906149c4565b60405180910390a160004790506000811115611055573373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611053573d6000803e3d6000fd5b505b5050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61108761318f565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec906150b0565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611119611d24565b836040518363ffffffff1660e01b81526004016111379291906150d0565b6020604051808303816000875af1158015611156573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117a9190615125565b505050565b6000600e54905090565b6060600c80548060200260200160405190810160405280929190818152602001828054801561120d57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116111c3575b5050505050905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600c80549050905090565b61129a61318f565b803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112d491906147eb565b602060405180830381865afa1580156112f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113159190614ade565b1015611356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134d9061519e565b60405180910390fd5b611361303383612a16565b50565b6002600554036113a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a09061520a565b60405180910390fd5b60026005819055506000600d5411806113c457506000600e54115b611403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fa90614cc7565b60405180910390fd5b6000600c805490501161144b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144290614d33565b60405180910390fd5b6000600e54600d5461145d9190614be7565b905068056bc75e2d631000008110156114ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a29061529c565b60405180910390fd5b7f6f85944d879d05feade37c54fd09ce05482d063b08c263185a9400ecb991e5cd600d54600e546040516114e09291906149c4565b60405180910390a16000600d5490506000600e5490506000600d819055506000600e81905550600060646019856115179190614ba5565b6115219190614c4a565b90506000818561153191906152bc565b9050600061153e82613206565b9050600081036115615784600d8190555083600e819055505050505050506115be565b600060646019836115729190614ba5565b61157c9190614c4a565b905060008111156115925761159184826138f6565b5b600081836115a091906152bc565b905060008111156115b5576115b481613bfc565b5b50505050505050505b6001600581905550565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6115f661318f565b600f60009054906101000a900460ff1615611646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163d9061533c565b60405180910390fd5b6001600f60006101000a81548160ff021916908315150217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016116e0929190614b0b565b602060405180830381865afa1580156116fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117219190614b49565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036118ba57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611836929190614b0b565b6020604051808303816000875af1158015611855573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118799190614b49565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361194b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611942906153a8565b60405180910390fd5b61199830600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6127f6565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611a379291906150d0565b6020604051808303816000875af1158015611a56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7a9190615125565b611ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab090615414565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611b589291906150d0565b6020604051808303816000875af1158015611b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9b9190615125565b503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611c199291906150d0565b6020604051808303816000875af1158015611c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5c9190615125565b507f1aee311dae12417944704a8411a039c41e8ae395e0c0075565cb1c93934babc4600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611d1a9493929190615434565b60405180910390a1565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611d5d90614a98565b80601f0160208091040260200160405190810160405280929190818152602001828054611d8990614a98565b8015611dd65780601f10611dab57610100808354040283529160200191611dd6565b820191906000526020600020905b815481529060010190602001808311611db957829003601f168201915b5050505050905090565b600080600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7791906154fb565b50915091506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0f9190614b49565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f7257826dffffffffffffffffffffffffffff16826dffffffffffffffffffffffffffff1694509450505050611f9c565b816dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff16945094505050505b9091565b600080339050611fb1818585612a16565b600191505092915050565b611fc461318f565b60003073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401612023929190614b0b565b602060405180830381865afa158015612040573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120649190614ade565b905069d3c21bcecceda10000008110156120b0576120af30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda10000006127f6565b5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161210d91906147eb565b602060405180830381865afa15801561212a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214e9190614ade565b9050600081111561230b576000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016121da929190614b0b565b602060405180830381865afa1580156121f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221b9190614ade565b90508181101561230957600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016122c49291906150d0565b6020604051808303816000875af11580156122e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123079190615125565b505b505b5050565b61231761318f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237d9061559a565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61247961318f565b6124c630600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6127f6565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016125659291906150d0565b6020604051808303816000875af1158015612584573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a89190615125565b50600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016126489291906150d0565b6020604051808303816000875af192505050801561268457506040513d601f19601f820116820180604052508101906126819190615125565b60015b1561268b57505b3073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016127089291906150d0565b6020604051808303816000875af192505050801561274457506040513d601f19601f820116820180604052508101906127419190615125565b60015b1561274b57505b565b61275561318f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bb90615606565b60405180910390fd5b6127cd81613dfb565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128605750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61289f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289690615672565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161297d91906145d1565b60405180910390a3505050565b600061299684846123ea565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612a105781811015612a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f9906156de565b60405180910390fd5b612a0f84848484036127f6565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a805750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab69061574a565b60405180910390fd5b612ac7611d24565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612b325750612b03611d24565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612b6857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80612b9e57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612bb65750600f60009054906101000a900460ff16155b15612bdd57612bc6838383613ec1565b612bcf83614102565b612bd882614102565b61318a565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612c885750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b9050801561316a5760006064600584612ca19190614ba5565b612cab9190614c4a565b905060008184612cbb91906152bc565b9050612cc8868683613ec1565b612cd3863084613ec1565b6064601983612ce29190614ba5565b612cec9190614c4a565b600d6000828254612cfd9190614be7565b925050819055506064601983612d139190614ba5565b612d1d9190614c4a565b600e6000828254612d2e9190614be7565b9250508190555068056bc75e2d63100000600d54101580612d5a575068056bc75e2d63100000600e5410155b8015612d6b57506000600c80549050115b1561316357612dbd30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6127f6565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612e5c9291906150d0565b6020604051808303816000875af1158015612e7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9f9190615125565b50600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612f3f9291906150d0565b6020604051808303816000875af1158015612f5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f829190615125565b503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016130009291906150d0565b6020604051808303816000875af115801561301f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130439190615125565b503073ffffffffffffffffffffffffffffffffffffffff16637ac84fc16040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561308c57600080fd5b505af192505050801561309d575060015b613161576130a9615777565b806308c379a00361312457506130bd6157f9565b806130c85750613126565b7f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec0723816040516020016130fa9190615911565b6040516020818303038152906040526040516131169190614596565b60405180910390a15061315c565b505b7f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec0723604051613153906159a5565b60405180910390a15b613162565b5b5b5050613176565b613175848484613ec1565b5b61317f84614102565b61318883614102565b505b505050565b3373ffffffffffffffffffffffffffffffffffffffff166131ae611d24565b73ffffffffffffffffffffffffffffffffffffffff1614613204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131fb90615a11565b60405180910390fd5b565b600080820361321857600090506138f1565b61326530600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6127f6565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016133049291906150d0565b6020604051808303816000875af1158015613323573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133479190615125565b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156133b257600080fd5b505af19250505080156133c3575060015b61345a576133cf615777565b806308c379a00361344e57506133e36157f9565b806133ee5750613450565b7f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec0723816040516020016134209190615a7d565b60405160208183030381529060405260405161343c9190614596565b60405180910390a160009150506138f1565b505b3d6000803e3d6000fd5b600080613465611de0565b915091507f5e9e475d0268bd6813a61d283a670a9cc62d0b8cab38b2b1ae98d442f65a93e1828260405161349a9291906149c4565b60405180910390a150506000600267ffffffffffffffff8111156134c1576134c0615799565b5b6040519080825280602002602001820160405280156134ef5781602001602082028036833780820191505090505b509050308160008151811061350757613506615a9f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061357857613577615a9f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161360f91906147eb565b602060405180830381865afa15801561362c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136509190614ade565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795856000853061012c426136a39190614be7565b6040518663ffffffff1660e01b81526004016136c3959493929190615ace565b600060405180830381600087803b1580156136dd57600080fd5b505af19250505080156136ee575060015b6137bd576136fa615777565b806308c379a00361377b575061370e6157f9565b80613719575061377d565b7f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec07238160405160200161374b9190615b74565b6040516020818303038152906040526040516137679190614596565b60405180910390a1600093505050506138f1565b505b7f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec07236040516137aa90615be2565b60405180910390a16000925050506138f1565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161381a91906147eb565b602060405180830381865afa158015613837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385b9190614ade565b90506000828261386b91906152bc565b9050600081116138b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138a790615c4e565b60405180910390fd5b7fdd819f6d4da11821175805e17c46b8094c817290420e3de00dee96b4d256dc0186826040516138e19291906149c4565b60405180910390a1809450505050505b919050565b60008214806139055750600081145b613bf85761393630600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846127f6565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016139b59291906150d0565b6020604051808303816000875af11580156139d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f89190615125565b50600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e3370030600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685856064601e6064613a6d91906152bc565b89613a789190614ba5565b613a829190614c4a565b6064601e6064613a9291906152bc565b89613a9d9190614ba5565b613aa79190614c4a565b3061012c42613ab69190614be7565b6040518963ffffffff1660e01b8152600401613ad9989796959493929190615c6e565b6060604051808303816000875af1925050508015613b1557506040513d601f19601f82011682018060405250810190613b129190614fa5565b60015b613bba57613b21615777565b806308c379a003613b7d5750613b356157f9565b80613b405750613b7f565b7fa31e27a09b547b7d81f05436d3ed82a86121c091c82f730e0ab84b988ae730ad81604051613b6f9190614596565b60405180910390a150613bb5565b505b7fa31e27a09b547b7d81f05436d3ed82a86121c091c82f730e0ab84b988ae730ad604051613bac90615d38565b60405180910390a15b613bf7565b5050507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b8282604051613bee9291906149c4565b60405180910390a15b5b5050565b6000811480613c1057506000600c80549050145b613df8576000600c8054905082613c279190614c4a565b905060008103613c375750613df8565b60005b600c8054905081108015613c4e5750606481105b15613db757600073ffffffffffffffffffffffffffffffffffffffff16600c8281548110613c7f57613c7e615a9f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613da357600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600c8381548110613d1757613d16615a9f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401613d609291906150d0565b6020604051808303816000875af1925050508015613d9c57506040513d601f19601f82011682018060405250810190613d999190615125565b60015b15613da457505b5b8080613daf90615d58565b915050613c3a565b507f6570e65a772d8d30d76e42c8d07c41bf88b28ecf39ca57095a61b4a76584c21782600c80549050604051613dee9291906149c4565b60405180910390a1505b50565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613f2b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b613f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f6190615dec565b60405180910390fd5b613f7583838361434c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613ffb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ff290615e58565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516140e991906145d1565b60405180910390a36140fc84848461435c565b50505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561418c57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1561434957600061419c8261123d565b90506000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050678ac7230489e800008210158015614205575080155b156142ca576001600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600c839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614346565b678ac7230489e80000821080156142de5750805b15614345576000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506143448361436c565b5b5b50505b50565b6143578383836144fc565b505050565b614367838383614501565b505050565b60005b600c805490508110156144f8578173ffffffffffffffffffffffffffffffffffffffff16600c82815481106143a7576143a6615a9f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036144e557600c6001600c8054905061440191906152bc565b8154811061441257614411615a9f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c828154811061445157614450615a9f565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c8054806144ab576144aa615e78565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556144f8565b80806144f090615d58565b91505061436f565b5050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614540578082015181840152602081019050614525565b60008484015250505050565b6000601f19601f8301169050919050565b600061456882614506565b6145728185614511565b9350614582818560208601614522565b61458b8161454c565b840191505092915050565b600060208201905081810360008301526145b0818461455d565b905092915050565b6000819050919050565b6145cb816145b8565b82525050565b60006020820190506145e660008301846145c2565b92915050565b6000604051905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614626826145fb565b9050919050565b6146368161461b565b811461464157600080fd5b50565b6000813590506146538161462d565b92915050565b614662816145b8565b811461466d57600080fd5b50565b60008135905061467f81614659565b92915050565b6000806040838503121561469c5761469b6145f6565b5b60006146aa85828601614644565b92505060206146bb85828601614670565b9150509250929050565b60008115159050919050565b6146da816146c5565b82525050565b60006020820190506146f560008301846146d1565b92915050565b6147048161461b565b82525050565b600060c08201905061471f60008301896145c2565b61472c60208301886145c2565b61473960408301876146d1565b61474660608301866146fb565b61475360808301856145c2565b61476060a08301846145c2565b979650505050505050565b600080600060608486031215614784576147836145f6565b5b600061479286828701614644565b93505060206147a386828701614644565b92505060406147b486828701614670565b9150509250925092565b6000602082840312156147d4576147d36145f6565b5b60006147e284828501614670565b91505092915050565b600060208201905061480060008301846146fb565b92915050565b600060ff82169050919050565b61481c81614806565b82525050565b60006020820190506148376000830184614813565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6148728161461b565b82525050565b60006148848383614869565b60208301905092915050565b6000602082019050919050565b60006148a88261483d565b6148b28185614848565b93506148bd83614859565b8060005b838110156148ee5781516148d58882614878565b97506148e083614890565b9250506001810190506148c1565b5085935050505092915050565b60006020820190508181036000830152614915818461489d565b905092915050565b6000819050919050565b600061494261493d614938846145fb565b61491d565b6145fb565b9050919050565b600061495482614927565b9050919050565b600061496682614949565b9050919050565b6149768161495b565b82525050565b6000602082019050614991600083018461496d565b92915050565b6000602082840312156149ad576149ac6145f6565b5b60006149bb84828501614644565b91505092915050565b60006040820190506149d960008301856145c2565b6149e660208301846145c2565b9392505050565b60008060408385031215614a0457614a036145f6565b5b6000614a1285828601614644565b9250506020614a2385828601614644565b9150509250929050565b6000614a3882614949565b9050919050565b614a4881614a2d565b82525050565b6000602082019050614a636000830184614a3f565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614ab057607f821691505b602082108103614ac357614ac2614a69565b5b50919050565b600081519050614ad881614659565b92915050565b600060208284031215614af457614af36145f6565b5b6000614b0284828501614ac9565b91505092915050565b6000604082019050614b2060008301856146fb565b614b2d60208301846146fb565b9392505050565b600081519050614b438161462d565b92915050565b600060208284031215614b5f57614b5e6145f6565b5b6000614b6d84828501614b34565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614bb0826145b8565b9150614bbb836145b8565b9250828202614bc9816145b8565b91508282048414831517614be057614bdf614b76565b5b5092915050565b6000614bf2826145b8565b9150614bfd836145b8565b9250828201905080821115614c1557614c14614b76565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c55826145b8565b9150614c60836145b8565b925082614c7057614c6f614c1b565b5b828204905092915050565b7f4e6f2070656e64696e6720746f6b656e73000000000000000000000000000000600082015250565b6000614cb1601183614511565b9150614cbc82614c7b565b602082019050919050565b60006020820190508181036000830152614ce081614ca4565b9050919050565b7f4e6f20686f6c6465727300000000000000000000000000000000000000000000600082015250565b6000614d1d600a83614511565b9150614d2882614ce7565b602082019050919050565b60006020820190508181036000830152614d4c81614d10565b9050919050565b7f4d7573742070726f766964652045544820666f7220696e697469616c206c697160008201527f7569646974790000000000000000000000000000000000000000000000000000602082015250565b6000614daf602683614511565b9150614dba82614d53565b604082019050919050565b60006020820190508181036000830152614dde81614da2565b9050919050565b7f4d7573742070726f7669646520746f6b656e20616d6f756e7420666f7220696e60008201527f697469616c206c69717569646974790000000000000000000000000000000000602082015250565b6000614e41602f83614511565b9150614e4c82614de5565b604082019050919050565b60006020820190508181036000830152614e7081614e34565b9050919050565b7f496e73756666696369656e7420746f6b656e2062616c616e636520696e20636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b6000614ed3602683614511565b9150614ede82614e77565b604082019050919050565b60006020820190508181036000830152614f0281614ec6565b9050919050565b6000819050919050565b6000614f2e614f29614f2484614f09565b61491d565b6145b8565b9050919050565b614f3e81614f13565b82525050565b600060c082019050614f5960008301896146fb565b614f6660208301886145c2565b614f736040830187614f35565b614f806060830186614f35565b614f8d60808301856146fb565b614f9a60a08301846145c2565b979650505050505050565b600080600060608486031215614fbe57614fbd6145f6565b5b6000614fcc86828701614ac9565b9350506020614fdd86828701614ac9565b9250506040614fee86828701614ac9565b9150509250925092565b7f4661696c656420746f20616464206c6971756964697479000000000000000000600082015250565b600061502e601783614511565b915061503982614ff8565b602082019050919050565b6000602082019050818103600083015261505d81615021565b9050919050565b7f43616e6e6f7420726573637565204641524d455220746f6b656e730000000000600082015250565b600061509a601b83614511565b91506150a582615064565b602082019050919050565b600060208201905081810360008301526150c98161508d565b9050919050565b60006040820190506150e560008301856146fb565b6150f260208301846145c2565b9392505050565b615102816146c5565b811461510d57600080fd5b50565b60008151905061511f816150f9565b92915050565b60006020828403121561513b5761513a6145f6565b5b600061514984828501615110565b91505092915050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000615188601483614511565b915061519382615152565b602082019050919050565b600060208201905081810360008301526151b78161517b565b9050919050565b7f5231000000000000000000000000000000000000000000000000000000000000600082015250565b60006151f4600283614511565b91506151ff826151be565b602082019050919050565b60006020820190508181036000830152615223816151e7565b9050919050565b7f496e73756666696369656e7420746f6b656e7320666f722070726f636573736960008201527f6e67000000000000000000000000000000000000000000000000000000000000602082015250565b6000615286602283614511565b91506152918261522a565b604082019050919050565b600060208201905081810360008301526152b581615279565b9050919050565b60006152c7826145b8565b91506152d2836145b8565b92508282039050818111156152ea576152e9614b76565b5b92915050565b7f4632000000000000000000000000000000000000000000000000000000000000600082015250565b6000615326600283614511565b9150615331826152f0565b602082019050919050565b6000602082019050818103600083015261535581615319565b9050919050565b7f4633000000000000000000000000000000000000000000000000000000000000600082015250565b6000615392600283614511565b915061539d8261535c565b602082019050919050565b600060208201905081810360008301526153c181615385565b9050919050565b7f4634000000000000000000000000000000000000000000000000000000000000600082015250565b60006153fe600283614511565b9150615409826153c8565b602082019050919050565b6000602082019050818103600083015261542d816153f1565b9050919050565b600060808201905061544960008301876146fb565b61545660208301866146fb565b61546360408301856146fb565b61547060608301846146fb565b95945050505050565b60006dffffffffffffffffffffffffffff82169050919050565b61549c81615479565b81146154a757600080fd5b50565b6000815190506154b981615493565b92915050565b600063ffffffff82169050919050565b6154d8816154bf565b81146154e357600080fd5b50565b6000815190506154f5816154cf565b92915050565b600080600060608486031215615514576155136145f6565b5b6000615522868287016154aa565b9350506020615533868287016154aa565b9250506040615544868287016154e6565b9150509250925092565b7f496e76616c696420726f75746572206164647265737300000000000000000000600082015250565b6000615584601683614511565b915061558f8261554e565b602082019050919050565b600060208201905081810360008301526155b381615577565b9050919050565b7f4f31000000000000000000000000000000000000000000000000000000000000600082015250565b60006155f0600283614511565b91506155fb826155ba565b602082019050919050565b6000602082019050818103600083015261561f816155e3565b9050919050565b7f4534000000000000000000000000000000000000000000000000000000000000600082015250565b600061565c600283614511565b915061566782615626565b602082019050919050565b6000602082019050818103600083015261568b8161564f565b9050919050565b7f4535000000000000000000000000000000000000000000000000000000000000600082015250565b60006156c8600283614511565b91506156d382615692565b602082019050919050565b600060208201905081810360008301526156f7816156bb565b9050919050565b7f5472616e7366657220746f2f66726f6d207a65726f2061646472657373000000600082015250565b6000615734601d83614511565b915061573f826156fe565b602082019050919050565b6000602082019050818103600083015261576381615727565b9050919050565b60008160e01c9050919050565b600060033d11156157965760046000803e61579360005161576a565b90505b90565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6157d18261454c565b810181811067ffffffffffffffff821117156157f0576157ef615799565b5b80604052505050565b600060443d106158865761580b6145ec565b60043d036004823e80513d602482011167ffffffffffffffff82111715615833575050615886565b808201805167ffffffffffffffff8111156158515750505050615886565b80602083010160043d03850181111561586e575050505050615886565b61587d826020018501866157c8565b82955050505050505b90565b600081905092915050565b7f4175746f2070726f63657373206661696c65643a200000000000000000000000600082015250565b60006158ca601583615889565b91506158d582615894565b601582019050919050565b60006158eb82614506565b6158f58185615889565b9350615905818560208601614522565b80840191505092915050565b600061591c826158bd565b915061592882846158e0565b915081905092915050565b7f556e6b6e6f776e206572726f7220696e206175746f6d617469632070726f636560008201527f7373696e67000000000000000000000000000000000000000000000000000000602082015250565b600061598f602583614511565b915061599a82615933565b604082019050919050565b600060208201905081810360008301526159be81615982565b9050919050565b7f4f32000000000000000000000000000000000000000000000000000000000000600082015250565b60006159fb600283614511565b9150615a06826159c5565b602082019050919050565b60006020820190508181036000830152615a2a816159ee565b9050919050565b7f506169722073796e63206661696c65643a200000000000000000000000000000600082015250565b6000615a67601283615889565b9150615a7282615a31565b601282019050919050565b6000615a8882615a5a565b9150615a9482846158e0565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060a082019050615ae360008301886145c2565b615af06020830187614f35565b8181036040830152615b02818661489d565b9050615b1160608301856146fb565b615b1e60808301846145c2565b9695505050505050565b7f53776170206661696c65643a2000000000000000000000000000000000000000600082015250565b6000615b5e600d83615889565b9150615b6982615b28565b600d82019050919050565b6000615b7f82615b51565b9150615b8b82846158e0565b915081905092915050565b7f556e6b6e6f776e206572726f7220696e20737761700000000000000000000000600082015250565b6000615bcc601583614511565b9150615bd782615b96565b602082019050919050565b60006020820190508181036000830152615bfb81615bbf565b9050919050565b7f4e6f20534f4e4943207265636569766564206166746572207377617000000000600082015250565b6000615c38601c83614511565b9150615c4382615c02565b602082019050919050565b60006020820190508181036000830152615c6781615c2b565b9050919050565b600061010082019050615c84600083018b6146fb565b615c91602083018a6146fb565b615c9e60408301896145c2565b615cab60608301886145c2565b615cb860808301876145c2565b615cc560a08301866145c2565b615cd260c08301856146fb565b615cdf60e08301846145c2565b9998505050505050505050565b7f556e6b6e6f776e206572726f7220696e206164644c6971756964697479000000600082015250565b6000615d22601d83614511565b9150615d2d82615cec565b602082019050919050565b60006020820190508181036000830152615d5181615d15565b9050919050565b6000615d63826145b8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615d9557615d94614b76565b5b600182019050919050565b7f4531000000000000000000000000000000000000000000000000000000000000600082015250565b6000615dd6600283614511565b9150615de182615da0565b602082019050919050565b60006020820190508181036000830152615e0581615dc9565b9050919050565b7f4532000000000000000000000000000000000000000000000000000000000000600082015250565b6000615e42600283614511565b9150615e4d82615e0c565b602082019050919050565b60006020820190508181036000830152615e7181615e35565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220cb730eecf6b19db9464b6b344d4aeb1724b4b1ef69d88060cf82c3365e0369b164736f6c63430008130033
Deployed Bytecode Sourcemap
8382:18659:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2810:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23570:118;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3677:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3104:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25000:654;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;3875:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26097:472;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9409:24;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3012:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23869:401;;;;;;;;;;;;;:::i;:::-;;21728:1074;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9269:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23004:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23696:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21554:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9171:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3211:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21444:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23253:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16016:1789;;;;;;;;;;;;;:::i;:::-;;9301:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11082:955;;;;;;;;;;;;;:::i;:::-;;1789:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2909:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25662:427;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;3337:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24278:691;;;;;;;;;;;;;:::i;:::-;;22810:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9362:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3527:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26595:406;;;;;;;;;;;;;:::i;:::-;;1992:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9219:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2810:91;2855:13;2888:5;2881:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2810:91;:::o;23570:118::-;23630:7;23657:23;;23650:30;;23570:118;:::o;3677:190::-;3751:4;3768:13;3784:10;3768:26;;3805:32;3814:5;3821:7;3830:6;3805:8;:32::i;:::-;3855:4;3848:11;;;3677:190;;;;:::o;3104:99::-;3156:7;3183:12;;3176:19;;3104:99;:::o;25000:654::-;25056:23;25090;25124:15;25150:12;25173:18;25202:22;25276:4;25261:31;;;25301:4;25261:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25243:64;;25351:4;25336:31;;;25376:4;25391:16;;;;;;;;;;;25336:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25318:91;;25446:16;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25427:54;;;25490:4;25497:10;;;;;;;;;;;25427:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25420:88;;25548:1;25532:18;;:4;:18;;;;25519:31;;25574:23;;25561:36;;25625:21;;25608:38;;25000:654;;;;;;:::o;3875:250::-;3963:4;3980:15;3998:10;3980:28;;4019:38;4035:4;4041:7;4050:6;4019:15;:38::i;:::-;4068:27;4078:4;4084:2;4088:6;4068:9;:27::i;:::-;4113:4;4106:11;;;3875:250;;;;;:::o;26097:472::-;26162:7;26183:19;26204;26227:17;:15;:17::i;:::-;26182:62;;;;26274:1;26259:11;:16;:36;;;;26294:1;26279:11;:16;26259:36;26255:50;;;26304:1;26297:8;;;;;;26255:50;26326:23;26363:3;26352:8;:14;;;;:::i;:::-;26326:40;;26400:17;26438:11;26420:15;:29;;;;:::i;:::-;26400:49;;26460:19;26505:15;26497:4;26483:11;:18;;;;:::i;:::-;26482:38;;;;:::i;:::-;26460:60;;26550:11;26538:9;:23;;;;:::i;:::-;26531:30;;;;;;;26097:472;;;;:::o;9409:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3012:84::-;3061:5;3086:2;3079:9;;3012:84;:::o;23869:401::-;1748:13;:11;:13::i;:::-;23962:1:::1;23936:23;;:27;:56;;;;23991:1;23967:21;;:25;23936:56;23928:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;24050:1;24033:7;:14;;;;:18;24025:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;24081:4;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;24077:186;;24189:62;24204:23;;24229:21;;24189:62;;;;;;;:::i;:::-;;;;;;;;24077:186;;;;23869:401::o:0;21728:1074::-;1748:13;:11;:13::i;:::-;21836:1:::1;21824:9;:13;21816:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21913:1;21899:11;:15;21891:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;22059:11;22024:4;22009:31;;;22049:4;22009:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:61;;21987:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;22149:63;22166:4;22181:16;;;;;;;;;;;22200:11;22149:8;:63::i;:::-;22229:16;;;;;;;;;;;:32;;;22269:9;22302:4;22322:11;22348:1;22364::::0;22380:10:::1;22405:15;22229:202;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;22225:412;;22524:53;22541:4;22556:16;;;;;;;;;;;22575:1;22524:8;:53::i;:::-;22592:33;;;;;;;;;;:::i;:::-;;;;;;;;22225:412;;;;22452:38;22467:11;22480:9;22452:38;;;;;;;:::i;:::-;;;;;;;;22649:20;22672:21;22649:44;;22723:1;22708:12;:16;22704:91;;;22749:10;22741:28;;:42;22770:12;22741:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22704:91;21805:997;21728:1074:::0;:::o;9269:25::-;;;;;;;;;;;;;:::o;23004:208::-;1748:13;:11;:13::i;:::-;23115:4:::1;23097:23;;:6;:23;;::::0;23089:63:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23170:6;23163:23;;;23187:7;:5;:7::i;:::-;23196;23163:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23004:208:::0;;:::o;23696:114::-;23754:7;23781:21;;23774:28;;23696:114;:::o;21554:96::-;21599:16;21635:7;21628:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21554:96;:::o;9171:41::-;;;;;;;;;;;;;:::o;3211:118::-;3276:7;3303:9;:18;3313:7;3303:18;;;;;;;;;;;;;;;;3296:25;;3211:118;;;:::o;21444:98::-;21493:7;21520;:14;;;;21513:21;;21444:98;:::o;23253:266::-;1748:13;:11;:13::i;:::-;23402:6:::1;23367:4;23352:31;;;23392:4;23352:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;;23330:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;23467:44;23485:4;23492:10;23504:6;23467:9;:44::i;:::-;23253:266:::0;:::o;16016:1789::-;1042:1;1188:7;;:19;1180:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;1042:1;1225:7;:18;;;;16121:1:::1;16095:23;;:27;:56;;;;16150:1;16126:21;;:25;16095:56;16087:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;16209:1;16192:7;:14;;;;:18;16184:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;16246:19;16294:21;;16268:23;;:47;;;;:::i;:::-;16246:69;;8839:12;16334:11;:37;;16326:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;16436:62;16451:23;;16476:21;;16436:62;;;;;;;:::i;:::-;;;;;;;;16545:27;16575:23;;16545:53;;16609:25;16637:21;;16609:49;;16695:1;16669:23;:27;;;;16731:1;16707:21;:25;;;;16790:26;16858:3;9018:2;16820:11;:34;;;;:::i;:::-;16819:42;;;;:::i;:::-;16790:71;;16872:20;16909:18;16895:11;:32;;;;:::i;:::-;16872:55;;16986:21;17010:26;17023:12;17010;:26::i;:::-;16986:50;;17068:1;17051:13;:18:::0;17047:228:::1;;17167:19;17141:23;:45;;;;17225:17;17201:21;:41;;;;17257:7;;;;;;;;17047:228;17365:25;17434:3;9018:2;17394:13;:36;;;;:::i;:::-;17393:44;;;;:::i;:::-;17365:72;;17472:1;17452:17;:21;17448:110;;;17490:56;17508:18;17528:17;17490;:56::i;:::-;17448:110;17644:23;17686:17;17670:13;:33;;;;:::i;:::-;17644:59;;17736:1;17718:15;:19;17714:84;;;17754:32;17770:15;17754;:32::i;:::-;17714:84;16076:1729;;;;;;;;1254:1;998::::0;1266:7;:22;;;;16016:1789::o;9301:28::-;;;;;;;;;;;;;:::o;11082:955::-;1748:13;:11;:13::i;:::-;11143:12:::1;;;;;;;;;;;11142:13;11134:28;;;;;;;;;;;;:::i;:::-;;;;;;;;;11188:4;11173:12;;:19;;;;;;;;;;;;;;;;;;11264:17;;;;;;;;;;;:25;;;11298:4;11305:10;;;;;;;;;;;11264:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11248:13;;:68;;;;;;;;;;;;;;;;;;11411:1;11386:27;;:13;;;;;;;;;;;:27;;::::0;11382:131:::1;;11446:17;;;;;;;;;;;:28;;;11483:4;11490:10;;;;;;;;;;;11446:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11430:13;;:71;;;;;;;;;;;;;;;;;;11382:131;11566:1;11541:27;;:13;;;;;;;;;;;:27;;::::0;11533:42:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11588:69;11605:4;11620:16;;;;;;;;;;;11639:17;11588:8;:69::i;:::-;11693:10;;;;;;;;;;;11686:26;;;11721:16;;;;;;;;;;;11740:17;11686:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11678:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;11783:10;;;;;;;;;;;11776:26;;;11803:13;;;;;;;;;;;11818:17;11776:60;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11862:4;11847:29;;;11877:13;;;;;;;;;;;11892:17;11847:63;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11928:101;11956:16;;;;;;;;;;;11983:17;;;;;;;;;;;12003:10;;;;;;;;;;;12015:13;;;;;;;;;;;11928:101;;;;;;;;;:::i;:::-;;;;;;;;11082:955::o:0;1789:87::-;1835:7;1862:6;;;;;;;;;;;1855:13;;1789:87;:::o;2909:95::-;2956:13;2989:7;2982:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2909:95;:::o;25662:427::-;25710:19;25731;25764:16;25782;25819:13;;;;;;;;;;;25803:42;;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25763:84;;;;;25858:14;25891:13;;;;;;;;;;;25875:37;;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25858:56;;25947:4;25929:23;;:6;:23;;;25925:101;;25985:8;25977:17;;26004:8;25996:17;;25969:45;;;;;;;;;25925:101;26052:8;26044:17;;26071:8;26063:17;;26036:45;;;;;;;25662:427;;;:::o;3337:182::-;3407:4;3424:13;3440:10;3424:26;;3461:28;3471:5;3478:2;3482:6;3461:9;:28::i;:::-;3507:4;3500:11;;;3337:182;;;;:::o;24278:691::-;1748:13;:11;:13::i;:::-;24345:21:::1;24384:4;24369:31;;;24409:4;24424:16;;;;;;;;;;;24369:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24345:97;;8498:18;24457:13;:28;24453:125;;;24502:64;24519:4;24534:16;;;;;;;;;;;8498:18;24502:8;:64::i;:::-;24453:125;24590:19;24619:10;;;;;;;;;;;24612:28;;;24649:4;24612:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24590:65;;24684:1;24670:11;:15;24666:296;;;24702:21;24733:10;;;;;;;;;;;24726:28;;;24763:4;24778:16;;;;;;;;;;;24726:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24702:94;;24831:11;24815:13;:27;24811:140;;;24870:10;;;;;;;;;;;24863:26;;;24898:16;;;;;;;;;;;24917:17;24863:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24811:140;24687:275;24666:296;24334:635;;24278:691::o:0;22810:186::-;1748:13;:11;:13::i;:::-;22903:1:::1;22884:21;;:7;:21;;::::0;22876:56:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22980:7;22943:16;;:45;;;;;;;;;;;;;;;;;;22810:186:::0;:::o;9362:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;3527:142::-;3607:7;3634:11;:18;3646:5;3634:18;;;;;;;;;;;;;;;:27;3653:7;3634:27;;;;;;;;;;;;;;;;3627:34;;3527:142;;;;:::o;26595:406::-;1748:13;:11;:13::i;:::-;26656:69:::1;26673:4;26688:16;;;;;;;;;;;26707:17;26656:8;:69::i;:::-;26743:10;;;;;;;;;;;26736:26;;;26771:16;;;;;;;;;;;26790:17;26736:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26840:10;;;;;;;;;;;26833:26;;;26860:13;;;;;;;;;;;26875:17;26833:60;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;26829:76:::0;::::1;;;;26934:4;26919:29;;;26949:13;;;;;;;;;;;26964:17;26919:63;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;26915:79:::0;::::1;;;;26595:406::o:0;1992:165::-;1748:13;:11;:13::i;:::-;2101:1:::1;2081:22;;:8;:22;;::::0;2073:37:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2121:28;2140:8;2121:18;:28::i;:::-;1992:165:::0;:::o;9219:43::-;;;;;;;;;;;;;:::o;5056:256::-;5175:1;5158:19;;:5;:19;;;;:44;;;;;5200:1;5181:21;;:7;:21;;;;5158:44;5150:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;5250:6;5220:11;:18;5232:5;5220:18;;;;;;;;;;;;;;;:27;5239:7;5220:27;;;;;;;;;;;;;;;:36;;;;5288:7;5272:32;;5281:5;5272:32;;;5297:6;5272:32;;;;;;:::i;:::-;;;;;;;;5056:256;;;:::o;5320:392::-;5421:24;5448:25;5458:5;5465:7;5448:9;:25::i;:::-;5421:52;;5508:17;5488:16;:37;5484:221;;5570:6;5550:16;:26;;5542:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;5627:51;5636:5;5643:7;5671:6;5652:16;:25;5627:8;:51::i;:::-;5484:221;5410:302;5320:392;;;:::o;12449:2660::-;12605:1;12589:18;;:4;:18;;;;:38;;;;;12625:1;12611:16;;:2;:16;;;;12589:38;12581:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;12748:7;:5;:7::i;:::-;12740:15;;:4;:15;;;:32;;;;12765:7;:5;:7::i;:::-;12759:13;;:2;:13;;;12740:32;:57;;;;12792:4;12776:21;;:4;:21;;;12740:57;:80;;;;12815:4;12801:19;;:2;:19;;;12740:80;:97;;;;12825:12;;;;;;;;;;;12824:13;12740:97;12736:250;;;12854:33;12870:4;12876:2;12880:6;12854:15;:33::i;:::-;12902:19;12916:4;12902:13;:19::i;:::-;12936:17;12950:2;12936:13;:17::i;:::-;12968:7;;12736:250;12998:16;13023:13;;;;;;;;;;;13017:19;;:2;:19;;;:44;;;;13048:13;;;;;;;;;;;13040:21;;:4;:21;;;13017:44;12998:63;;13076:11;13072:1910;;;13146:16;13187:3;8559:1;13166:6;:17;;;;:::i;:::-;13165:25;;;;:::i;:::-;13146:44;;13205:22;13239:8;13230:6;:17;;;;:::i;:::-;13205:42;;13332:41;13348:4;13354:2;13358:14;13332:15;:41::i;:::-;13448:46;13464:4;13478;13485:8;13448:15;:46::i;:::-;13635:3;8614:2;13607:8;:24;;;;:::i;:::-;13606:32;;;;:::i;:::-;13579:23;;:59;;;;;;;:::i;:::-;;;;;;;;13728:3;8670:2;13702:8;:22;;;;:::i;:::-;13701:30;;;;:::i;:::-;13676:21;;:55;;;;;;;:::i;:::-;;;;;;;;8839:12;13832:23;;:49;;:118;;;;8839:12;13903:21;;:47;;13832:118;13831:160;;;;;13990:1;13973:7;:14;;;;:18;13831:160;13827:1034;;;14063:69;14080:4;14095:16;;;;;;;;;;;14114:17;14063:8;:69::i;:::-;14158:10;;;;;;;;;;;14151:26;;;14186:16;;;;;;;;;;;14205:17;14151:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14315:10;;;;;;;;;;;14308:26;;;14335:13;;;;;;;;;;;14350:17;14308:60;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14402:4;14387:29;;;14417:13;;;;;;;;;;;14432:17;14387:63;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14491:4;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14487:359;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;14651:69;14711:6;14669:49;;;;;;;;:::i;:::-;;;;;;;;;;;;;14651:69;;;;;;:::i;:::-;;;;;;;;14589:151;14487:359;;;;;14775:51;;;;;;:::i;:::-;;;;;;;;14487:359;;;;;13827:1034;13089:1783;;13072:1910;;;14937:33;14953:4;14959:2;14963:6;14937:15;:33::i;:::-;13072:1910;15054:19;15068:4;15054:13;:19::i;:::-;15084:17;15098:2;15084:13;:17::i;:::-;12570:2539;12449:2660;;;;:::o;1884:100::-;1959:10;1948:21;;:7;:5;:7::i;:::-;:21;;;1940:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;1884:100::o;17813:1874::-;17873:7;17912:1;17897:11;:16;17893:30;;17922:1;17915:8;;;;17893:30;17972:69;17989:4;18004:16;;;;;;;;;;;18023:17;17972:8;:69::i;:::-;18059:10;;;;;;;;;;;18052:26;;;18087:16;;;;;;;;;;;18106:17;18052:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18203:13;;;;;;;;;;;18187:35;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18183:352;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;18434:66;18491:6;18452:46;;;;;;;;:::i;:::-;;;;;;;;;;;;;18434:66;;;;;;:::i;:::-;;;;;;;;18522:1;18515:8;;;;;18183:352;;;;;;;;;;;18241:19;18262;18285:17;:15;:17::i;:::-;18240:62;;;;18322:45;18342:11;18355;18322:45;;;;;;;:::i;:::-;;;;;;;;18225:154;;18547:21;18585:1;18571:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18547:40;;18616:4;18598;18603:1;18598:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18642:10;;;;;;;;;;;18632:4;18637:1;18632:7;;;;;;;;:::i;:::-;;;;;;;:20;;;;;;;;;;;18665:27;18702:10;;;;;;;;;;;18695:28;;;18732:4;18695:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18665:73;;18755:16;;;;;;;;;;;:70;;;18840:11;18866:1;18895:4;18922;18991:3;18973:15;:21;;;;:::i;:::-;18755:250;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18751:929;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;19487:61;19539:6;19505:41;;;;;;;;:::i;:::-;;;;;;;;;;;;;19487:61;;;;;;:::i;:::-;;;;;;;;19570:1;19563:8;;;;;;;18751:929;;;19610:35;;;;;;:::i;:::-;;;;;;;;19667:1;19660:8;;;;;;18751:929;19021:25;19056:10;;;;;;;;;;;19049:28;;;19086:4;19049:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19021:71;;19107:21;19151:19;19131:17;:39;;;;:::i;:::-;19107:63;;19275:1;19259:13;:17;19251:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;19343:42;19358:11;19371:13;19343:42;;;;;;;:::i;:::-;;;;;;;;19407:13;19400:20;;;;;;17813:1874;;;;:::o;19695:1054::-;19822:1;19800:18;:23;:49;;;;19848:1;19827:17;:22;19800:49;19851:7;19796:62;19905:70;19922:4;19937:16;;;;;;;;;;;19956:18;19905:8;:70::i;:::-;19993:10;;;;;;;;;;;19986:26;;;20021:16;;;;;;;;;;;20040:17;19986:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20075:16;;;;;;;;;;;:29;;;20127:4;20147:10;;;;;;;;;;;20172:18;20205:17;20281:3;9101:2;20259:3;:18;;;;:::i;:::-;20237;:41;;;;:::i;:::-;:47;;;;:::i;:::-;20368:3;9101:2;20346:3;:18;;;;:::i;:::-;20325:17;:40;;;;:::i;:::-;:46;;;;:::i;:::-;20421:4;20459:3;20441:15;:21;;;;:::i;:::-;20075:398;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;20071:671;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;20614:26;20633:6;20614:26;;;;;;:::i;:::-;;;;;;;;20560:92;20071:671;;;;;20679:51;;;;;;:::i;:::-;;;;;;;;20071:671;;;;;;;20494:53;20509:18;20529:17;20494:53;;;;;;;:::i;:::-;;;;;;;;20071:671;19695:1054;;;:::o;20757:656::-;20841:1;20826:11;:16;:39;;;;20864:1;20846:7;:14;;;;:19;20826:39;20867:7;20822:52;20894:23;20934:7;:14;;;;20920:11;:28;;;;:::i;:::-;20894:54;;20982:1;20963:15;:20;20959:33;;20985:7;;;20959:33;21009:9;21004:329;21028:7;:14;;;;21024:1;:18;:29;;;;;21050:3;21046:1;:7;21024:29;21004:329;;;21101:1;21079:24;;:7;21087:1;21079:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:24;;;21075:247;;21135:10;;;;;;;;;;;21128:27;;;21156:7;21164:1;21156:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21168:15;21128:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;21124:183;21279:8;21124:183;;21075:247;21004:329;21055:3;;;;;:::i;:::-;;;;21004:329;;;;21358:47;21377:11;21390:7;:14;;;;21358:47;;;;;;;:::i;:::-;;;;;;;;20811:602;20757:656;;:::o;2165:191::-;2239:16;2258:6;;;;;;;;;;;2239:25;;2284:8;2275:6;;:17;;;;;;;;;;;;;;;;;;2339:8;2308:40;;2329:8;2308:40;;;;;;;;;;;;2228:128;2165:191;:::o;4133:507::-;4246:1;4230:18;;:4;:18;;;;:38;;;;;4266:1;4252:16;;:2;:16;;;;4230:38;4222:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;4286:38;4307:4;4313:2;4317:6;4286:20;:38::i;:::-;4335:19;4357:9;:15;4367:4;4357:15;;;;;;;;;;;;;;;;4335:37;;4406:6;4391:11;:21;;4383:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;4487:6;4473:11;:20;4455:9;:15;4465:4;4455:15;;;;;;;;;;;;;;;:38;;;;4525:6;4508:9;:13;4518:2;4508:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;4573:2;4558:26;;4567:4;4558:26;;;4577:6;4558:26;;;;;;:::i;:::-;;;;;;;;4595:37;4615:4;4621:2;4625:6;4595:19;:37::i;:::-;4211:429;4133:507;;;:::o;15117:588::-;15191:13;;;;;;;;;;;15180:24;;:7;:24;;;;:52;;;;;15227:4;15208:24;;:7;:24;;;;15180:52;15176:522;;;15249:15;15267:18;15277:7;15267:9;:18::i;:::-;15249:36;;15300:22;15325:8;:17;15334:7;15325:17;;;;;;;;;;;;;;;;;;;;;;;;;15300:42;;8732:11;15375:7;:28;;:50;;;;;15408:17;15407:18;15375:50;15371:316;;;15466:4;15446:8;:17;15455:7;15446:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;15489:7;15502;15489:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15371:316;;;8732:11;15536:7;:27;:48;;;;;15567:17;15536:48;15532:155;;;15625:5;15605:8;:17;15614:7;15605:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;15649:22;15663:7;15649:13;:22::i;:::-;15532:155;15371:316;15234:464;;15176:522;15117:588;:::o;12045:195::-;12188:44;12215:4;12221:2;12225:6;12188:26;:44::i;:::-;12045:195;;;:::o;12248:193::-;12390:43;12416:4;12422:2;12426:6;12390:25;:43::i;:::-;12248:193;;;:::o;15713:295::-;15777:9;15772:229;15796:7;:14;;;;15792:1;:18;15772:229;;;15850:7;15836:21;;:7;15844:1;15836:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:21;;;15832:158;;15891:7;15916:1;15899:7;:14;;;;:18;;;;:::i;:::-;15891:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15878:7;15886:1;15878:10;;;;;;;;:::i;:::-;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;15937:7;:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;15969:5;;15832:158;15812:3;;;;;:::i;:::-;;;;15772:229;;;;15713:295;:::o;5720:91::-;;;;:::o;5819:90::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:77::-;1386:7;1415:5;1404:16;;1349:77;;;:::o;1432:118::-;1519:24;1537:5;1519:24;:::i;:::-;1514:3;1507:37;1432:118;;:::o;1556:222::-;1649:4;1687:2;1676:9;1672:18;1664:26;;1700:71;1768:1;1757:9;1753:17;1744:6;1700:71;:::i;:::-;1556:222;;;;:::o;1784:75::-;1817:6;1850:2;1844:9;1834:19;;1784:75;:::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:118::-;3885:24;3903:5;3885:24;:::i;:::-;3880:3;3873:37;3798:118;;:::o;3922:763::-;4149:4;4187:3;4176:9;4172:19;4164:27;;4201:71;4269:1;4258:9;4254:17;4245:6;4201:71;:::i;:::-;4282:72;4350:2;4339:9;4335:18;4326:6;4282:72;:::i;:::-;4364:66;4426:2;4415:9;4411:18;4402:6;4364:66;:::i;:::-;4440:72;4508:2;4497:9;4493:18;4484:6;4440:72;:::i;:::-;4522:73;4590:3;4579:9;4575:19;4566:6;4522:73;:::i;:::-;4605;4673:3;4662:9;4658:19;4649:6;4605:73;:::i;:::-;3922:763;;;;;;;;;:::o;4691:619::-;4768:6;4776;4784;4833:2;4821:9;4812:7;4808:23;4804:32;4801:119;;;4839:79;;:::i;:::-;4801:119;4959:1;4984:53;5029:7;5020:6;5009:9;5005:22;4984:53;:::i;:::-;4974:63;;4930:117;5086:2;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5057:118;5214:2;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5185:118;4691:619;;;;;:::o;5316:329::-;5375:6;5424:2;5412:9;5403:7;5399:23;5395:32;5392:119;;;5430:79;;:::i;:::-;5392:119;5550:1;5575:53;5620:7;5611:6;5600:9;5596:22;5575:53;:::i;:::-;5565:63;;5521:117;5316:329;;;;:::o;5651:222::-;5744:4;5782:2;5771:9;5767:18;5759:26;;5795:71;5863:1;5852:9;5848:17;5839:6;5795:71;:::i;:::-;5651:222;;;;:::o;5879:86::-;5914:7;5954:4;5947:5;5943:16;5932:27;;5879:86;;;:::o;5971:112::-;6054:22;6070:5;6054:22;:::i;:::-;6049:3;6042:35;5971:112;;:::o;6089:214::-;6178:4;6216:2;6205:9;6201:18;6193:26;;6229:67;6293:1;6282:9;6278:17;6269:6;6229:67;:::i;:::-;6089:214;;;;:::o;6309:114::-;6376:6;6410:5;6404:12;6394:22;;6309:114;;;:::o;6429:184::-;6528:11;6562:6;6557:3;6550:19;6602:4;6597:3;6593:14;6578:29;;6429:184;;;;:::o;6619:132::-;6686:4;6709:3;6701:11;;6739:4;6734:3;6730:14;6722:22;;6619:132;;;:::o;6757:108::-;6834:24;6852:5;6834:24;:::i;:::-;6829:3;6822:37;6757:108;;:::o;6871:179::-;6940:10;6961:46;7003:3;6995:6;6961:46;:::i;:::-;7039:4;7034:3;7030:14;7016:28;;6871:179;;;;:::o;7056:113::-;7126:4;7158;7153:3;7149:14;7141:22;;7056:113;;;:::o;7205:732::-;7324:3;7353:54;7401:5;7353:54;:::i;:::-;7423:86;7502:6;7497:3;7423:86;:::i;:::-;7416:93;;7533:56;7583:5;7533:56;:::i;:::-;7612:7;7643:1;7628:284;7653:6;7650:1;7647:13;7628:284;;;7729:6;7723:13;7756:63;7815:3;7800:13;7756:63;:::i;:::-;7749:70;;7842:60;7895:6;7842:60;:::i;:::-;7832:70;;7688:224;7675:1;7672;7668:9;7663:14;;7628:284;;;7632:14;7928:3;7921:10;;7329:608;;;7205:732;;;;:::o;7943:373::-;8086:4;8124:2;8113:9;8109:18;8101:26;;8173:9;8167:4;8163:20;8159:1;8148:9;8144:17;8137:47;8201:108;8304:4;8295:6;8201:108;:::i;:::-;8193:116;;7943:373;;;;:::o;8322:60::-;8350:3;8371:5;8364:12;;8322:60;;;:::o;8388:142::-;8438:9;8471:53;8489:34;8498:24;8516:5;8498:24;:::i;:::-;8489:34;:::i;:::-;8471:53;:::i;:::-;8458:66;;8388:142;;;:::o;8536:126::-;8586:9;8619:37;8650:5;8619:37;:::i;:::-;8606:50;;8536:126;;;:::o;8668:151::-;8743:9;8776:37;8807:5;8776:37;:::i;:::-;8763:50;;8668:151;;;:::o;8825:181::-;8937:62;8993:5;8937:62;:::i;:::-;8932:3;8925:75;8825:181;;:::o;9012:272::-;9130:4;9168:2;9157:9;9153:18;9145:26;;9181:96;9274:1;9263:9;9259:17;9250:6;9181:96;:::i;:::-;9012:272;;;;:::o;9290:329::-;9349:6;9398:2;9386:9;9377:7;9373:23;9369:32;9366:119;;;9404:79;;:::i;:::-;9366:119;9524:1;9549:53;9594:7;9585:6;9574:9;9570:22;9549:53;:::i;:::-;9539:63;;9495:117;9290:329;;;;:::o;9625:332::-;9746:4;9784:2;9773:9;9769:18;9761:26;;9797:71;9865:1;9854:9;9850:17;9841:6;9797:71;:::i;:::-;9878:72;9946:2;9935:9;9931:18;9922:6;9878:72;:::i;:::-;9625:332;;;;;:::o;9963:474::-;10031:6;10039;10088:2;10076:9;10067:7;10063:23;10059:32;10056:119;;;10094:79;;:::i;:::-;10056:119;10214:1;10239:53;10284:7;10275:6;10264:9;10260:22;10239:53;:::i;:::-;10229:63;;10185:117;10341:2;10367:53;10412:7;10403:6;10392:9;10388:22;10367:53;:::i;:::-;10357:63;;10312:118;9963:474;;;;;:::o;10443:152::-;10519:9;10552:37;10583:5;10552:37;:::i;:::-;10539:50;;10443:152;;;:::o;10601:183::-;10714:63;10771:5;10714:63;:::i;:::-;10709:3;10702:76;10601:183;;:::o;10790:274::-;10909:4;10947:2;10936:9;10932:18;10924:26;;10960:97;11054:1;11043:9;11039:17;11030:6;10960:97;:::i;:::-;10790:274;;;;:::o;11070:180::-;11118:77;11115:1;11108:88;11215:4;11212:1;11205:15;11239:4;11236:1;11229:15;11256:320;11300:6;11337:1;11331:4;11327:12;11317:22;;11384:1;11378:4;11374:12;11405:18;11395:81;;11461:4;11453:6;11449:17;11439:27;;11395:81;11523:2;11515:6;11512:14;11492:18;11489:38;11486:84;;11542:18;;:::i;:::-;11486:84;11307:269;11256:320;;;:::o;11582:143::-;11639:5;11670:6;11664:13;11655:22;;11686:33;11713:5;11686:33;:::i;:::-;11582:143;;;;:::o;11731:351::-;11801:6;11850:2;11838:9;11829:7;11825:23;11821:32;11818:119;;;11856:79;;:::i;:::-;11818:119;11976:1;12001:64;12057:7;12048:6;12037:9;12033:22;12001:64;:::i;:::-;11991:74;;11947:128;11731:351;;;;:::o;12088:332::-;12209:4;12247:2;12236:9;12232:18;12224:26;;12260:71;12328:1;12317:9;12313:17;12304:6;12260:71;:::i;:::-;12341:72;12409:2;12398:9;12394:18;12385:6;12341:72;:::i;:::-;12088:332;;;;;:::o;12426:143::-;12483:5;12514:6;12508:13;12499:22;;12530:33;12557:5;12530:33;:::i;:::-;12426:143;;;;:::o;12575:351::-;12645:6;12694:2;12682:9;12673:7;12669:23;12665:32;12662:119;;;12700:79;;:::i;:::-;12662:119;12820:1;12845:64;12901:7;12892:6;12881:9;12877:22;12845:64;:::i;:::-;12835:74;;12791:128;12575:351;;;;:::o;12932:180::-;12980:77;12977:1;12970:88;13077:4;13074:1;13067:15;13101:4;13098:1;13091:15;13118:410;13158:7;13181:20;13199:1;13181:20;:::i;:::-;13176:25;;13215:20;13233:1;13215:20;:::i;:::-;13210:25;;13270:1;13267;13263:9;13292:30;13310:11;13292:30;:::i;:::-;13281:41;;13471:1;13462:7;13458:15;13455:1;13452:22;13432:1;13425:9;13405:83;13382:139;;13501:18;;:::i;:::-;13382:139;13166:362;13118:410;;;;:::o;13534:191::-;13574:3;13593:20;13611:1;13593:20;:::i;:::-;13588:25;;13627:20;13645:1;13627:20;:::i;:::-;13622:25;;13670:1;13667;13663:9;13656:16;;13691:3;13688:1;13685:10;13682:36;;;13698:18;;:::i;:::-;13682:36;13534:191;;;;:::o;13731:180::-;13779:77;13776:1;13769:88;13876:4;13873:1;13866:15;13900:4;13897:1;13890:15;13917:185;13957:1;13974:20;13992:1;13974:20;:::i;:::-;13969:25;;14008:20;14026:1;14008:20;:::i;:::-;14003:25;;14047:1;14037:35;;14052:18;;:::i;:::-;14037:35;14094:1;14091;14087:9;14082:14;;13917:185;;;;:::o;14108:167::-;14248:19;14244:1;14236:6;14232:14;14225:43;14108:167;:::o;14281:366::-;14423:3;14444:67;14508:2;14503:3;14444:67;:::i;:::-;14437:74;;14520:93;14609:3;14520:93;:::i;:::-;14638:2;14633:3;14629:12;14622:19;;14281:366;;;:::o;14653:419::-;14819:4;14857:2;14846:9;14842:18;14834:26;;14906:9;14900:4;14896:20;14892:1;14881:9;14877:17;14870:47;14934:131;15060:4;14934:131;:::i;:::-;14926:139;;14653:419;;;:::o;15078:160::-;15218:12;15214:1;15206:6;15202:14;15195:36;15078:160;:::o;15244:366::-;15386:3;15407:67;15471:2;15466:3;15407:67;:::i;:::-;15400:74;;15483:93;15572:3;15483:93;:::i;:::-;15601:2;15596:3;15592:12;15585:19;;15244:366;;;:::o;15616:419::-;15782:4;15820:2;15809:9;15805:18;15797:26;;15869:9;15863:4;15859:20;15855:1;15844:9;15840:17;15833:47;15897:131;16023:4;15897:131;:::i;:::-;15889:139;;15616:419;;;:::o;16041:225::-;16181:34;16177:1;16169:6;16165:14;16158:58;16250:8;16245:2;16237:6;16233:15;16226:33;16041:225;:::o;16272:366::-;16414:3;16435:67;16499:2;16494:3;16435:67;:::i;:::-;16428:74;;16511:93;16600:3;16511:93;:::i;:::-;16629:2;16624:3;16620:12;16613:19;;16272:366;;;:::o;16644:419::-;16810:4;16848:2;16837:9;16833:18;16825:26;;16897:9;16891:4;16887:20;16883:1;16872:9;16868:17;16861:47;16925:131;17051:4;16925:131;:::i;:::-;16917:139;;16644:419;;;:::o;17069:234::-;17209:34;17205:1;17197:6;17193:14;17186:58;17278:17;17273:2;17265:6;17261:15;17254:42;17069:234;:::o;17309:366::-;17451:3;17472:67;17536:2;17531:3;17472:67;:::i;:::-;17465:74;;17548:93;17637:3;17548:93;:::i;:::-;17666:2;17661:3;17657:12;17650:19;;17309:366;;;:::o;17681:419::-;17847:4;17885:2;17874:9;17870:18;17862:26;;17934:9;17928:4;17924:20;17920:1;17909:9;17905:17;17898:47;17962:131;18088:4;17962:131;:::i;:::-;17954:139;;17681:419;;;:::o;18106:225::-;18246:34;18242:1;18234:6;18230:14;18223:58;18315:8;18310:2;18302:6;18298:15;18291:33;18106:225;:::o;18337:366::-;18479:3;18500:67;18564:2;18559:3;18500:67;:::i;:::-;18493:74;;18576:93;18665:3;18576:93;:::i;:::-;18694:2;18689:3;18685:12;18678:19;;18337:366;;;:::o;18709:419::-;18875:4;18913:2;18902:9;18898:18;18890:26;;18962:9;18956:4;18952:20;18948:1;18937:9;18933:17;18926:47;18990:131;19116:4;18990:131;:::i;:::-;18982:139;;18709:419;;;:::o;19134:85::-;19179:7;19208:5;19197:16;;19134:85;;;:::o;19225:158::-;19283:9;19316:61;19334:42;19343:32;19369:5;19343:32;:::i;:::-;19334:42;:::i;:::-;19316:61;:::i;:::-;19303:74;;19225:158;;;:::o;19389:147::-;19484:45;19523:5;19484:45;:::i;:::-;19479:3;19472:58;19389:147;;:::o;19542:807::-;19791:4;19829:3;19818:9;19814:19;19806:27;;19843:71;19911:1;19900:9;19896:17;19887:6;19843:71;:::i;:::-;19924:72;19992:2;19981:9;19977:18;19968:6;19924:72;:::i;:::-;20006:80;20082:2;20071:9;20067:18;20058:6;20006:80;:::i;:::-;20096;20172:2;20161:9;20157:18;20148:6;20096:80;:::i;:::-;20186:73;20254:3;20243:9;20239:19;20230:6;20186:73;:::i;:::-;20269;20337:3;20326:9;20322:19;20313:6;20269:73;:::i;:::-;19542:807;;;;;;;;;:::o;20355:663::-;20443:6;20451;20459;20508:2;20496:9;20487:7;20483:23;20479:32;20476:119;;;20514:79;;:::i;:::-;20476:119;20634:1;20659:64;20715:7;20706:6;20695:9;20691:22;20659:64;:::i;:::-;20649:74;;20605:128;20772:2;20798:64;20854:7;20845:6;20834:9;20830:22;20798:64;:::i;:::-;20788:74;;20743:129;20911:2;20937:64;20993:7;20984:6;20973:9;20969:22;20937:64;:::i;:::-;20927:74;;20882:129;20355:663;;;;;:::o;21024:173::-;21164:25;21160:1;21152:6;21148:14;21141:49;21024:173;:::o;21203:366::-;21345:3;21366:67;21430:2;21425:3;21366:67;:::i;:::-;21359:74;;21442:93;21531:3;21442:93;:::i;:::-;21560:2;21555:3;21551:12;21544:19;;21203:366;;;:::o;21575:419::-;21741:4;21779:2;21768:9;21764:18;21756:26;;21828:9;21822:4;21818:20;21814:1;21803:9;21799:17;21792:47;21856:131;21982:4;21856:131;:::i;:::-;21848:139;;21575:419;;;:::o;22000:177::-;22140:29;22136:1;22128:6;22124:14;22117:53;22000:177;:::o;22183:366::-;22325:3;22346:67;22410:2;22405:3;22346:67;:::i;:::-;22339:74;;22422:93;22511:3;22422:93;:::i;:::-;22540:2;22535:3;22531:12;22524:19;;22183:366;;;:::o;22555:419::-;22721:4;22759:2;22748:9;22744:18;22736:26;;22808:9;22802:4;22798:20;22794:1;22783:9;22779:17;22772:47;22836:131;22962:4;22836:131;:::i;:::-;22828:139;;22555:419;;;:::o;22980:332::-;23101:4;23139:2;23128:9;23124:18;23116:26;;23152:71;23220:1;23209:9;23205:17;23196:6;23152:71;:::i;:::-;23233:72;23301:2;23290:9;23286:18;23277:6;23233:72;:::i;:::-;22980:332;;;;;:::o;23318:116::-;23388:21;23403:5;23388:21;:::i;:::-;23381:5;23378:32;23368:60;;23424:1;23421;23414:12;23368:60;23318:116;:::o;23440:137::-;23494:5;23525:6;23519:13;23510:22;;23541:30;23565:5;23541:30;:::i;:::-;23440:137;;;;:::o;23583:345::-;23650:6;23699:2;23687:9;23678:7;23674:23;23670:32;23667:119;;;23705:79;;:::i;:::-;23667:119;23825:1;23850:61;23903:7;23894:6;23883:9;23879:22;23850:61;:::i;:::-;23840:71;;23796:125;23583:345;;;;:::o;23934:170::-;24074:22;24070:1;24062:6;24058:14;24051:46;23934:170;:::o;24110:366::-;24252:3;24273:67;24337:2;24332:3;24273:67;:::i;:::-;24266:74;;24349:93;24438:3;24349:93;:::i;:::-;24467:2;24462:3;24458:12;24451:19;;24110:366;;;:::o;24482:419::-;24648:4;24686:2;24675:9;24671:18;24663:26;;24735:9;24729:4;24725:20;24721:1;24710:9;24706:17;24699:47;24763:131;24889:4;24763:131;:::i;:::-;24755:139;;24482:419;;;:::o;24907:152::-;25047:4;25043:1;25035:6;25031:14;25024:28;24907:152;:::o;25065:365::-;25207:3;25228:66;25292:1;25287:3;25228:66;:::i;:::-;25221:73;;25303:93;25392:3;25303:93;:::i;:::-;25421:2;25416:3;25412:12;25405:19;;25065:365;;;:::o;25436:419::-;25602:4;25640:2;25629:9;25625:18;25617:26;;25689:9;25683:4;25679:20;25675:1;25664:9;25660:17;25653:47;25717:131;25843:4;25717:131;:::i;:::-;25709:139;;25436:419;;;:::o;25861:221::-;26001:34;25997:1;25989:6;25985:14;25978:58;26070:4;26065:2;26057:6;26053:15;26046:29;25861:221;:::o;26088:366::-;26230:3;26251:67;26315:2;26310:3;26251:67;:::i;:::-;26244:74;;26327:93;26416:3;26327:93;:::i;:::-;26445:2;26440:3;26436:12;26429:19;;26088:366;;;:::o;26460:419::-;26626:4;26664:2;26653:9;26649:18;26641:26;;26713:9;26707:4;26703:20;26699:1;26688:9;26684:17;26677:47;26741:131;26867:4;26741:131;:::i;:::-;26733:139;;26460:419;;;:::o;26885:194::-;26925:4;26945:20;26963:1;26945:20;:::i;:::-;26940:25;;26979:20;26997:1;26979:20;:::i;:::-;26974:25;;27023:1;27020;27016:9;27008:17;;27047:1;27041:4;27038:11;27035:37;;;27052:18;;:::i;:::-;27035:37;26885:194;;;;:::o;27085:152::-;27225:4;27221:1;27213:6;27209:14;27202:28;27085:152;:::o;27243:365::-;27385:3;27406:66;27470:1;27465:3;27406:66;:::i;:::-;27399:73;;27481:93;27570:3;27481:93;:::i;:::-;27599:2;27594:3;27590:12;27583:19;;27243:365;;;:::o;27614:419::-;27780:4;27818:2;27807:9;27803:18;27795:26;;27867:9;27861:4;27857:20;27853:1;27842:9;27838:17;27831:47;27895:131;28021:4;27895:131;:::i;:::-;27887:139;;27614:419;;;:::o;28039:152::-;28179:4;28175:1;28167:6;28163:14;28156:28;28039:152;:::o;28197:365::-;28339:3;28360:66;28424:1;28419:3;28360:66;:::i;:::-;28353:73;;28435:93;28524:3;28435:93;:::i;:::-;28553:2;28548:3;28544:12;28537:19;;28197:365;;;:::o;28568:419::-;28734:4;28772:2;28761:9;28757:18;28749:26;;28821:9;28815:4;28811:20;28807:1;28796:9;28792:17;28785:47;28849:131;28975:4;28849:131;:::i;:::-;28841:139;;28568:419;;;:::o;28993:152::-;29133:4;29129:1;29121:6;29117:14;29110:28;28993:152;:::o;29151:365::-;29293:3;29314:66;29378:1;29373:3;29314:66;:::i;:::-;29307:73;;29389:93;29478:3;29389:93;:::i;:::-;29507:2;29502:3;29498:12;29491:19;;29151:365;;;:::o;29522:419::-;29688:4;29726:2;29715:9;29711:18;29703:26;;29775:9;29769:4;29765:20;29761:1;29750:9;29746:17;29739:47;29803:131;29929:4;29803:131;:::i;:::-;29795:139;;29522:419;;;:::o;29947:553::-;30124:4;30162:3;30151:9;30147:19;30139:27;;30176:71;30244:1;30233:9;30229:17;30220:6;30176:71;:::i;:::-;30257:72;30325:2;30314:9;30310:18;30301:6;30257:72;:::i;:::-;30339;30407:2;30396:9;30392:18;30383:6;30339:72;:::i;:::-;30421;30489:2;30478:9;30474:18;30465:6;30421:72;:::i;:::-;29947:553;;;;;;;:::o;30506:114::-;30543:7;30583:30;30576:5;30572:42;30561:53;;30506:114;;;:::o;30626:122::-;30699:24;30717:5;30699:24;:::i;:::-;30692:5;30689:35;30679:63;;30738:1;30735;30728:12;30679:63;30626:122;:::o;30754:143::-;30811:5;30842:6;30836:13;30827:22;;30858:33;30885:5;30858:33;:::i;:::-;30754:143;;;;:::o;30903:93::-;30939:7;30979:10;30972:5;30968:22;30957:33;;30903:93;;;:::o;31002:120::-;31074:23;31091:5;31074:23;:::i;:::-;31067:5;31064:34;31054:62;;31112:1;31109;31102:12;31054:62;31002:120;:::o;31128:141::-;31184:5;31215:6;31209:13;31200:22;;31231:32;31257:5;31231:32;:::i;:::-;31128:141;;;;:::o;31275:661::-;31362:6;31370;31378;31427:2;31415:9;31406:7;31402:23;31398:32;31395:119;;;31433:79;;:::i;:::-;31395:119;31553:1;31578:64;31634:7;31625:6;31614:9;31610:22;31578:64;:::i;:::-;31568:74;;31524:128;31691:2;31717:64;31773:7;31764:6;31753:9;31749:22;31717:64;:::i;:::-;31707:74;;31662:129;31830:2;31856:63;31911:7;31902:6;31891:9;31887:22;31856:63;:::i;:::-;31846:73;;31801:128;31275:661;;;;;:::o;31942:172::-;32082:24;32078:1;32070:6;32066:14;32059:48;31942:172;:::o;32120:366::-;32262:3;32283:67;32347:2;32342:3;32283:67;:::i;:::-;32276:74;;32359:93;32448:3;32359:93;:::i;:::-;32477:2;32472:3;32468:12;32461:19;;32120:366;;;:::o;32492:419::-;32658:4;32696:2;32685:9;32681:18;32673:26;;32745:9;32739:4;32735:20;32731:1;32720:9;32716:17;32709:47;32773:131;32899:4;32773:131;:::i;:::-;32765:139;;32492:419;;;:::o;32917:152::-;33057:4;33053:1;33045:6;33041:14;33034:28;32917:152;:::o;33075:365::-;33217:3;33238:66;33302:1;33297:3;33238:66;:::i;:::-;33231:73;;33313:93;33402:3;33313:93;:::i;:::-;33431:2;33426:3;33422:12;33415:19;;33075:365;;;:::o;33446:419::-;33612:4;33650:2;33639:9;33635:18;33627:26;;33699:9;33693:4;33689:20;33685:1;33674:9;33670:17;33663:47;33727:131;33853:4;33727:131;:::i;:::-;33719:139;;33446:419;;;:::o;33871:152::-;34011:4;34007:1;33999:6;33995:14;33988:28;33871:152;:::o;34029:365::-;34171:3;34192:66;34256:1;34251:3;34192:66;:::i;:::-;34185:73;;34267:93;34356:3;34267:93;:::i;:::-;34385:2;34380:3;34376:12;34369:19;;34029:365;;;:::o;34400:419::-;34566:4;34604:2;34593:9;34589:18;34581:26;;34653:9;34647:4;34643:20;34639:1;34628:9;34624:17;34617:47;34681:131;34807:4;34681:131;:::i;:::-;34673:139;;34400:419;;;:::o;34825:152::-;34965:4;34961:1;34953:6;34949:14;34942:28;34825:152;:::o;34983:365::-;35125:3;35146:66;35210:1;35205:3;35146:66;:::i;:::-;35139:73;;35221:93;35310:3;35221:93;:::i;:::-;35339:2;35334:3;35330:12;35323:19;;34983:365;;;:::o;35354:419::-;35520:4;35558:2;35547:9;35543:18;35535:26;;35607:9;35601:4;35597:20;35593:1;35582:9;35578:17;35571:47;35635:131;35761:4;35635:131;:::i;:::-;35627:139;;35354:419;;;:::o;35779:179::-;35919:31;35915:1;35907:6;35903:14;35896:55;35779:179;:::o;35964:366::-;36106:3;36127:67;36191:2;36186:3;36127:67;:::i;:::-;36120:74;;36203:93;36292:3;36203:93;:::i;:::-;36321:2;36316:3;36312:12;36305:19;;35964:366;;;:::o;36336:419::-;36502:4;36540:2;36529:9;36525:18;36517:26;;36589:9;36583:4;36579:20;36575:1;36564:9;36560:17;36553:47;36617:131;36743:4;36617:131;:::i;:::-;36609:139;;36336:419;;;:::o;36761:106::-;36805:8;36854:5;36849:3;36845:15;36824:36;;36761:106;;;:::o;36873:183::-;36908:3;36946:1;36928:16;36925:23;36922:128;;;36984:1;36981;36978;36963:23;37006:34;37037:1;37031:8;37006:34;:::i;:::-;36999:41;;36922:128;36873:183;:::o;37062:180::-;37110:77;37107:1;37100:88;37207:4;37204:1;37197:15;37231:4;37228:1;37221:15;37248:281;37331:27;37353:4;37331:27;:::i;:::-;37323:6;37319:40;37461:6;37449:10;37446:22;37425:18;37413:10;37410:34;37407:62;37404:88;;;37472:18;;:::i;:::-;37404:88;37512:10;37508:2;37501:22;37291:238;37248:281;;:::o;37535:711::-;37574:3;37612:4;37594:16;37591:26;37620:5;37588:39;37649:20;;:::i;:::-;37724:1;37706:16;37702:24;37699:1;37693:4;37678:49;37757:4;37751:11;37856:16;37849:4;37841:6;37837:17;37834:39;37801:18;37793:6;37790:30;37774:113;37771:146;;;37902:5;;;;37771:146;37948:6;37942:4;37938:17;37984:3;37978:10;38011:18;38003:6;38000:30;37997:43;;;38033:5;;;;;;37997:43;38081:6;38074:4;38069:3;38065:14;38061:27;38140:1;38122:16;38118:24;38112:4;38108:35;38103:3;38100:44;38097:57;;;38147:5;;;;;;;38097:57;38164;38212:6;38206:4;38202:17;38194:6;38190:30;38184:4;38164:57;:::i;:::-;38237:3;38230:10;;37578:668;;;;;37535:711;;:::o;38252:148::-;38354:11;38391:3;38376:18;;38252:148;;;;:::o;38406:171::-;38546:23;38542:1;38534:6;38530:14;38523:47;38406:171;:::o;38583:402::-;38743:3;38764:85;38846:2;38841:3;38764:85;:::i;:::-;38757:92;;38858:93;38947:3;38858:93;:::i;:::-;38976:2;38971:3;38967:12;38960:19;;38583:402;;;:::o;38991:390::-;39097:3;39125:39;39158:5;39125:39;:::i;:::-;39180:89;39262:6;39257:3;39180:89;:::i;:::-;39173:96;;39278:65;39336:6;39331:3;39324:4;39317:5;39313:16;39278:65;:::i;:::-;39368:6;39363:3;39359:16;39352:23;;39101:280;38991:390;;;;:::o;39387:541::-;39620:3;39642:148;39786:3;39642:148;:::i;:::-;39635:155;;39807:95;39898:3;39889:6;39807:95;:::i;:::-;39800:102;;39919:3;39912:10;;39387:541;;;;:::o;39934:224::-;40074:34;40070:1;40062:6;40058:14;40051:58;40143:7;40138:2;40130:6;40126:15;40119:32;39934:224;:::o;40164:366::-;40306:3;40327:67;40391:2;40386:3;40327:67;:::i;:::-;40320:74;;40403:93;40492:3;40403:93;:::i;:::-;40521:2;40516:3;40512:12;40505:19;;40164:366;;;:::o;40536:419::-;40702:4;40740:2;40729:9;40725:18;40717:26;;40789:9;40783:4;40779:20;40775:1;40764:9;40760:17;40753:47;40817:131;40943:4;40817:131;:::i;:::-;40809:139;;40536:419;;;:::o;40961:152::-;41101:4;41097:1;41089:6;41085:14;41078:28;40961:152;:::o;41119:365::-;41261:3;41282:66;41346:1;41341:3;41282:66;:::i;:::-;41275:73;;41357:93;41446:3;41357:93;:::i;:::-;41475:2;41470:3;41466:12;41459:19;;41119:365;;;:::o;41490:419::-;41656:4;41694:2;41683:9;41679:18;41671:26;;41743:9;41737:4;41733:20;41729:1;41718:9;41714:17;41707:47;41771:131;41897:4;41771:131;:::i;:::-;41763:139;;41490:419;;;:::o;41915:168::-;42055:20;42051:1;42043:6;42039:14;42032:44;41915:168;:::o;42089:402::-;42249:3;42270:85;42352:2;42347:3;42270:85;:::i;:::-;42263:92;;42364:93;42453:3;42364:93;:::i;:::-;42482:2;42477:3;42473:12;42466:19;;42089:402;;;:::o;42497:541::-;42730:3;42752:148;42896:3;42752:148;:::i;:::-;42745:155;;42917:95;43008:3;42999:6;42917:95;:::i;:::-;42910:102;;43029:3;43022:10;;42497:541;;;;:::o;43044:180::-;43092:77;43089:1;43082:88;43189:4;43186:1;43179:15;43213:4;43210:1;43203:15;43230:831;43493:4;43531:3;43520:9;43516:19;43508:27;;43545:71;43613:1;43602:9;43598:17;43589:6;43545:71;:::i;:::-;43626:80;43702:2;43691:9;43687:18;43678:6;43626:80;:::i;:::-;43753:9;43747:4;43743:20;43738:2;43727:9;43723:18;43716:48;43781:108;43884:4;43875:6;43781:108;:::i;:::-;43773:116;;43899:72;43967:2;43956:9;43952:18;43943:6;43899:72;:::i;:::-;43981:73;44049:3;44038:9;44034:19;44025:6;43981:73;:::i;:::-;43230:831;;;;;;;;:::o;44067:163::-;44207:15;44203:1;44195:6;44191:14;44184:39;44067:163;:::o;44236:402::-;44396:3;44417:85;44499:2;44494:3;44417:85;:::i;:::-;44410:92;;44511:93;44600:3;44511:93;:::i;:::-;44629:2;44624:3;44620:12;44613:19;;44236:402;;;:::o;44644:541::-;44877:3;44899:148;45043:3;44899:148;:::i;:::-;44892:155;;45064:95;45155:3;45146:6;45064:95;:::i;:::-;45057:102;;45176:3;45169:10;;44644:541;;;;:::o;45191:171::-;45331:23;45327:1;45319:6;45315:14;45308:47;45191:171;:::o;45368:366::-;45510:3;45531:67;45595:2;45590:3;45531:67;:::i;:::-;45524:74;;45607:93;45696:3;45607:93;:::i;:::-;45725:2;45720:3;45716:12;45709:19;;45368:366;;;:::o;45740:419::-;45906:4;45944:2;45933:9;45929:18;45921:26;;45993:9;45987:4;45983:20;45979:1;45968:9;45964:17;45957:47;46021:131;46147:4;46021:131;:::i;:::-;46013:139;;45740:419;;;:::o;46165:178::-;46305:30;46301:1;46293:6;46289:14;46282:54;46165:178;:::o;46349:366::-;46491:3;46512:67;46576:2;46571:3;46512:67;:::i;:::-;46505:74;;46588:93;46677:3;46588:93;:::i;:::-;46706:2;46701:3;46697:12;46690:19;;46349:366;;;:::o;46721:419::-;46887:4;46925:2;46914:9;46910:18;46902:26;;46974:9;46968:4;46964:20;46960:1;46949:9;46945:17;46938:47;47002:131;47128:4;47002:131;:::i;:::-;46994:139;;46721:419;;;:::o;47146:997::-;47435:4;47473:3;47462:9;47458:19;47450:27;;47487:71;47555:1;47544:9;47540:17;47531:6;47487:71;:::i;:::-;47568:72;47636:2;47625:9;47621:18;47612:6;47568:72;:::i;:::-;47650;47718:2;47707:9;47703:18;47694:6;47650:72;:::i;:::-;47732;47800:2;47789:9;47785:18;47776:6;47732:72;:::i;:::-;47814:73;47882:3;47871:9;47867:19;47858:6;47814:73;:::i;:::-;47897;47965:3;47954:9;47950:19;47941:6;47897:73;:::i;:::-;47980;48048:3;48037:9;48033:19;48024:6;47980:73;:::i;:::-;48063;48131:3;48120:9;48116:19;48107:6;48063:73;:::i;:::-;47146:997;;;;;;;;;;;:::o;48149:179::-;48289:31;48285:1;48277:6;48273:14;48266:55;48149:179;:::o;48334:366::-;48476:3;48497:67;48561:2;48556:3;48497:67;:::i;:::-;48490:74;;48573:93;48662:3;48573:93;:::i;:::-;48691:2;48686:3;48682:12;48675:19;;48334:366;;;:::o;48706:419::-;48872:4;48910:2;48899:9;48895:18;48887:26;;48959:9;48953:4;48949:20;48945:1;48934:9;48930:17;48923:47;48987:131;49113:4;48987:131;:::i;:::-;48979:139;;48706:419;;;:::o;49131:233::-;49170:3;49193:24;49211:5;49193:24;:::i;:::-;49184:33;;49239:66;49232:5;49229:77;49226:103;;49309:18;;:::i;:::-;49226:103;49356:1;49349:5;49345:13;49338:20;;49131:233;;;:::o;49370:152::-;49510:4;49506:1;49498:6;49494:14;49487:28;49370:152;:::o;49528:365::-;49670:3;49691:66;49755:1;49750:3;49691:66;:::i;:::-;49684:73;;49766:93;49855:3;49766:93;:::i;:::-;49884:2;49879:3;49875:12;49868:19;;49528:365;;;:::o;49899:419::-;50065:4;50103:2;50092:9;50088:18;50080:26;;50152:9;50146:4;50142:20;50138:1;50127:9;50123:17;50116:47;50180:131;50306:4;50180:131;:::i;:::-;50172:139;;49899:419;;;:::o;50324:152::-;50464:4;50460:1;50452:6;50448:14;50441:28;50324:152;:::o;50482:365::-;50624:3;50645:66;50709:1;50704:3;50645:66;:::i;:::-;50638:73;;50720:93;50809:3;50720:93;:::i;:::-;50838:2;50833:3;50829:12;50822:19;;50482:365;;;:::o;50853:419::-;51019:4;51057:2;51046:9;51042:18;51034:26;;51106:9;51100:4;51096:20;51092:1;51081:9;51077:17;51070:47;51134:131;51260:4;51134:131;:::i;:::-;51126:139;;50853:419;;;:::o;51278:180::-;51326:77;51323:1;51316:88;51423:4;51420:1;51413:15;51447:4;51444:1;51437:15
Swarm Source
ipfs://cb730eecf6b19db9464b6b344d4aeb1724b4b1ef69d88060cf82c3365e0369b1
[ 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.