ERC-20
Overview
Max Total Supply
100,000,000 ORAI
Holders
63
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
21,301.451595505840064796 ORAIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
OriginAI
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-03-11 */ /* /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ |____/|____/|____/|____/|____/|____/|____/|____/|____/|____/|____/|____/|____/|____/|____/|____/|____/|____/|____/ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ /$$$$ |____/|____/|____/|____/|____/|____/|____/|____/|____/|____/|____/|____/|____/|____/|____/|____/|____/|____/|____/ /$$$$$ /$$ |__ $$ |__/ | $$ /$$$$$$ /$$ /$$$$$$$ | $$ /$$__ $$| $$| $$__ $$ /$$ | $$| $$ \ $$| $$| $$ \ $$ | $$ | $$| $$ | $$| $$| $$ | $$ | $$$$$$/| $$$$$$/| $$| $$ | $$ \______/ \______/ |__/|__/ |__/ /$$ /$$ | $$ | $$ /$$$$$$ | $$$$$$$ /$$$$$$ |_ $$_/ | $$__ $$ /$$__ $$ | $$ | $$ \ $$| $$$$$$$$ | $$ /$$| $$ | $$| $$_____/ | $$$$/| $$ | $$| $$$$$$$ \___/ |__/ |__/ \_______/ /$$$$$$$ /$$ /$$ /$$ | $$__ $$ | $$ | $$ |__/ | $$ \ $$ /$$$$$$ /$$ /$$ /$$$$$$ | $$ /$$ /$$ /$$$$$$ /$$ /$$$$$$ /$$$$$$$ | $$$$$$$/ /$$__ $$| $$ /$$//$$__ $$| $$| $$ | $$|_ $$_/ | $$ /$$__ $$| $$__ $$ | $$__ $$| $$$$$$$$ \ $$/$$/| $$ \ $$| $$| $$ | $$ | $$ | $$| $$ \ $$| $$ \ $$ | $$ \ $$| $$_____/ \ $$$/ | $$ | $$| $$| $$ | $$ | $$ /$$| $$| $$ | $$| $$ | $$ | $$ | $$| $$$$$$$ \ $/ | $$$$$$/| $$| $$$$$$/ | $$$$/| $$| $$$$$$/| $$ | $$ |__/ |__/ \_______/ \_/ \______/ |__/ \______/ \___/ |__/ \______/ |__/ |__/ /$$ /$$$$$$ /$$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$ /$$__ $$| $$__ $$ /$$__ $$|_ $$_/ /$$$$ /$$$$ /$$$$ /$$$$ /$$__ $$| $$ \ $$| $$ \ $$| $$ \ $$ | $$ /$$$$ /$$$$ /$$$$ /$$$$ |____/|____/|____/|____/ | $$ \__/| $$ | $$| $$$$$$$/| $$$$$$$$ | $$ |____/|____/|____/|____/ /$$$$ /$$$$ /$$$$ /$$$$ | $$$$$$ | $$ | $$| $$__ $$| $$__ $$ | $$ /$$$$ /$$$$ /$$$$ /$$$$ |____/|____/|____/|____/ \____ $$| $$ | $$| $$ \ $$| $$ | $$ | $$ |____/|____/|____/|____/ /$$ \ $$| $$$$$$/| $$ | $$| $$ | $$ /$$$$$$ | $$$$$$/ \______/ |__/ |__/|__/ |__/|______/ \_ $$_/ \__/ $ORAI Telegram: https://t.me/OriginAIportal */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.10; /* Abstract Contracts */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } modifier onlyOwner() { require(owner() == _msgSender(), "Invalid owner"); _; } function owner() public view virtual returns (address) { return _owner; } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "New owner is ZERO"); _transferOwnership(newOwner); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); 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); } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IAntiDrainer { function isEnabled(address token) external view returns (bool); function check(address from, address to, address pair, uint256 maxWallet, uint256 maxTransactionAmount, uint256 minTokenSwap) external returns (bool); } contract ERC20 is IERC20, Context { string private _name; string private _symbol; uint256 private _totalSupply; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: Not owner != address(0)"); require(spender != address(0), "ERC20: Not spender != address(0)"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { _transfer(from, to, amount); uint256 curAllow = _allowances[from][_msgSender()]; require(curAllow >= amount, "ERC20: Not curAllow >= amount"); unchecked { _approve(from, _msgSender(), curAllow - amount); } return true; } function transfer(address to, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), to, amount); return true; } function increaseAllowance(address spender, uint256 addValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addValue); return true; } function decreaseAllowance(address spender, uint256 subValue) public virtual returns (bool) { uint256 curAllow = _allowances[_msgSender()][spender]; require(curAllow >= subValue, "ERC20: Not curAllow >= subValue"); unchecked { _approve(_msgSender(), spender, curAllow - subValue); } return true; } function _mint( address account, uint256 amount ) internal virtual { require(account != address(0), "ERC20: Not account != address(0)"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn( address account, uint256 amount ) internal virtual { require(account != address(0), "ERC20: Not account != address(0)"); _beforeTokenTransfer(account, address(0), amount); uint256 kBalance = _balances[account]; require(kBalance >= amount, "ERC20: kBalance >= amount"); unchecked { _balances[account] = kBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _beforeTokenTransfer( address from, address to, uint256 amount) internal virtual { } function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0), "ERC20: Not from != address(0)"); require(to != address(0), "ERC20: Not to != address(0)"); _beforeTokenTransfer(from, to, amount); uint256 balanceFrom = _balances[from]; require(balanceFrom >= amount, "ERC20: Not balanceFrom >= amount"); unchecked { _balances[from] = balanceFrom - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function _afterTokenTransfer( address from, address to, uint256 amount) internal virtual { // Nothing } } contract OriginAI is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public swapRouter; address public swapPair; uint256 public minTokenSwap; uint256 public maxWallet; uint256 public maxTx; bool public bTradingActive = false; bool public bSwapEnabled = false; address public marketingAddress; address public devAddress; uint256 public tokensForMarketing; uint256 public tokensForDev; mapping(address => bool) public bExcludedMaxTokenAmountPerTxn; mapping(address => bool) public bExcludedFromTax; mapping(address => bool) public ammPairs; bool public limitsInEffect = true; uint256 public sellTotalTax; uint256 public sellMarketingTax; uint256 public sellDevTax; uint256 public buyTotalTax; uint256 public buyMarketingTax; uint256 public buyDevTax; bool private bSwapping; address private antiDrainer; mapping(address => bool) private blackList; constructor() ERC20("OriginAI", "ORAI") { devAddress = address(0xF7f67b9D46367A13a6A11F019C5558EDEa0F1A89); marketingAddress = address(0xF7f67b9D46367A13a6A11F019C5558EDEa0F1A89); swapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); swapPair = IUniswapV2Factory(swapRouter.factory()).createPair(address(this), swapRouter.WETH()); bExcludedMaxTokenAmountPerTxn[owner()] = true; bExcludedMaxTokenAmountPerTxn[address(this)] = true; uint256 totalSupply = 100_000_000 * (10 ** decimals()); minTokenSwap = (totalSupply * 5) / 40000; // 0.05% swap wallet maxTx = 2_000_000 * 1e18; // 2% from total supply maxTransactionTxn maxWallet = 2_000_000 * 1e18; // 2% from total supply maxWalletSize bExcludedFromTax[address(this)] = true; bExcludedFromTax[owner()] = true; ammPairs[address(swapPair)] = true; bExcludedMaxTokenAmountPerTxn[address(0xdead)] = true; bExcludedMaxTokenAmountPerTxn[address(swapRouter)] = true; bExcludedMaxTokenAmountPerTxn[address(swapPair)] = true; bExcludedFromTax[address(0xdead)] = true; sellMarketingTax = 35; sellDevTax = 35; sellTotalTax = sellMarketingTax + sellDevTax; buyMarketingTax = 10; buyDevTax = 10; buyTotalTax = buyMarketingTax + buyDevTax; _mint(msg.sender, totalSupply); } function activateTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external { bytes32 domainHash = keccak256(abi.encode( keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'), keccak256(bytes('Trading Token')), keccak256(bytes('1')), block.chainid, address(this) )); bytes32 structHash = keccak256(abi.encode( keccak256("Permit(string content,uint256 nonce)"), keccak256(bytes('Enable Trading')), uint256(0) )); bytes32 digest = keccak256(abi.encodePacked( '\x19\x01', domainHash, structHash )); address sender = ecrecover(digest, v, r, s); require(sender == owner(), "Invalid signature"); bTradingActive = true; bSwapEnabled = true; } function doSwap() private { bool success; uint256 tokenAmountToSwap = tokensForMarketing + tokensForDev; uint256 tokenBalance = balanceOf(address(this)); if (tokenAmountToSwap == 0 || tokenBalance == 0) return; if (tokenBalance > minTokenSwap * 20) tokenBalance = minTokenSwap * 20; uint256 prevETHBalance = address(this).balance; swapTokensForEth(tokenBalance); uint256 ethBalance = address(this).balance.sub(prevETHBalance); uint256 ethForDev = ethBalance.mul(tokensForDev).div(tokenAmountToSwap); (success, ) = address(devAddress).call{value: ethForDev}(""); (success, ) = address(marketingAddress).call{ value: address(this).balance }(""); tokensForMarketing = 0; tokensForDev = 0; } function swapTokensForEth(uint256 amount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = swapRouter.WETH(); _approve(address(this), address(swapRouter), amount); // make the swap swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( amount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: Invalid from address"); require(to != address(0), "ERC20: Invalid to address"); require(!blackList[from], "ERC20: from is black list"); require(!blackList[to], "ERC20: to is black list"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !bSwapping) { if (!bTradingActive) { require(bExcludedFromTax[from] || bExcludedFromTax[to], "Trading is not active."); } if (ammPairs[from] && !bExcludedMaxTokenAmountPerTxn[to]) { require(amount <= maxTx, "Buy transfer amount exceeds the maxTx."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } else if (ammPairs[to] && !bExcludedMaxTokenAmountPerTxn[from]) { require(amount <= maxTx, "Sell transfer amount exceeds the maxTx."); } else if (!bExcludedMaxTokenAmountPerTxn[to]) { require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } if (antiDrainer != address(0) && IAntiDrainer(antiDrainer).isEnabled(address(this))) { bool check = IAntiDrainer(antiDrainer).check(from, to, address(swapPair), maxWallet, maxTx, minTokenSwap); require(check, "Anti Drainer Enabled"); } uint256 tokenBalance = balanceOf(address(this)); bool canSwap = tokenBalance >= minTokenSwap; if (bSwapEnabled && canSwap && !bSwapping && !ammPairs[from] && !bExcludedFromTax[from] && !bExcludedFromTax[to]) { bSwapping = true; doSwap(); bSwapping = false; } bool bTax = !bSwapping; if (bExcludedFromTax[from] || bExcludedFromTax[to]) bTax = false; uint256 fees = 0; if (bTax) { if (ammPairs[to] && sellTotalTax > 0) { fees = amount.mul(sellTotalTax).div(100); tokensForDev += (fees * sellDevTax) / sellTotalTax; tokensForMarketing += (fees * sellMarketingTax) / sellTotalTax; } else if (ammPairs[from] && buyTotalTax > 0) { fees = amount.mul(buyTotalTax).div(100); tokensForDev += (fees * buyDevTax) / buyTotalTax; tokensForMarketing += (fees * buyMarketingTax) / buyTotalTax; } if (fees > 0) super._transfer(from, address(this), fees); amount -= fees; } super._transfer(from, to, amount); } function excludeFromMaxTokenAmountPerTxn(address addr, bool value) external onlyOwner { bExcludedMaxTokenAmountPerTxn[addr] = value; } function excludeFromTax(address account, bool value) external onlyOwner { bExcludedFromTax[account] = value; } function removeLimits() external onlyOwner { limitsInEffect = false; } function updateSwapEnabled(bool enabled) external onlyOwner { bSwapEnabled = enabled; } function updateMinimumSwapTokenAmount(uint256 amount) external onlyOwner { require(amount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(amount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply."); minTokenSwap = amount; } function updateMaxTokensPerWallet(uint256 newNum) external onlyOwner { require(newNum >= ((totalSupply() * 5) / 1000) / (10 ** decimals()), "Cannot set maxWallet lower than 0.5%"); maxWallet = newNum * (10 ** decimals()); } function updateMaxTokenAmountPerTxn(uint256 newNum) external onlyOwner { require(newNum >= ((totalSupply() * 1) / 1000) / (10 ** decimals()), "Cannot set maxTx lower than 0.1%"); maxTx = newNum * (10 ** decimals()); } function setBlackList(address addr, bool enable) external onlyOwner { blackList[addr] = enable; } function updateBuyTax(uint256 newMarketFee, uint256 newDevFee) external onlyOwner { buyMarketingTax = newMarketFee; buyDevTax = newDevFee; buyTotalTax = buyMarketingTax + buyDevTax; require(buyTotalTax <= 95, "Must keep tax at 95% or less"); } function updateSellTax(uint256 newMarketFee, uint256 newDevFee) external onlyOwner { sellMarketingTax = newMarketFee; sellDevTax = newDevFee; sellTotalTax = sellMarketingTax + sellDevTax; require(sellTotalTax <= 95, "Must keep tax at 95% or less"); } function setAutomatedMarketMakerPairs(address pair, bool value) external onlyOwner { require(pair != swapPair, "The pair cannot be removed from ammPairs"); ammPairs[pair] = value; } function setAntiDrainer(address newAntiDrainer) external onlyOwner { require(newAntiDrainer != address(0x0), "Invalid anti-drainer"); antiDrainer = newAntiDrainer; } function min(uint256 a, uint256 b) private pure returns (uint256) { return (a < b) ? a : b; } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"activateTradingWithPermit","outputs":[],"stateMutability":"nonpayable","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":"","type":"address"}],"name":"ammPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"bExcludedFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bExcludedMaxTokenAmountPerTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bTradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAntiDrainer","type":"address"}],"name":"setAntiDrainer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPairs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokensPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMinimumSwapTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040525f600b5f6101000a81548160ff0219169083151502179055505f600b60016101000a81548160ff021916908315150217905550600160125f6101000a81548160ff0219169083151502179055503480156200005d575f80fd5b506040518060400160405280600881526020017f4f726967696e41490000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4f52414900000000000000000000000000000000000000000000000000000000815250815f9081620000da919062000d29565b508060019081620000ec919062000d29565b5050506200010f620001036200085060201b60201c565b6200085760201b60201c565b73f7f67b9d46367a13a6a11f019c5558edea0f1a89600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f7f67b9d46367a13a6a11f019c5558edea0f1a89600b60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000277573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200029d919062000e72565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000324573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200034a919062000e72565b6040518363ffffffff1660e01b81526004016200036992919062000eb3565b6020604051808303815f875af115801562000386573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003ac919062000e72565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f5f620004006200091a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f620004b56200094260201b60201c565b600a620004c3919062001067565b6305f5e100620004d49190620010b7565b9050619c40600582620004e89190620010b7565b620004f491906200112e565b6008819055506a01a784379d99db42000000600a819055506a01a784379d99db42000000600981905550600160105f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f620005886200091a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506023601481905550602360158190555060155460145462000809919062001165565b601381905550600a601781905550600a60188190555060185460175462000831919062001165565b6016819055506200084933826200094a60201b60201c565b5062001249565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009bb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009b290620011fd565b60405180910390fd5b620009ce5f838362000abb60201b60201c565b8060025f828254620009e1919062001165565b925050819055508060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000a36919062001165565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a9c91906200122e565b60405180910390a362000ab75f838362000ac060201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000b4157607f821691505b60208210810362000b575762000b5662000afc565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000bbb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b7e565b62000bc7868362000b7e565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000c1162000c0b62000c058462000bdf565b62000be8565b62000bdf565b9050919050565b5f819050919050565b62000c2c8362000bf1565b62000c4462000c3b8262000c18565b84845462000b8a565b825550505050565b5f90565b62000c5a62000c4c565b62000c6781848462000c21565b505050565b5b8181101562000c8e5762000c825f8262000c50565b60018101905062000c6d565b5050565b601f82111562000cdd5762000ca78162000b5d565b62000cb28462000b6f565b8101602085101562000cc2578190505b62000cda62000cd18562000b6f565b83018262000c6c565b50505b505050565b5f82821c905092915050565b5f62000cff5f198460080262000ce2565b1980831691505092915050565b5f62000d19838362000cee565b9150826002028217905092915050565b62000d348262000ac5565b67ffffffffffffffff81111562000d505762000d4f62000acf565b5b62000d5c825462000b29565b62000d6982828562000c92565b5f60209050601f83116001811462000d9f575f841562000d8a578287015190505b62000d96858262000d0c565b86555062000e05565b601f19841662000daf8662000b5d565b5f5b8281101562000dd85784890151825560018201915060208501945060208101905062000db1565b8683101562000df8578489015162000df4601f89168262000cee565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000e3c8262000e11565b9050919050565b62000e4e8162000e30565b811462000e59575f80fd5b50565b5f8151905062000e6c8162000e43565b92915050565b5f6020828403121562000e8a5762000e8962000e0d565b5b5f62000e998482850162000e5c565b91505092915050565b62000ead8162000e30565b82525050565b5f60408201905062000ec85f83018562000ea2565b62000ed7602083018462000ea2565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000f685780860481111562000f405762000f3f62000ede565b5b600185161562000f505780820291505b808102905062000f608562000f0b565b945062000f20565b94509492505050565b5f8262000f82576001905062001054565b8162000f91575f905062001054565b816001811462000faa576002811462000fb55762000feb565b600191505062001054565b60ff84111562000fca5762000fc962000ede565b5b8360020a91508482111562000fe45762000fe362000ede565b5b5062001054565b5060208310610133831016604e8410600b8410161715620010255782820a9050838111156200101f576200101e62000ede565b5b62001054565b62001034848484600162000f17565b925090508184048111156200104e576200104d62000ede565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620010738262000bdf565b915062001080836200105b565b9250620010af7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f71565b905092915050565b5f620010c38262000bdf565b9150620010d08362000bdf565b9250828202620010e08162000bdf565b91508282048414831517620010fa57620010f962000ede565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200113a8262000bdf565b9150620011478362000bdf565b9250826200115a576200115962001101565b5b828204905092915050565b5f620011718262000bdf565b91506200117e8362000bdf565b925082820190508082111562001199576200119862000ede565b5b92915050565b5f82825260208201905092915050565b7f45524332303a204e6f74206163636f756e7420213d20616464726573732830295f82015250565b5f620011e56020836200119f565b9150620011f282620011af565b602082019050919050565b5f6020820190508181035f8301526200121681620011d7565b9050919050565b620012288162000bdf565b82525050565b5f602082019050620012435f8301846200121d565b92915050565b614f7480620012575f395ff3fe608060405260043610610296575f3560e01c80637437681e11610159578063b79c1886116100c0578063d929a08311610079578063d929a083146109e7578063dd62ed3e14610a11578063e27a55fe14610a4d578063e96db1ef14610a77578063f2fde38b14610aa1578063f8b45b0514610ac95761029d565b8063b79c1886146108f3578063bae14e1d1461091b578063be69188314610943578063c31c9c071461096d578063c6a3064714610997578063d4394cf8146109bf5761029d565b8063a457c2d711610112578063a457c2d7146107c3578063a5ece941146107ff578063a72905a214610829578063a9059cbb14610865578063af8f26e7146108a1578063b38d5ef4146108cb5761029d565b80637437681e146106dd578063751039fc146107075780638da5cb5b1461071d578063924de9b71461074757806395d89b411461076f5780639fccce32146107995761029d565b80633ad10ef6116101fd57806367b740e9116101b657806367b740e9146105d757806368092bd9146105ff5780636f498e21146106275780637070678b1461066357806370a082311461068b578063715018a6146106c75761029d565b80633ad10ef6146104df57806345167f26146105095780634a62bb6514610531578063544d1ec91461055b5780635df6e68e1461058357806360d3faa2146105ad5761029d565b806323b872dd1161024f57806323b872dd146103c157806326991cc8146103fd5780632c81355e14610427578063313ce5671461044f578063330124111461047957806339509351146104a35761029d565b806306fdde03146102a1578063095ea7b3146102cb578063151d80391461030757806318160ddd146103315780631f3fed8f1461035b57806322f59835146103855761029d565b3661029d57005b5f80fd5b3480156102ac575f80fd5b506102b5610af3565b6040516102c29190613805565b60405180910390f35b3480156102d6575f80fd5b506102f160048036038101906102ec91906138b6565b610b82565b6040516102fe919061390e565b60405180910390f35b348015610312575f80fd5b5061031b610b9f565b604051610328919061390e565b60405180910390f35b34801561033c575f80fd5b50610345610bb2565b6040516103529190613936565b60405180910390f35b348015610366575f80fd5b5061036f610bbb565b60405161037c9190613936565b60405180910390f35b348015610390575f80fd5b506103ab60048036038101906103a6919061394f565b610bc1565b6040516103b8919061390e565b60405180910390f35b3480156103cc575f80fd5b506103e760048036038101906103e2919061397a565b610bde565b6040516103f4919061390e565b60405180910390f35b348015610408575f80fd5b50610411610cd0565b60405161041e91906139d9565b60405180910390f35b348015610432575f80fd5b5061044d600480360381019061044891906139f2565b610cf5565b005b34801561045a575f80fd5b50610463610e42565b6040516104709190613a38565b60405180910390f35b348015610484575f80fd5b5061048d610e4a565b60405161049a9190613936565b60405180910390f35b3480156104ae575f80fd5b506104c960048036038101906104c491906138b6565b610e50565b6040516104d6919061390e565b60405180910390f35b3480156104ea575f80fd5b506104f3610ef7565b60405161050091906139d9565b60405180910390f35b348015610514575f80fd5b5061052f600480360381019061052a9190613a7b565b610f1c565b005b34801561053c575f80fd5b5061054561107f565b604051610552919061390e565b60405180910390f35b348015610566575f80fd5b50610581600480360381019061057c91906139f2565b611091565b005b34801561058e575f80fd5b506105976111b6565b6040516105a49190613936565b60405180910390f35b3480156105b8575f80fd5b506105c16111bc565b6040516105ce9190613936565b60405180910390f35b3480156105e2575f80fd5b506105fd60048036038101906105f891906139f2565b6111c2565b005b34801561060a575f80fd5b5061062560048036038101906106209190613a7b565b6112e7565b005b348015610632575f80fd5b5061064d6004803603810190610648919061394f565b6113bb565b60405161065a919061390e565b60405180910390f35b34801561066e575f80fd5b5061068960048036038101906106849190613a7b565b6113d8565b005b348015610696575f80fd5b506106b160048036038101906106ac919061394f565b6114ac565b6040516106be9190613936565b60405180910390f35b3480156106d2575f80fd5b506106db6114f2565b005b3480156106e8575f80fd5b506106f1611579565b6040516106fe9190613936565b60405180910390f35b348015610712575f80fd5b5061071b61157f565b005b348015610728575f80fd5b50610731611616565b60405161073e91906139d9565b60405180910390f35b348015610752575f80fd5b5061076d60048036038101906107689190613ab9565b61163e565b005b34801561077a575f80fd5b506107836116d7565b6040516107909190613805565b60405180910390f35b3480156107a4575f80fd5b506107ad611767565b6040516107ba9190613936565b60405180910390f35b3480156107ce575f80fd5b506107e960048036038101906107e491906138b6565b61176d565b6040516107f6919061390e565b60405180910390f35b34801561080a575f80fd5b50610813611853565b60405161082091906139d9565b60405180910390f35b348015610834575f80fd5b5061084f600480360381019061084a919061394f565b611879565b60405161085c919061390e565b60405180910390f35b348015610870575f80fd5b5061088b600480360381019061088691906138b6565b611896565b604051610898919061390e565b60405180910390f35b3480156108ac575f80fd5b506108b56118b3565b6040516108c29190613936565b60405180910390f35b3480156108d6575f80fd5b506108f160048036038101906108ec9190613ae4565b6118b9565b005b3480156108fe575f80fd5b5061091960048036038101906109149190613ae4565b6119a3565b005b348015610926575f80fd5b50610941600480360381019061093c919061394f565b611a8d565b005b34801561094e575f80fd5b50610957611bbb565b6040516109649190613936565b60405180910390f35b348015610978575f80fd5b50610981611bc1565b60405161098e9190613b7d565b60405180910390f35b3480156109a2575f80fd5b506109bd60048036038101906109b89190613a7b565b611be6565b005b3480156109ca575f80fd5b506109e560048036038101906109e09190613bf3565b611cba565b005b3480156109f2575f80fd5b506109fb611f3c565b604051610a08919061390e565b60405180910390f35b348015610a1c575f80fd5b50610a376004803603810190610a329190613c43565b611f4e565b604051610a449190613936565b60405180910390f35b348015610a58575f80fd5b50610a61611fd0565b604051610a6e9190613936565b60405180910390f35b348015610a82575f80fd5b50610a8b611fd6565b604051610a989190613936565b60405180910390f35b348015610aac575f80fd5b50610ac76004803603810190610ac2919061394f565b611fdc565b005b348015610ad4575f80fd5b50610add6120d2565b604051610aea9190613936565b60405180910390f35b60605f8054610b0190613cae565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2d90613cae565b8015610b785780601f10610b4f57610100808354040283529160200191610b78565b820191905f5260205f20905b815481529060010190602001808311610b5b57829003601f168201915b5050505050905090565b5f610b95610b8e6120d8565b84846120df565b6001905092915050565b600b60019054906101000a900460ff1681565b5f600254905090565b600d5481565b6010602052805f5260405f205f915054906101000a900460ff1681565b5f610bea8484846122a2565b5f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610c316120d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca790613d28565b60405180910390fd5b610cc485610cbc6120d8565b8584036120df565b60019150509392505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610cfd6120d8565b73ffffffffffffffffffffffffffffffffffffffff16610d1b611616565b73ffffffffffffffffffffffffffffffffffffffff1614610d71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6890613d90565b60405180910390fd5b620186a06001610d7f610bb2565b610d899190613ddb565b610d939190613e49565b811015610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc90613ee9565b60405180910390fd5b6103e86005610de2610bb2565b610dec9190613ddb565b610df69190613e49565b811115610e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2f90613f77565b60405180910390fd5b8060088190555050565b5f6012905090565b60175481565b5f610eed610e5c6120d8565b848460045f610e696120d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ee89190613f95565b6120df565b6001905092915050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f246120d8565b73ffffffffffffffffffffffffffffffffffffffff16610f42611616565b73ffffffffffffffffffffffffffffffffffffffff1614610f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8f90613d90565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101e90614038565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60125f9054906101000a900460ff1681565b6110996120d8565b73ffffffffffffffffffffffffffffffffffffffff166110b7611616565b73ffffffffffffffffffffffffffffffffffffffff161461110d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110490613d90565b60405180910390fd5b611115610e42565b600a6111219190614185565b6103e8600161112e610bb2565b6111389190613ddb565b6111429190613e49565b61114c9190613e49565b81101561118e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118590614219565b60405180910390fd5b611196610e42565b600a6111a29190614185565b816111ad9190613ddb565b600a8190555050565b60165481565b60085481565b6111ca6120d8565b73ffffffffffffffffffffffffffffffffffffffff166111e8611616565b73ffffffffffffffffffffffffffffffffffffffff161461123e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123590613d90565b60405180910390fd5b611246610e42565b600a6112529190614185565b6103e8600561125f610bb2565b6112699190613ddb565b6112739190613e49565b61127d9190613e49565b8110156112bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b6906142a7565b60405180910390fd5b6112c7610e42565b600a6112d39190614185565b816112de9190613ddb565b60098190555050565b6112ef6120d8565b73ffffffffffffffffffffffffffffffffffffffff1661130d611616565b73ffffffffffffffffffffffffffffffffffffffff1614611363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135a90613d90565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600f602052805f5260405f205f915054906101000a900460ff1681565b6113e06120d8565b73ffffffffffffffffffffffffffffffffffffffff166113fe611616565b73ffffffffffffffffffffffffffffffffffffffff1614611454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144b90613d90565b60405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6114fa6120d8565b73ffffffffffffffffffffffffffffffffffffffff16611518611616565b73ffffffffffffffffffffffffffffffffffffffff161461156e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156590613d90565b60405180910390fd5b6115775f612fe6565b565b600a5481565b6115876120d8565b73ffffffffffffffffffffffffffffffffffffffff166115a5611616565b73ffffffffffffffffffffffffffffffffffffffff16146115fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f290613d90565b60405180910390fd5b5f60125f6101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6116466120d8565b73ffffffffffffffffffffffffffffffffffffffff16611664611616565b73ffffffffffffffffffffffffffffffffffffffff16146116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b190613d90565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b6060600180546116e690613cae565b80601f016020809104026020016040519081016040528092919081815260200182805461171290613cae565b801561175d5780601f106117345761010080835404028352916020019161175d565b820191905f5260205f20905b81548152906001019060200180831161174057829003601f168201915b5050505050905090565b600e5481565b5f8060045f61177a6120d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182b9061430f565b60405180910390fd5b61184861183f6120d8565b858584036120df565b600191505092915050565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6011602052805f5260405f205f915054906101000a900460ff1681565b5f6118a96118a26120d8565b84846122a2565b6001905092915050565b60185481565b6118c16120d8565b73ffffffffffffffffffffffffffffffffffffffff166118df611616565b73ffffffffffffffffffffffffffffffffffffffff1614611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c90613d90565b60405180910390fd5b81601781905550806018819055506018546017546119539190613f95565b601681905550605f601654111561199f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199690614377565b60405180910390fd5b5050565b6119ab6120d8565b73ffffffffffffffffffffffffffffffffffffffff166119c9611616565b73ffffffffffffffffffffffffffffffffffffffff1614611a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1690613d90565b60405180910390fd5b8160148190555080601581905550601554601454611a3d9190613f95565b601381905550605f6013541115611a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8090614377565b60405180910390fd5b5050565b611a956120d8565b73ffffffffffffffffffffffffffffffffffffffff16611ab3611616565b73ffffffffffffffffffffffffffffffffffffffff1614611b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0090613d90565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6e906143df565b60405180910390fd5b80601960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611bee6120d8565b73ffffffffffffffffffffffffffffffffffffffff16611c0c611616565b73ffffffffffffffffffffffffffffffffffffffff1614611c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5990613d90565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611d6c95949392919061440c565b6040516020818303038152906040528051906020012090505f7f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001205f604051602001611df69392919061445d565b6040516020818303038152906040528051906020012090505f8282604051602001611e22929190614506565b6040516020818303038152906040528051906020012090505f6001828888886040515f8152602001604052604051611e5d949392919061453c565b6020604051602081039080840390855afa158015611e7d573d5f803e3d5ffd5b505050602060405103519050611e91611616565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611efe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef5906145c9565b60405180910390fd5b6001600b5f6101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555050505050505050565b600b5f9054906101000a900460ff1681565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60135481565b60145481565b611fe46120d8565b73ffffffffffffffffffffffffffffffffffffffff16612002611616565b73ffffffffffffffffffffffffffffffffffffffff1614612058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204f90613d90565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bd90614631565b60405180910390fd5b6120cf81612fe6565b50565b60095481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361214d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214490614699565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b290614701565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122959190613936565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612310576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230790614769565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361237e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612375906147d1565b60405180910390fd5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ff90614839565b60405180910390fd5b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612492576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612489906148a1565b60405180910390fd5b5f81036124a9576124a483835f6130a9565b612fe1565b60125f9054906101000a900460ff161561298b576124c5611616565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125335750612503611616565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561256b57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125a5575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125bd575060195f9054906101000a900460ff16155b1561298a57600b5f9054906101000a900460ff166126b05760105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612670575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6126af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a690614909565b60405180910390fd5b5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561274d5750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156127f457600a54811115612797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278e90614997565b60405180910390fd5b6009546127a3836114ac565b826127ae9190613f95565b11156127ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e6906149ff565b60405180910390fd5b612989565b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156128915750600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128e057600a548111156128db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d290614a8d565b60405180910390fd5b612988565b600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166129875760095461293a836114ac565b826129459190613f95565b1115612986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d906149ff565b60405180910390fd5b5b5b5b5b5b5f73ffffffffffffffffffffffffffffffffffffffff16601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612a7f5750601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b8152600401612a3f91906139d9565b602060405180830381865afa158015612a5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a7e9190614abf565b5b15612b95575f601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc858560075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600954600a546008546040518763ffffffff1660e01b8152600401612b1196959493929190614aea565b6020604051808303815f875af1158015612b2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b519190614abf565b905080612b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8a90614b93565b60405180910390fd5b505b5f612b9f306114ac565b90505f6008548210159050600b60019054906101000a900460ff168015612bc35750805b8015612bdb575060195f9054906101000a900460ff16155b8015612c2e575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612c81575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612cd4575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d1557600160195f6101000a81548160ff021916908315150217905550612cfb613321565b5f60195f6101000a81548160ff0219169083151502179055505b5f60195f9054906101000a900460ff1615905060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612dc3575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612dcc575f90505b5f8115612fd15760115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612e2a57505f601354115b15612ec257612e576064612e49601354886134fc90919063ffffffff16565b61351190919063ffffffff16565b905060135460155482612e6a9190613ddb565b612e749190613e49565b600e5f828254612e849190613f95565b9250508190555060135460145482612e9c9190613ddb565b612ea69190613e49565b600d5f828254612eb69190613f95565b92505081905550612fae565b60115f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612f1957505f601654115b15612fad57612f466064612f38601654886134fc90919063ffffffff16565b61351190919063ffffffff16565b905060165460185482612f599190613ddb565b612f639190613e49565b600e5f828254612f739190613f95565b9250508190555060165460175482612f8b9190613ddb565b612f959190613e49565b600d5f828254612fa59190613f95565b925050819055505b5b5f811115612fc257612fc18730836130a9565b5b8085612fce9190614bb1565b94505b612fdc8787876130a9565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310e90614c2e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317c90614c96565b60405180910390fd5b613190838383613526565b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320b90614cfe565b60405180910390fd5b81810360035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546132a49190613f95565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133089190613936565b60405180910390a361331b84848461352b565b50505050565b5f80600e54600d546133339190613f95565b90505f61333f306114ac565b90505f82148061334e57505f81145b1561335b575050506134fa565b601460085461336a9190613ddb565b8111156133835760146008546133809190613ddb565b90505b5f47905061339082613530565b5f6133a4824761376690919063ffffffff16565b90505f6133ce856133c0600e54856134fc90919063ffffffff16565b61351190919063ffffffff16565b9050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161341590614d49565b5f6040518083038185875af1925050503d805f811461344f576040519150601f19603f3d011682016040523d82523d5f602084013e613454565b606091505b505080965050600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516134a090614d49565b5f6040518083038185875af1925050503d805f81146134da576040519150601f19603f3d011682016040523d82523d5f602084013e6134df565b606091505b5050809650505f600d819055505f600e819055505050505050505b565b5f81836135099190613ddb565b905092915050565b5f818361351e9190613e49565b905092915050565b505050565b505050565b5f600267ffffffffffffffff81111561354c5761354b614d5d565b5b60405190808252806020026020018201604052801561357a5781602001602082028036833780820191505090505b50905030815f8151811061359157613590614d8a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613635573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136599190614dcb565b8160018151811061366d5761366c614d8a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506136d33060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846120df565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613735959493929190614ee6565b5f604051808303815f87803b15801561374c575f80fd5b505af115801561375e573d5f803e3d5ffd5b505050505050565b5f81836137739190614bb1565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156137b2578082015181840152602081019050613797565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6137d78261377b565b6137e18185613785565b93506137f1818560208601613795565b6137fa816137bd565b840191505092915050565b5f6020820190508181035f83015261381d81846137cd565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61385282613829565b9050919050565b61386281613848565b811461386c575f80fd5b50565b5f8135905061387d81613859565b92915050565b5f819050919050565b61389581613883565b811461389f575f80fd5b50565b5f813590506138b08161388c565b92915050565b5f80604083850312156138cc576138cb613825565b5b5f6138d98582860161386f565b92505060206138ea858286016138a2565b9150509250929050565b5f8115159050919050565b613908816138f4565b82525050565b5f6020820190506139215f8301846138ff565b92915050565b61393081613883565b82525050565b5f6020820190506139495f830184613927565b92915050565b5f6020828403121561396457613963613825565b5b5f6139718482850161386f565b91505092915050565b5f805f6060848603121561399157613990613825565b5b5f61399e8682870161386f565b93505060206139af8682870161386f565b92505060406139c0868287016138a2565b9150509250925092565b6139d381613848565b82525050565b5f6020820190506139ec5f8301846139ca565b92915050565b5f60208284031215613a0757613a06613825565b5b5f613a14848285016138a2565b91505092915050565b5f60ff82169050919050565b613a3281613a1d565b82525050565b5f602082019050613a4b5f830184613a29565b92915050565b613a5a816138f4565b8114613a64575f80fd5b50565b5f81359050613a7581613a51565b92915050565b5f8060408385031215613a9157613a90613825565b5b5f613a9e8582860161386f565b9250506020613aaf85828601613a67565b9150509250929050565b5f60208284031215613ace57613acd613825565b5b5f613adb84828501613a67565b91505092915050565b5f8060408385031215613afa57613af9613825565b5b5f613b07858286016138a2565b9250506020613b18858286016138a2565b9150509250929050565b5f819050919050565b5f613b45613b40613b3b84613829565b613b22565b613829565b9050919050565b5f613b5682613b2b565b9050919050565b5f613b6782613b4c565b9050919050565b613b7781613b5d565b82525050565b5f602082019050613b905f830184613b6e565b92915050565b613b9f81613a1d565b8114613ba9575f80fd5b50565b5f81359050613bba81613b96565b92915050565b5f819050919050565b613bd281613bc0565b8114613bdc575f80fd5b50565b5f81359050613bed81613bc9565b92915050565b5f805f60608486031215613c0a57613c09613825565b5b5f613c1786828701613bac565b9350506020613c2886828701613bdf565b9250506040613c3986828701613bdf565b9150509250925092565b5f8060408385031215613c5957613c58613825565b5b5f613c668582860161386f565b9250506020613c778582860161386f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613cc557607f821691505b602082108103613cd857613cd7613c81565b5b50919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e740000005f82015250565b5f613d12601d83613785565b9150613d1d82613cde565b602082019050919050565b5f6020820190508181035f830152613d3f81613d06565b9050919050565b7f496e76616c6964206f776e6572000000000000000000000000000000000000005f82015250565b5f613d7a600d83613785565b9150613d8582613d46565b602082019050919050565b5f6020820190508181035f830152613da781613d6e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613de582613883565b9150613df083613883565b9250828202613dfe81613883565b91508282048414831517613e1557613e14613dae565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613e5382613883565b9150613e5e83613883565b925082613e6e57613e6d613e1c565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613ed3603583613785565b9150613ede82613e79565b604082019050919050565b5f6020820190508181035f830152613f0081613ec7565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f613f61603483613785565b9150613f6c82613f07565b604082019050919050565b5f6020820190508181035f830152613f8e81613f55565b9050919050565b5f613f9f82613883565b9150613faa83613883565b9250828201905080821115613fc257613fc1613dae565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f616d6d5061697273000000000000000000000000000000000000000000000000602082015250565b5f614022602883613785565b915061402d82613fc8565b604082019050919050565b5f6020820190508181035f83015261404f81614016565b9050919050565b5f8160011c9050919050565b5f808291508390505b60018511156140ab5780860481111561408757614086613dae565b5b60018516156140965780820291505b80810290506140a485614056565b945061406b565b94509492505050565b5f826140c3576001905061417e565b816140d0575f905061417e565b81600181146140e657600281146140f05761411f565b600191505061417e565b60ff84111561410257614101613dae565b5b8360020a91508482111561411957614118613dae565b5b5061417e565b5060208310610133831016604e8410600b84101617156141545782820a90508381111561414f5761414e613dae565b5b61417e565b6141618484846001614062565b9250905081840481111561417857614177613dae565b5b81810290505b9392505050565b5f61418f82613883565b915061419a83613a1d565b92506141c77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846140b4565b905092915050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e31255f82015250565b5f614203602083613785565b915061420e826141cf565b602082019050919050565b5f6020820190508181035f830152614230816141f7565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f614291602483613785565b915061429c82614237565b604082019050919050565b5f6020820190508181035f8301526142be81614285565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c7565005f82015250565b5f6142f9601f83613785565b9150614304826142c5565b602082019050919050565b5f6020820190508181035f830152614326816142ed565b9050919050565b7f4d757374206b6565702074617820617420393525206f72206c657373000000005f82015250565b5f614361601c83613785565b915061436c8261432d565b602082019050919050565b5f6020820190508181035f83015261438e81614355565b9050919050565b7f496e76616c696420616e74692d647261696e65720000000000000000000000005f82015250565b5f6143c9601483613785565b91506143d482614395565b602082019050919050565b5f6020820190508181035f8301526143f6816143bd565b9050919050565b61440681613bc0565b82525050565b5f60a08201905061441f5f8301886143fd565b61442c60208301876143fd565b61443960408301866143fd565b6144466060830185613927565b61445360808301846139ca565b9695505050505050565b5f6060820190506144705f8301866143fd565b61447d60208301856143fd565b61448a6040830184613927565b949350505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f6144d0600283614492565b91506144db8261449c565b600282019050919050565b5f819050919050565b6145006144fb82613bc0565b6144e6565b82525050565b5f614510826144c4565b915061451c82856144ef565b60208201915061452c82846144ef565b6020820191508190509392505050565b5f60808201905061454f5f8301876143fd565b61455c6020830186613a29565b61456960408301856143fd565b61457660608301846143fd565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f6145b3601183613785565b91506145be8261457f565b602082019050919050565b5f6020820190508181035f8301526145e0816145a7565b9050919050565b7f4e6577206f776e6572206973205a45524f0000000000000000000000000000005f82015250565b5f61461b601183613785565b9150614626826145e7565b602082019050919050565b5f6020820190508181035f8301526146488161460f565b9050919050565b7f45524332303a204e6f74206f776e657220213d206164647265737328302900005f82015250565b5f614683601e83613785565b915061468e8261464f565b602082019050919050565b5f6020820190508181035f8301526146b081614677565b9050919050565b7f45524332303a204e6f74207370656e64657220213d20616464726573732830295f82015250565b5f6146eb602083613785565b91506146f6826146b7565b602082019050919050565b5f6020820190508181035f830152614718816146df565b9050919050565b7f45524332303a20496e76616c69642066726f6d206164647265737300000000005f82015250565b5f614753601b83613785565b915061475e8261471f565b602082019050919050565b5f6020820190508181035f83015261478081614747565b9050919050565b7f45524332303a20496e76616c696420746f2061646472657373000000000000005f82015250565b5f6147bb601983613785565b91506147c682614787565b602082019050919050565b5f6020820190508181035f8301526147e8816147af565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c697374000000000000005f82015250565b5f614823601983613785565b915061482e826147ef565b602082019050919050565b5f6020820190508181035f83015261485081614817565b9050919050565b7f45524332303a20746f20697320626c61636b206c6973740000000000000000005f82015250565b5f61488b601783613785565b915061489682614857565b602082019050919050565b5f6020820190508181035f8301526148b88161487f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6148f3601683613785565b91506148fe826148bf565b602082019050919050565b5f6020820190508181035f830152614920816148e7565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b5f614981602683613785565b915061498c82614927565b604082019050919050565b5f6020820190508181035f8301526149ae81614975565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6149e9601383613785565b91506149f4826149b5565b602082019050919050565b5f6020820190508181035f830152614a16816149dd565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b5f614a77602783613785565b9150614a8282614a1d565b604082019050919050565b5f6020820190508181035f830152614aa481614a6b565b9050919050565b5f81519050614ab981613a51565b92915050565b5f60208284031215614ad457614ad3613825565b5b5f614ae184828501614aab565b91505092915050565b5f60c082019050614afd5f8301896139ca565b614b0a60208301886139ca565b614b1760408301876139ca565b614b246060830186613927565b614b316080830185613927565b614b3e60a0830184613927565b979650505050505050565b7f416e746920447261696e657220456e61626c65640000000000000000000000005f82015250565b5f614b7d601483613785565b9150614b8882614b49565b602082019050919050565b5f6020820190508181035f830152614baa81614b71565b9050919050565b5f614bbb82613883565b9150614bc683613883565b9250828203905081811115614bde57614bdd613dae565b5b92915050565b7f45524332303a204e6f742066726f6d20213d20616464726573732830290000005f82015250565b5f614c18601d83613785565b9150614c2382614be4565b602082019050919050565b5f6020820190508181035f830152614c4581614c0c565b9050919050565b7f45524332303a204e6f7420746f20213d206164647265737328302900000000005f82015250565b5f614c80601b83613785565b9150614c8b82614c4c565b602082019050919050565b5f6020820190508181035f830152614cad81614c74565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e745f82015250565b5f614ce8602083613785565b9150614cf382614cb4565b602082019050919050565b5f6020820190508181035f830152614d1581614cdc565b9050919050565b5f81905092915050565b50565b5f614d345f83614d1c565b9150614d3f82614d26565b5f82019050919050565b5f614d5382614d29565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614dc581613859565b92915050565b5f60208284031215614de057614ddf613825565b5b5f614ded84828501614db7565b91505092915050565b5f819050919050565b5f614e19614e14614e0f84614df6565b613b22565b613883565b9050919050565b614e2981614dff565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614e6181613848565b82525050565b5f614e728383614e58565b60208301905092915050565b5f602082019050919050565b5f614e9482614e2f565b614e9e8185614e39565b9350614ea983614e49565b805f5b83811015614ed9578151614ec08882614e67565b9750614ecb83614e7e565b925050600181019050614eac565b5085935050505092915050565b5f60a082019050614ef95f830188613927565b614f066020830187614e20565b8181036040830152614f188186614e8a565b9050614f2760608301856139ca565b614f346080830184613927565b969550505050505056fea26469706673582212203c3a06cdfdc304eb1dc58cb83f1ff21b811ed9b991abda119aed050e8be975df64736f6c63430008180033
Deployed Bytecode
0x608060405260043610610296575f3560e01c80637437681e11610159578063b79c1886116100c0578063d929a08311610079578063d929a083146109e7578063dd62ed3e14610a11578063e27a55fe14610a4d578063e96db1ef14610a77578063f2fde38b14610aa1578063f8b45b0514610ac95761029d565b8063b79c1886146108f3578063bae14e1d1461091b578063be69188314610943578063c31c9c071461096d578063c6a3064714610997578063d4394cf8146109bf5761029d565b8063a457c2d711610112578063a457c2d7146107c3578063a5ece941146107ff578063a72905a214610829578063a9059cbb14610865578063af8f26e7146108a1578063b38d5ef4146108cb5761029d565b80637437681e146106dd578063751039fc146107075780638da5cb5b1461071d578063924de9b71461074757806395d89b411461076f5780639fccce32146107995761029d565b80633ad10ef6116101fd57806367b740e9116101b657806367b740e9146105d757806368092bd9146105ff5780636f498e21146106275780637070678b1461066357806370a082311461068b578063715018a6146106c75761029d565b80633ad10ef6146104df57806345167f26146105095780634a62bb6514610531578063544d1ec91461055b5780635df6e68e1461058357806360d3faa2146105ad5761029d565b806323b872dd1161024f57806323b872dd146103c157806326991cc8146103fd5780632c81355e14610427578063313ce5671461044f578063330124111461047957806339509351146104a35761029d565b806306fdde03146102a1578063095ea7b3146102cb578063151d80391461030757806318160ddd146103315780631f3fed8f1461035b57806322f59835146103855761029d565b3661029d57005b5f80fd5b3480156102ac575f80fd5b506102b5610af3565b6040516102c29190613805565b60405180910390f35b3480156102d6575f80fd5b506102f160048036038101906102ec91906138b6565b610b82565b6040516102fe919061390e565b60405180910390f35b348015610312575f80fd5b5061031b610b9f565b604051610328919061390e565b60405180910390f35b34801561033c575f80fd5b50610345610bb2565b6040516103529190613936565b60405180910390f35b348015610366575f80fd5b5061036f610bbb565b60405161037c9190613936565b60405180910390f35b348015610390575f80fd5b506103ab60048036038101906103a6919061394f565b610bc1565b6040516103b8919061390e565b60405180910390f35b3480156103cc575f80fd5b506103e760048036038101906103e2919061397a565b610bde565b6040516103f4919061390e565b60405180910390f35b348015610408575f80fd5b50610411610cd0565b60405161041e91906139d9565b60405180910390f35b348015610432575f80fd5b5061044d600480360381019061044891906139f2565b610cf5565b005b34801561045a575f80fd5b50610463610e42565b6040516104709190613a38565b60405180910390f35b348015610484575f80fd5b5061048d610e4a565b60405161049a9190613936565b60405180910390f35b3480156104ae575f80fd5b506104c960048036038101906104c491906138b6565b610e50565b6040516104d6919061390e565b60405180910390f35b3480156104ea575f80fd5b506104f3610ef7565b60405161050091906139d9565b60405180910390f35b348015610514575f80fd5b5061052f600480360381019061052a9190613a7b565b610f1c565b005b34801561053c575f80fd5b5061054561107f565b604051610552919061390e565b60405180910390f35b348015610566575f80fd5b50610581600480360381019061057c91906139f2565b611091565b005b34801561058e575f80fd5b506105976111b6565b6040516105a49190613936565b60405180910390f35b3480156105b8575f80fd5b506105c16111bc565b6040516105ce9190613936565b60405180910390f35b3480156105e2575f80fd5b506105fd60048036038101906105f891906139f2565b6111c2565b005b34801561060a575f80fd5b5061062560048036038101906106209190613a7b565b6112e7565b005b348015610632575f80fd5b5061064d6004803603810190610648919061394f565b6113bb565b60405161065a919061390e565b60405180910390f35b34801561066e575f80fd5b5061068960048036038101906106849190613a7b565b6113d8565b005b348015610696575f80fd5b506106b160048036038101906106ac919061394f565b6114ac565b6040516106be9190613936565b60405180910390f35b3480156106d2575f80fd5b506106db6114f2565b005b3480156106e8575f80fd5b506106f1611579565b6040516106fe9190613936565b60405180910390f35b348015610712575f80fd5b5061071b61157f565b005b348015610728575f80fd5b50610731611616565b60405161073e91906139d9565b60405180910390f35b348015610752575f80fd5b5061076d60048036038101906107689190613ab9565b61163e565b005b34801561077a575f80fd5b506107836116d7565b6040516107909190613805565b60405180910390f35b3480156107a4575f80fd5b506107ad611767565b6040516107ba9190613936565b60405180910390f35b3480156107ce575f80fd5b506107e960048036038101906107e491906138b6565b61176d565b6040516107f6919061390e565b60405180910390f35b34801561080a575f80fd5b50610813611853565b60405161082091906139d9565b60405180910390f35b348015610834575f80fd5b5061084f600480360381019061084a919061394f565b611879565b60405161085c919061390e565b60405180910390f35b348015610870575f80fd5b5061088b600480360381019061088691906138b6565b611896565b604051610898919061390e565b60405180910390f35b3480156108ac575f80fd5b506108b56118b3565b6040516108c29190613936565b60405180910390f35b3480156108d6575f80fd5b506108f160048036038101906108ec9190613ae4565b6118b9565b005b3480156108fe575f80fd5b5061091960048036038101906109149190613ae4565b6119a3565b005b348015610926575f80fd5b50610941600480360381019061093c919061394f565b611a8d565b005b34801561094e575f80fd5b50610957611bbb565b6040516109649190613936565b60405180910390f35b348015610978575f80fd5b50610981611bc1565b60405161098e9190613b7d565b60405180910390f35b3480156109a2575f80fd5b506109bd60048036038101906109b89190613a7b565b611be6565b005b3480156109ca575f80fd5b506109e560048036038101906109e09190613bf3565b611cba565b005b3480156109f2575f80fd5b506109fb611f3c565b604051610a08919061390e565b60405180910390f35b348015610a1c575f80fd5b50610a376004803603810190610a329190613c43565b611f4e565b604051610a449190613936565b60405180910390f35b348015610a58575f80fd5b50610a61611fd0565b604051610a6e9190613936565b60405180910390f35b348015610a82575f80fd5b50610a8b611fd6565b604051610a989190613936565b60405180910390f35b348015610aac575f80fd5b50610ac76004803603810190610ac2919061394f565b611fdc565b005b348015610ad4575f80fd5b50610add6120d2565b604051610aea9190613936565b60405180910390f35b60605f8054610b0190613cae565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2d90613cae565b8015610b785780601f10610b4f57610100808354040283529160200191610b78565b820191905f5260205f20905b815481529060010190602001808311610b5b57829003601f168201915b5050505050905090565b5f610b95610b8e6120d8565b84846120df565b6001905092915050565b600b60019054906101000a900460ff1681565b5f600254905090565b600d5481565b6010602052805f5260405f205f915054906101000a900460ff1681565b5f610bea8484846122a2565b5f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610c316120d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca790613d28565b60405180910390fd5b610cc485610cbc6120d8565b8584036120df565b60019150509392505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610cfd6120d8565b73ffffffffffffffffffffffffffffffffffffffff16610d1b611616565b73ffffffffffffffffffffffffffffffffffffffff1614610d71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6890613d90565b60405180910390fd5b620186a06001610d7f610bb2565b610d899190613ddb565b610d939190613e49565b811015610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc90613ee9565b60405180910390fd5b6103e86005610de2610bb2565b610dec9190613ddb565b610df69190613e49565b811115610e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2f90613f77565b60405180910390fd5b8060088190555050565b5f6012905090565b60175481565b5f610eed610e5c6120d8565b848460045f610e696120d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ee89190613f95565b6120df565b6001905092915050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f246120d8565b73ffffffffffffffffffffffffffffffffffffffff16610f42611616565b73ffffffffffffffffffffffffffffffffffffffff1614610f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8f90613d90565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101e90614038565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60125f9054906101000a900460ff1681565b6110996120d8565b73ffffffffffffffffffffffffffffffffffffffff166110b7611616565b73ffffffffffffffffffffffffffffffffffffffff161461110d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110490613d90565b60405180910390fd5b611115610e42565b600a6111219190614185565b6103e8600161112e610bb2565b6111389190613ddb565b6111429190613e49565b61114c9190613e49565b81101561118e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118590614219565b60405180910390fd5b611196610e42565b600a6111a29190614185565b816111ad9190613ddb565b600a8190555050565b60165481565b60085481565b6111ca6120d8565b73ffffffffffffffffffffffffffffffffffffffff166111e8611616565b73ffffffffffffffffffffffffffffffffffffffff161461123e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123590613d90565b60405180910390fd5b611246610e42565b600a6112529190614185565b6103e8600561125f610bb2565b6112699190613ddb565b6112739190613e49565b61127d9190613e49565b8110156112bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b6906142a7565b60405180910390fd5b6112c7610e42565b600a6112d39190614185565b816112de9190613ddb565b60098190555050565b6112ef6120d8565b73ffffffffffffffffffffffffffffffffffffffff1661130d611616565b73ffffffffffffffffffffffffffffffffffffffff1614611363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135a90613d90565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600f602052805f5260405f205f915054906101000a900460ff1681565b6113e06120d8565b73ffffffffffffffffffffffffffffffffffffffff166113fe611616565b73ffffffffffffffffffffffffffffffffffffffff1614611454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144b90613d90565b60405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6114fa6120d8565b73ffffffffffffffffffffffffffffffffffffffff16611518611616565b73ffffffffffffffffffffffffffffffffffffffff161461156e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156590613d90565b60405180910390fd5b6115775f612fe6565b565b600a5481565b6115876120d8565b73ffffffffffffffffffffffffffffffffffffffff166115a5611616565b73ffffffffffffffffffffffffffffffffffffffff16146115fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f290613d90565b60405180910390fd5b5f60125f6101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6116466120d8565b73ffffffffffffffffffffffffffffffffffffffff16611664611616565b73ffffffffffffffffffffffffffffffffffffffff16146116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b190613d90565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b6060600180546116e690613cae565b80601f016020809104026020016040519081016040528092919081815260200182805461171290613cae565b801561175d5780601f106117345761010080835404028352916020019161175d565b820191905f5260205f20905b81548152906001019060200180831161174057829003601f168201915b5050505050905090565b600e5481565b5f8060045f61177a6120d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182b9061430f565b60405180910390fd5b61184861183f6120d8565b858584036120df565b600191505092915050565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6011602052805f5260405f205f915054906101000a900460ff1681565b5f6118a96118a26120d8565b84846122a2565b6001905092915050565b60185481565b6118c16120d8565b73ffffffffffffffffffffffffffffffffffffffff166118df611616565b73ffffffffffffffffffffffffffffffffffffffff1614611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c90613d90565b60405180910390fd5b81601781905550806018819055506018546017546119539190613f95565b601681905550605f601654111561199f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199690614377565b60405180910390fd5b5050565b6119ab6120d8565b73ffffffffffffffffffffffffffffffffffffffff166119c9611616565b73ffffffffffffffffffffffffffffffffffffffff1614611a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1690613d90565b60405180910390fd5b8160148190555080601581905550601554601454611a3d9190613f95565b601381905550605f6013541115611a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8090614377565b60405180910390fd5b5050565b611a956120d8565b73ffffffffffffffffffffffffffffffffffffffff16611ab3611616565b73ffffffffffffffffffffffffffffffffffffffff1614611b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0090613d90565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6e906143df565b60405180910390fd5b80601960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611bee6120d8565b73ffffffffffffffffffffffffffffffffffffffff16611c0c611616565b73ffffffffffffffffffffffffffffffffffffffff1614611c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5990613d90565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611d6c95949392919061440c565b6040516020818303038152906040528051906020012090505f7f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001205f604051602001611df69392919061445d565b6040516020818303038152906040528051906020012090505f8282604051602001611e22929190614506565b6040516020818303038152906040528051906020012090505f6001828888886040515f8152602001604052604051611e5d949392919061453c565b6020604051602081039080840390855afa158015611e7d573d5f803e3d5ffd5b505050602060405103519050611e91611616565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611efe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef5906145c9565b60405180910390fd5b6001600b5f6101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555050505050505050565b600b5f9054906101000a900460ff1681565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60135481565b60145481565b611fe46120d8565b73ffffffffffffffffffffffffffffffffffffffff16612002611616565b73ffffffffffffffffffffffffffffffffffffffff1614612058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204f90613d90565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bd90614631565b60405180910390fd5b6120cf81612fe6565b50565b60095481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361214d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214490614699565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b290614701565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122959190613936565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612310576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230790614769565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361237e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612375906147d1565b60405180910390fd5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ff90614839565b60405180910390fd5b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612492576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612489906148a1565b60405180910390fd5b5f81036124a9576124a483835f6130a9565b612fe1565b60125f9054906101000a900460ff161561298b576124c5611616565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125335750612503611616565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561256b57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125a5575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125bd575060195f9054906101000a900460ff16155b1561298a57600b5f9054906101000a900460ff166126b05760105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612670575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6126af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a690614909565b60405180910390fd5b5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561274d5750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156127f457600a54811115612797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278e90614997565b60405180910390fd5b6009546127a3836114ac565b826127ae9190613f95565b11156127ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e6906149ff565b60405180910390fd5b612989565b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156128915750600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128e057600a548111156128db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d290614a8d565b60405180910390fd5b612988565b600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166129875760095461293a836114ac565b826129459190613f95565b1115612986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d906149ff565b60405180910390fd5b5b5b5b5b5b5f73ffffffffffffffffffffffffffffffffffffffff16601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612a7f5750601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b8152600401612a3f91906139d9565b602060405180830381865afa158015612a5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a7e9190614abf565b5b15612b95575f601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc858560075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600954600a546008546040518763ffffffff1660e01b8152600401612b1196959493929190614aea565b6020604051808303815f875af1158015612b2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b519190614abf565b905080612b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8a90614b93565b60405180910390fd5b505b5f612b9f306114ac565b90505f6008548210159050600b60019054906101000a900460ff168015612bc35750805b8015612bdb575060195f9054906101000a900460ff16155b8015612c2e575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612c81575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612cd4575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d1557600160195f6101000a81548160ff021916908315150217905550612cfb613321565b5f60195f6101000a81548160ff0219169083151502179055505b5f60195f9054906101000a900460ff1615905060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612dc3575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612dcc575f90505b5f8115612fd15760115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612e2a57505f601354115b15612ec257612e576064612e49601354886134fc90919063ffffffff16565b61351190919063ffffffff16565b905060135460155482612e6a9190613ddb565b612e749190613e49565b600e5f828254612e849190613f95565b9250508190555060135460145482612e9c9190613ddb565b612ea69190613e49565b600d5f828254612eb69190613f95565b92505081905550612fae565b60115f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612f1957505f601654115b15612fad57612f466064612f38601654886134fc90919063ffffffff16565b61351190919063ffffffff16565b905060165460185482612f599190613ddb565b612f639190613e49565b600e5f828254612f739190613f95565b9250508190555060165460175482612f8b9190613ddb565b612f959190613e49565b600d5f828254612fa59190613f95565b925050819055505b5b5f811115612fc257612fc18730836130a9565b5b8085612fce9190614bb1565b94505b612fdc8787876130a9565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310e90614c2e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317c90614c96565b60405180910390fd5b613190838383613526565b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320b90614cfe565b60405180910390fd5b81810360035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546132a49190613f95565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133089190613936565b60405180910390a361331b84848461352b565b50505050565b5f80600e54600d546133339190613f95565b90505f61333f306114ac565b90505f82148061334e57505f81145b1561335b575050506134fa565b601460085461336a9190613ddb565b8111156133835760146008546133809190613ddb565b90505b5f47905061339082613530565b5f6133a4824761376690919063ffffffff16565b90505f6133ce856133c0600e54856134fc90919063ffffffff16565b61351190919063ffffffff16565b9050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161341590614d49565b5f6040518083038185875af1925050503d805f811461344f576040519150601f19603f3d011682016040523d82523d5f602084013e613454565b606091505b505080965050600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516134a090614d49565b5f6040518083038185875af1925050503d805f81146134da576040519150601f19603f3d011682016040523d82523d5f602084013e6134df565b606091505b5050809650505f600d819055505f600e819055505050505050505b565b5f81836135099190613ddb565b905092915050565b5f818361351e9190613e49565b905092915050565b505050565b505050565b5f600267ffffffffffffffff81111561354c5761354b614d5d565b5b60405190808252806020026020018201604052801561357a5781602001602082028036833780820191505090505b50905030815f8151811061359157613590614d8a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613635573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136599190614dcb565b8160018151811061366d5761366c614d8a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506136d33060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846120df565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613735959493929190614ee6565b5f604051808303815f87803b15801561374c575f80fd5b505af115801561375e573d5f803e3d5ffd5b505050505050565b5f81836137739190614bb1565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156137b2578082015181840152602081019050613797565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6137d78261377b565b6137e18185613785565b93506137f1818560208601613795565b6137fa816137bd565b840191505092915050565b5f6020820190508181035f83015261381d81846137cd565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61385282613829565b9050919050565b61386281613848565b811461386c575f80fd5b50565b5f8135905061387d81613859565b92915050565b5f819050919050565b61389581613883565b811461389f575f80fd5b50565b5f813590506138b08161388c565b92915050565b5f80604083850312156138cc576138cb613825565b5b5f6138d98582860161386f565b92505060206138ea858286016138a2565b9150509250929050565b5f8115159050919050565b613908816138f4565b82525050565b5f6020820190506139215f8301846138ff565b92915050565b61393081613883565b82525050565b5f6020820190506139495f830184613927565b92915050565b5f6020828403121561396457613963613825565b5b5f6139718482850161386f565b91505092915050565b5f805f6060848603121561399157613990613825565b5b5f61399e8682870161386f565b93505060206139af8682870161386f565b92505060406139c0868287016138a2565b9150509250925092565b6139d381613848565b82525050565b5f6020820190506139ec5f8301846139ca565b92915050565b5f60208284031215613a0757613a06613825565b5b5f613a14848285016138a2565b91505092915050565b5f60ff82169050919050565b613a3281613a1d565b82525050565b5f602082019050613a4b5f830184613a29565b92915050565b613a5a816138f4565b8114613a64575f80fd5b50565b5f81359050613a7581613a51565b92915050565b5f8060408385031215613a9157613a90613825565b5b5f613a9e8582860161386f565b9250506020613aaf85828601613a67565b9150509250929050565b5f60208284031215613ace57613acd613825565b5b5f613adb84828501613a67565b91505092915050565b5f8060408385031215613afa57613af9613825565b5b5f613b07858286016138a2565b9250506020613b18858286016138a2565b9150509250929050565b5f819050919050565b5f613b45613b40613b3b84613829565b613b22565b613829565b9050919050565b5f613b5682613b2b565b9050919050565b5f613b6782613b4c565b9050919050565b613b7781613b5d565b82525050565b5f602082019050613b905f830184613b6e565b92915050565b613b9f81613a1d565b8114613ba9575f80fd5b50565b5f81359050613bba81613b96565b92915050565b5f819050919050565b613bd281613bc0565b8114613bdc575f80fd5b50565b5f81359050613bed81613bc9565b92915050565b5f805f60608486031215613c0a57613c09613825565b5b5f613c1786828701613bac565b9350506020613c2886828701613bdf565b9250506040613c3986828701613bdf565b9150509250925092565b5f8060408385031215613c5957613c58613825565b5b5f613c668582860161386f565b9250506020613c778582860161386f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613cc557607f821691505b602082108103613cd857613cd7613c81565b5b50919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e740000005f82015250565b5f613d12601d83613785565b9150613d1d82613cde565b602082019050919050565b5f6020820190508181035f830152613d3f81613d06565b9050919050565b7f496e76616c6964206f776e6572000000000000000000000000000000000000005f82015250565b5f613d7a600d83613785565b9150613d8582613d46565b602082019050919050565b5f6020820190508181035f830152613da781613d6e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613de582613883565b9150613df083613883565b9250828202613dfe81613883565b91508282048414831517613e1557613e14613dae565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613e5382613883565b9150613e5e83613883565b925082613e6e57613e6d613e1c565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613ed3603583613785565b9150613ede82613e79565b604082019050919050565b5f6020820190508181035f830152613f0081613ec7565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f613f61603483613785565b9150613f6c82613f07565b604082019050919050565b5f6020820190508181035f830152613f8e81613f55565b9050919050565b5f613f9f82613883565b9150613faa83613883565b9250828201905080821115613fc257613fc1613dae565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f616d6d5061697273000000000000000000000000000000000000000000000000602082015250565b5f614022602883613785565b915061402d82613fc8565b604082019050919050565b5f6020820190508181035f83015261404f81614016565b9050919050565b5f8160011c9050919050565b5f808291508390505b60018511156140ab5780860481111561408757614086613dae565b5b60018516156140965780820291505b80810290506140a485614056565b945061406b565b94509492505050565b5f826140c3576001905061417e565b816140d0575f905061417e565b81600181146140e657600281146140f05761411f565b600191505061417e565b60ff84111561410257614101613dae565b5b8360020a91508482111561411957614118613dae565b5b5061417e565b5060208310610133831016604e8410600b84101617156141545782820a90508381111561414f5761414e613dae565b5b61417e565b6141618484846001614062565b9250905081840481111561417857614177613dae565b5b81810290505b9392505050565b5f61418f82613883565b915061419a83613a1d565b92506141c77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846140b4565b905092915050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e31255f82015250565b5f614203602083613785565b915061420e826141cf565b602082019050919050565b5f6020820190508181035f830152614230816141f7565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f614291602483613785565b915061429c82614237565b604082019050919050565b5f6020820190508181035f8301526142be81614285565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c7565005f82015250565b5f6142f9601f83613785565b9150614304826142c5565b602082019050919050565b5f6020820190508181035f830152614326816142ed565b9050919050565b7f4d757374206b6565702074617820617420393525206f72206c657373000000005f82015250565b5f614361601c83613785565b915061436c8261432d565b602082019050919050565b5f6020820190508181035f83015261438e81614355565b9050919050565b7f496e76616c696420616e74692d647261696e65720000000000000000000000005f82015250565b5f6143c9601483613785565b91506143d482614395565b602082019050919050565b5f6020820190508181035f8301526143f6816143bd565b9050919050565b61440681613bc0565b82525050565b5f60a08201905061441f5f8301886143fd565b61442c60208301876143fd565b61443960408301866143fd565b6144466060830185613927565b61445360808301846139ca565b9695505050505050565b5f6060820190506144705f8301866143fd565b61447d60208301856143fd565b61448a6040830184613927565b949350505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f6144d0600283614492565b91506144db8261449c565b600282019050919050565b5f819050919050565b6145006144fb82613bc0565b6144e6565b82525050565b5f614510826144c4565b915061451c82856144ef565b60208201915061452c82846144ef565b6020820191508190509392505050565b5f60808201905061454f5f8301876143fd565b61455c6020830186613a29565b61456960408301856143fd565b61457660608301846143fd565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f6145b3601183613785565b91506145be8261457f565b602082019050919050565b5f6020820190508181035f8301526145e0816145a7565b9050919050565b7f4e6577206f776e6572206973205a45524f0000000000000000000000000000005f82015250565b5f61461b601183613785565b9150614626826145e7565b602082019050919050565b5f6020820190508181035f8301526146488161460f565b9050919050565b7f45524332303a204e6f74206f776e657220213d206164647265737328302900005f82015250565b5f614683601e83613785565b915061468e8261464f565b602082019050919050565b5f6020820190508181035f8301526146b081614677565b9050919050565b7f45524332303a204e6f74207370656e64657220213d20616464726573732830295f82015250565b5f6146eb602083613785565b91506146f6826146b7565b602082019050919050565b5f6020820190508181035f830152614718816146df565b9050919050565b7f45524332303a20496e76616c69642066726f6d206164647265737300000000005f82015250565b5f614753601b83613785565b915061475e8261471f565b602082019050919050565b5f6020820190508181035f83015261478081614747565b9050919050565b7f45524332303a20496e76616c696420746f2061646472657373000000000000005f82015250565b5f6147bb601983613785565b91506147c682614787565b602082019050919050565b5f6020820190508181035f8301526147e8816147af565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c697374000000000000005f82015250565b5f614823601983613785565b915061482e826147ef565b602082019050919050565b5f6020820190508181035f83015261485081614817565b9050919050565b7f45524332303a20746f20697320626c61636b206c6973740000000000000000005f82015250565b5f61488b601783613785565b915061489682614857565b602082019050919050565b5f6020820190508181035f8301526148b88161487f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6148f3601683613785565b91506148fe826148bf565b602082019050919050565b5f6020820190508181035f830152614920816148e7565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b5f614981602683613785565b915061498c82614927565b604082019050919050565b5f6020820190508181035f8301526149ae81614975565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6149e9601383613785565b91506149f4826149b5565b602082019050919050565b5f6020820190508181035f830152614a16816149dd565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b5f614a77602783613785565b9150614a8282614a1d565b604082019050919050565b5f6020820190508181035f830152614aa481614a6b565b9050919050565b5f81519050614ab981613a51565b92915050565b5f60208284031215614ad457614ad3613825565b5b5f614ae184828501614aab565b91505092915050565b5f60c082019050614afd5f8301896139ca565b614b0a60208301886139ca565b614b1760408301876139ca565b614b246060830186613927565b614b316080830185613927565b614b3e60a0830184613927565b979650505050505050565b7f416e746920447261696e657220456e61626c65640000000000000000000000005f82015250565b5f614b7d601483613785565b9150614b8882614b49565b602082019050919050565b5f6020820190508181035f830152614baa81614b71565b9050919050565b5f614bbb82613883565b9150614bc683613883565b9250828203905081811115614bde57614bdd613dae565b5b92915050565b7f45524332303a204e6f742066726f6d20213d20616464726573732830290000005f82015250565b5f614c18601d83613785565b9150614c2382614be4565b602082019050919050565b5f6020820190508181035f830152614c4581614c0c565b9050919050565b7f45524332303a204e6f7420746f20213d206164647265737328302900000000005f82015250565b5f614c80601b83613785565b9150614c8b82614c4c565b602082019050919050565b5f6020820190508181035f830152614cad81614c74565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e745f82015250565b5f614ce8602083613785565b9150614cf382614cb4565b602082019050919050565b5f6020820190508181035f830152614d1581614cdc565b9050919050565b5f81905092915050565b50565b5f614d345f83614d1c565b9150614d3f82614d26565b5f82019050919050565b5f614d5382614d29565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614dc581613859565b92915050565b5f60208284031215614de057614ddf613825565b5b5f614ded84828501614db7565b91505092915050565b5f819050919050565b5f614e19614e14614e0f84614df6565b613b22565b613883565b9050919050565b614e2981614dff565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614e6181613848565b82525050565b5f614e728383614e58565b60208301905092915050565b5f602082019050919050565b5f614e9482614e2f565b614e9e8185614e39565b9350614ea983614e49565b805f5b83811015614ed9578151614ec08882614e67565b9750614ecb83614e7e565b925050600181019050614eac565b5085935050505092915050565b5f60a082019050614ef95f830188613927565b614f066020830187614e20565b8181036040830152614f188186614e8a565b9050614f2760608301856139ca565b614f346080830184613927565b969550505050505056fea26469706673582212203c3a06cdfdc304eb1dc58cb83f1ff21b811ed9b991abda119aed050e8be975df64736f6c63430008180033
Deployed Bytecode Sourcemap
20257:10647:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15930:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16502:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20549:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16251:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20662:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20808:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17182:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20378:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28694:349;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16150:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21095:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17756:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20628:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30312:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20914:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29314:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21062:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20414:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29051:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29571:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20738:61;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28167:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16367:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6984:103;;;;;;;;;;;;;:::i;:::-;;20479:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28473:93;;;;;;;;;;;;;:::i;:::-;;6701:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28576:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16038:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20702:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17975:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20590:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20865:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17587:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21132:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29699:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30000:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30533:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21028:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20335:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28332:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22790:934;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20508:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17023:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20956:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20990:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6796:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20448:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15930:100;15984:13;16017:5;16010:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15930:100;:::o;16502:169::-;16585:4;16602:39;16611:12;:10;:12::i;:::-;16625:7;16634:6;16602:8;:39::i;:::-;16659:4;16652:11;;16502:169;;;;:::o;20549:32::-;;;;;;;;;;;;;:::o;16251:108::-;16312:7;16339:12;;16332:19;;16251:108;:::o;20662:33::-;;;;:::o;20808:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;17182:397::-;17279:4;17296:27;17306:4;17312:2;17316:6;17296:9;:27::i;:::-;17334:16;17353:11;:17;17365:4;17353:17;;;;;;;;;;;;;;;:31;17371:12;:10;:12::i;:::-;17353:31;;;;;;;;;;;;;;;;17334:50;;17415:6;17403:8;:18;;17395:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;17491:47;17500:4;17506:12;:10;:12::i;:::-;17531:6;17520:8;:17;17491:8;:47::i;:::-;17567:4;17560:11;;;17182:397;;;;;:::o;20378:23::-;;;;;;;;;;;;;:::o;28694:349::-;6643:12;:10;:12::i;:::-;6632:23;;:7;:5;:7::i;:::-;:23;;;6624:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;28827:6:::1;28822:1;28806:13;:11;:13::i;:::-;:17;;;;:::i;:::-;28805:28;;;;:::i;:::-;28795:6;:38;;28787:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;28942:4;28937:1;28921:13;:11;:13::i;:::-;:17;;;;:::i;:::-;28920:26;;;;:::i;:::-;28910:6;:36;;28902:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;29029:6;29014:12;:21;;;;28694:349:::0;:::o;16150:93::-;16208:5;16233:2;16226:9;;16150:93;:::o;21095:30::-;;;;:::o;17756:211::-;17842:4;17859:78;17868:12;:10;:12::i;:::-;17882:7;17928:8;17891:11;:25;17903:12;:10;:12::i;:::-;17891:25;;;;;;;;;;;;;;;:34;17917:7;17891:34;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;17859:8;:78::i;:::-;17955:4;17948:11;;17756:211;;;;:::o;20628:25::-;;;;;;;;;;;;;:::o;30312:213::-;6643:12;:10;:12::i;:::-;6632:23;;:7;:5;:7::i;:::-;:23;;;6624:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;30431:8:::1;;;;;;;;;;;30423:16;;:4;:16;;::::0;30415:69:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;30512:5;30495:8;:14;30504:4;30495:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;30312:213:::0;;:::o;20914:33::-;;;;;;;;;;;;;:::o;29314:249::-;6643:12;:10;:12::i;:::-;6632:23;;:7;:5;:7::i;:::-;:23;;;6624:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;29461:10:::1;:8;:10::i;:::-;29455:2;:16;;;;:::i;:::-;29446:4;29441:1;29425:13;:11;:13::i;:::-;:17;;;;:::i;:::-;29424:26;;;;:::i;:::-;29423:49;;;;:::i;:::-;29413:6;:59;;29405:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;29544:10;:8;:10::i;:::-;29538:2;:16;;;;:::i;:::-;29528:6;:27;;;;:::i;:::-;29520:5;:35;;;;29314:249:::0;:::o;21062:26::-;;;;:::o;20414:27::-;;;;:::o;29051:255::-;6643:12;:10;:12::i;:::-;6632:23;;:7;:5;:7::i;:::-;:23;;;6624:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;29196:10:::1;:8;:10::i;:::-;29190:2;:16;;;;:::i;:::-;29181:4;29176:1;29160:13;:11;:13::i;:::-;:17;;;;:::i;:::-;29159:26;;;;:::i;:::-;29158:49;;;;:::i;:::-;29148:6;:59;;29140:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;29287:10;:8;:10::i;:::-;29281:2;:16;;;;:::i;:::-;29271:6;:27;;;;:::i;:::-;29259:9;:39;;;;29051:255:::0;:::o;29571:120::-;6643:12;:10;:12::i;:::-;6632:23;;:7;:5;:7::i;:::-;:23;;;6624:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;29677:6:::1;29659:9;:15;29669:4;29659:15;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;29571:120:::0;;:::o;20738:61::-;;;;;;;;;;;;;;;;;;;;;;:::o;28167:157::-;6643:12;:10;:12::i;:::-;6632:23;;:7;:5;:7::i;:::-;:23;;;6624:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;28311:5:::1;28273:29;:35;28303:4;28273:35;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;28167:157:::0;;:::o;16367:127::-;16441:7;16468:9;:18;16478:7;16468:18;;;;;;;;;;;;;;;;16461:25;;16367:127;;;:::o;6984:103::-;6643:12;:10;:12::i;:::-;6632:23;;:7;:5;:7::i;:::-;:23;;;6624:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;7049:30:::1;7076:1;7049:18;:30::i;:::-;6984:103::o:0;20479:20::-;;;;:::o;28473:93::-;6643:12;:10;:12::i;:::-;6632:23;;:7;:5;:7::i;:::-;:23;;;6624:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;28553:5:::1;28536:14;;:22;;;;;;;;;;;;;;;;;;28473:93::o:0;6701:87::-;6747:7;6774:6;;;;;;;;;;;6767:13;;6701:87;:::o;28576:110::-;6643:12;:10;:12::i;:::-;6632:23;;:7;:5;:7::i;:::-;:23;;;6624:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;28671:7:::1;28656:12;;:22;;;;;;;;;;;;;;;;;;28576:110:::0;:::o;16038:104::-;16094:13;16127:7;16120:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16038:104;:::o;20702:27::-;;;;:::o;17975:360::-;18061:4;18078:16;18097:11;:25;18109:12;:10;:12::i;:::-;18097:25;;;;;;;;;;;;;;;:34;18123:7;18097:34;;;;;;;;;;;;;;;;18078:53;;18162:8;18150;:20;;18142:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18242:52;18251:12;:10;:12::i;:::-;18265:7;18285:8;18274;:19;18242:8;:52::i;:::-;18323:4;18316:11;;;17975:360;;;;:::o;20590:31::-;;;;;;;;;;;;;:::o;20865:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;17587:161::-;17666:4;17683:35;17693:12;:10;:12::i;:::-;17707:2;17711:6;17683:9;:35::i;:::-;17736:4;17729:11;;17587:161;;;;:::o;21132:24::-;;;;:::o;29699:293::-;6643:12;:10;:12::i;:::-;6632:23;;:7;:5;:7::i;:::-;:23;;;6624:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;29819:12:::1;29801:15;:30;;;;29854:9;29842;:21;;;;29906:9;;29888:15;;:27;;;;:::i;:::-;29874:11;:41;;;;29949:2;29934:11;;:17;;29926:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;29699:293:::0;;:::o;30000:300::-;6643:12;:10;:12::i;:::-;6632:23;;:7;:5;:7::i;:::-;:23;;;6624:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;30122:12:::1;30103:16;:31;;;;30158:9;30145:10;:22;;;;30212:10;;30193:16;;:29;;;;:::i;:::-;30178:12;:44;;;;30257:2;30241:12;;:18;;30233:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;30000:300:::0;;:::o;30533:197::-;6643:12;:10;:12::i;:::-;6632:23;;:7;:5;:7::i;:::-;:23;;;6624:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;30654:3:::1;30628:30;;:14;:30;;::::0;30620:63:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;30708:14;30694:11;;:28;;;;;;;;;;;;;;;;;;30533:197:::0;:::o;21028:25::-;;;;:::o;20335:36::-;;;;;;;;;;;;;:::o;28332:133::-;6643:12;:10;:12::i;:::-;6632:23;;:7;:5;:7::i;:::-;:23;;;6624:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;28452:5:::1;28424:16;:25;28441:7;28424:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;28332:133:::0;;:::o;22790:934::-;22876:18;22932:95;23052:22;;;;;;;;;;;;;;;;;23042:33;;;;;;23100:10;;;;;;;;;;;;;;;;;23090:21;;;;;;23126:13;23162:4;22907:271;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22897:282;;;;;;22876:303;;23190:18;23246:49;23320:23;;;;;;;;;;;;;;;;;23310:34;;;;;;23367:1;23221:159;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;23211:170;;;;;;23190:191;;23392:14;23475:10;23500;23419:118;;;;;;;;;:::i;:::-;;;;;;;;;;;;;23409:129;;;;;;23392:146;;23551:14;23568:26;23578:6;23586:1;23589;23592;23568:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23551:43;;23623:7;:5;:7::i;:::-;23613:17;;:6;:17;;;23605:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;23682:4;23665:14;;:21;;;;;;;;;;;;;;;;;;23712:4;23697:12;;:19;;;;;;;;;;;;;;;;;;22865:859;;;;22790:934;;;:::o;20508:34::-;;;;;;;;;;;;;:::o;17023:151::-;17112:7;17139:11;:18;17151:5;17139:18;;;;;;;;;;;;;;;:27;17158:7;17139:27;;;;;;;;;;;;;;;;17132:34;;17023:151;;;;:::o;20956:27::-;;;;:::o;20990:31::-;;;;:::o;6796:180::-;6643:12;:10;:12::i;:::-;6632:23;;:7;:5;:7::i;:::-;:23;;;6624:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;6905:1:::1;6885:22;;:8;:22;;::::0;6877:52:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6940:28;6959:8;6940:18;:28::i;:::-;6796:180:::0;:::o;20448:24::-;;;;:::o;6138:98::-;6191:7;6218:10;6211:17;;6138:98;:::o;16679:336::-;16798:1;16781:19;;:5;:19;;;16773:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;16873:1;16854:21;;:7;:21;;;16846:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;16953:6;16923:11;:18;16935:5;16923:18;;;;;;;;;;;;;;;:27;16942:7;16923:27;;;;;;;;;;;;;;;:36;;;;16991:7;16975:32;;16984:5;16975:32;;;17000:6;16975:32;;;;;;:::i;:::-;;;;;;;;16679:336;;;:::o;25157:2994::-;25305:1;25289:18;;:4;:18;;;25281:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;25372:1;25358:16;;:2;:16;;;25350:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;25424:9;:15;25434:4;25424:15;;;;;;;;;;;;;;;;;;;;;;;;;25423:16;25415:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;25489:9;:13;25499:2;25489:13;;;;;;;;;;;;;;;;;;;;;;;;;25488:14;25480:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;25557:1;25547:6;:11;25543:93;;25575:28;25591:4;25597:2;25601:1;25575:15;:28::i;:::-;25618:7;;25543:93;25652:14;;;;;;;;;;;25648:963;;;25695:7;:5;:7::i;:::-;25687:15;;:4;:15;;;;:32;;;;;25712:7;:5;:7::i;:::-;25706:13;;:2;:13;;;;25687:32;:52;;;;;25737:1;25723:16;;:2;:16;;;;25687:52;:77;;;;;25757:6;25743:21;;:2;:21;;;;25687:77;:91;;;;;25769:9;;;;;;;;;;;25768:10;25687:91;25683:917;;;25804:14;;;;;;;;;;;25799:145;;25851:16;:22;25868:4;25851:22;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;25877:16;:20;25894:2;25877:20;;;;;;;;;;;;;;;;;;;;;;;;;25851:46;25843:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;25799:145;25968:8;:14;25977:4;25968:14;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;;25987:29;:33;26017:2;25987:33;;;;;;;;;;;;;;;;;;;;;;;;;25986:34;25968:52;25964:621;;;26063:5;;26053:6;:15;;26045:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;26168:9;;26151:13;26161:2;26151:9;:13::i;:::-;26142:6;:22;;;;:::i;:::-;:35;;26134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25964:621;;;26248:8;:12;26257:2;26248:12;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;;26265:29;:35;26295:4;26265:35;;;;;;;;;;;;;;;;;;;;;;;;;26264:36;26248:52;26244:341;;;26343:5;;26333:6;:15;;26325:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26244:341;;;26440:29;:33;26470:2;26440:33;;;;;;;;;;;;;;;;;;;;;;;;;26435:150;;26532:9;;26515:13;26525:2;26515:9;:13::i;:::-;26506:6;:22;;;;:::i;:::-;:35;;26498:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26435:150;26244:341;25964:621;25683:917;25648:963;26650:1;26627:25;;:11;;;;;;;;;;;:25;;;;:79;;;;;26669:11;;;;;;;;;;;26656:35;;;26700:4;26656:50;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26627:79;26623:270;;;26723:10;26749:11;;;;;;;;;;;26736:31;;;26768:4;26774:2;26786:8;;;;;;;;;;;26797:9;;26808:5;;26815:12;;26736:92;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26723:105;;26851:5;26843:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;26708:185;26623:270;26905:20;26928:24;26946:4;26928:9;:24::i;:::-;26905:47;;26963:12;26994;;26978;:28;;26963:43;;27021:12;;;;;;;;;;;:23;;;;;27037:7;27021:23;:37;;;;;27049:9;;;;;;;;;;;27048:10;27021:37;:69;;;;;27076:8;:14;27085:4;27076:14;;;;;;;;;;;;;;;;;;;;;;;;;27075:15;27021:69;:96;;;;;27095:16;:22;27112:4;27095:22;;;;;;;;;;;;;;;;;;;;;;;;;27094:23;27021:96;:121;;;;;27122:16;:20;27139:2;27122:20;;;;;;;;;;;;;;;;;;;;;;;;;27121:21;27021:121;27017:225;;;27171:4;27159:9;;:16;;;;;;;;;;;;;;;;;;27190:8;:6;:8::i;:::-;27225:5;27213:9;;:17;;;;;;;;;;;;;;;;;;27017:225;27254:9;27267;;;;;;;;;;;27266:10;27254:22;;27291:16;:22;27308:4;27291:22;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;27317:16;:20;27334:2;27317:20;;;;;;;;;;;;;;;;;;;;;;;;;27291:46;27287:77;;;27359:5;27352:12;;27287:77;27377:12;27408:4;27404:694;;;27433:8;:12;27442:2;27433:12;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;;27464:1;27449:12;;:16;27433:32;27429:541;;;27493:33;27522:3;27493:24;27504:12;;27493:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;27486:40;;27583:12;;27569:10;;27562:4;:17;;;;:::i;:::-;27561:34;;;;:::i;:::-;27545:12;;:50;;;;;;;:::i;:::-;;;;;;;;27664:12;;27644:16;;27637:4;:23;;;;:::i;:::-;27636:40;;;;:::i;:::-;27614:18;;:62;;;;;;;:::i;:::-;;;;;;;;27429:541;;;27715:8;:14;27724:4;27715:14;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;;27747:1;27733:11;;:15;27715:33;27711:259;;;27776:32;27804:3;27776:23;27787:11;;27776:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;27769:39;;27864:11;;27851:9;;27844:4;:16;;;;:::i;:::-;27843:32;;;;:::i;:::-;27827:12;;:48;;;;;;;:::i;:::-;;;;;;;;27943:11;;27924:15;;27917:4;:22;;;;:::i;:::-;27916:38;;;;:::i;:::-;27894:18;;:60;;;;;;;:::i;:::-;;;;;;;;27711:259;27429:541;27995:1;27988:4;:8;27984:73;;;28015:42;28031:4;28045;28052;28015:15;:42::i;:::-;27984:73;28082:4;28072:14;;;;;:::i;:::-;;;27404:694;28110:33;28126:4;28132:2;28136:6;28110:15;:33::i;:::-;25270:2881;;;;25157:2994;;;;:::o;7095:191::-;7169:16;7188:6;;;;;;;;;;;7169:25;;7214:8;7205:6;;:17;;;;;;;;;;;;;;;;;;7269:8;7238:40;;7259:8;7238:40;;;;;;;;;;;;7158:128;7095:191;:::o;19491:607::-;19604:1;19588:18;;:4;:18;;;19580:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;19673:1;19659:16;;:2;:16;;;19651:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;19718:38;19739:4;19745:2;19749:6;19718:20;:38::i;:::-;19767:19;19789:9;:15;19799:4;19789:15;;;;;;;;;;;;;;;;19767:37;;19838:6;19823:11;:21;;19815:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;19949:6;19935:11;:20;19917:9;:15;19927:4;19917:15;;;;;;;;;;;;;;;:38;;;;19994:6;19977:9;:13;19987:2;19977:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;20031:2;20016:26;;20025:4;20016:26;;;20035:6;20016:26;;;;;;:::i;:::-;;;;;;;;20053:37;20073:4;20079:2;20083:6;20053:19;:37::i;:::-;19569:529;19491:607;;;:::o;23734:847::-;23771:12;23794:25;23843:12;;23822:18;;:33;;;;:::i;:::-;23794:61;;23866:20;23889:24;23907:4;23889:9;:24::i;:::-;23866:47;;23951:1;23930:17;:22;:43;;;;23972:1;23956:12;:17;23930:43;23926:69;;;23988:7;;;;;23926:69;24041:2;24026:12;;:17;;;;:::i;:::-;24011:12;:32;24007:83;;;24088:2;24073:12;;:17;;;;:::i;:::-;24058:32;;24007:83;24103:22;24128:21;24103:46;;24160:30;24177:12;24160:16;:30::i;:::-;24203:18;24224:41;24250:14;24224:21;:25;;:41;;;;:::i;:::-;24203:62;;24276:17;24296:51;24329:17;24296:28;24311:12;;24296:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;24276:71;;24382:10;;;;;;;;;;;24374:24;;24406:9;24374:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24360:60;;;;;24453:16;;;;;;;;;;;24445:30;;24484:21;24445:66;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24431:80;;;;;24545:1;24524:18;:22;;;;24572:1;24557:12;:16;;;;23760:821;;;;;;23734:847;:::o;7317:98::-;7375:7;7406:1;7402;:5;;;;:::i;:::-;7395:12;;7317:98;;;;:::o;7701:::-;7759:7;7790:1;7786;:5;;;;:::i;:::-;7779:12;;7701:98;;;;:::o;19358:125::-;;;;:::o;20106:144::-;;;;:::o;24590:559::-;24711:21;24749:1;24735:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24711:40;;24780:4;24762;24767:1;24762:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24806:10;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24796:4;24801:1;24796:7;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;;;24836:52;24853:4;24868:10;;;;;;;;;;;24881:6;24836:8;:52::i;:::-;24927:10;;;;;;;;;;;:61;;;25003:6;25024:1;25068:4;25095;25115:15;24927:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24640:509;24590:559;:::o;8346:98::-;8404:7;8435:1;8431;:5;;;;:::i;:::-;8424:12;;8346:98;;;;:::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;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:118::-;4845:24;4863:5;4845:24;:::i;:::-;4840:3;4833:37;4758:118;;:::o;4882:222::-;4975:4;5013:2;5002:9;4998:18;4990:26;;5026:71;5094:1;5083:9;5079:17;5070:6;5026:71;:::i;:::-;4882:222;;;;:::o;5110:329::-;5169:6;5218:2;5206:9;5197:7;5193:23;5189:32;5186:119;;;5224:79;;:::i;:::-;5186:119;5344:1;5369:53;5414:7;5405:6;5394:9;5390:22;5369:53;:::i;:::-;5359:63;;5315:117;5110:329;;;;:::o;5445:86::-;5480:7;5520:4;5513:5;5509:16;5498:27;;5445:86;;;:::o;5537:112::-;5620:22;5636:5;5620:22;:::i;:::-;5615:3;5608:35;5537:112;;:::o;5655:214::-;5744:4;5782:2;5771:9;5767:18;5759:26;;5795:67;5859:1;5848:9;5844:17;5835:6;5795:67;:::i;:::-;5655:214;;;;:::o;5875:116::-;5945:21;5960:5;5945:21;:::i;:::-;5938:5;5935:32;5925:60;;5981:1;5978;5971:12;5925:60;5875:116;:::o;5997:133::-;6040:5;6078:6;6065:20;6056:29;;6094:30;6118:5;6094:30;:::i;:::-;5997:133;;;;:::o;6136:468::-;6201:6;6209;6258:2;6246:9;6237:7;6233:23;6229:32;6226:119;;;6264:79;;:::i;:::-;6226:119;6384:1;6409:53;6454:7;6445:6;6434:9;6430:22;6409:53;:::i;:::-;6399:63;;6355:117;6511:2;6537:50;6579:7;6570:6;6559:9;6555:22;6537:50;:::i;:::-;6527:60;;6482:115;6136:468;;;;;:::o;6610:323::-;6666:6;6715:2;6703:9;6694:7;6690:23;6686:32;6683:119;;;6721:79;;:::i;:::-;6683:119;6841:1;6866:50;6908:7;6899:6;6888:9;6884:22;6866:50;:::i;:::-;6856:60;;6812:114;6610:323;;;;:::o;6939:474::-;7007:6;7015;7064:2;7052:9;7043:7;7039:23;7035:32;7032:119;;;7070:79;;:::i;:::-;7032:119;7190:1;7215:53;7260:7;7251:6;7240:9;7236:22;7215:53;:::i;:::-;7205:63;;7161:117;7317:2;7343:53;7388:7;7379:6;7368:9;7364:22;7343:53;:::i;:::-;7333:63;;7288:118;6939:474;;;;;:::o;7419:60::-;7447:3;7468:5;7461:12;;7419:60;;;:::o;7485:142::-;7535:9;7568:53;7586:34;7595:24;7613:5;7595:24;:::i;:::-;7586:34;:::i;:::-;7568:53;:::i;:::-;7555:66;;7485:142;;;:::o;7633:126::-;7683:9;7716:37;7747:5;7716:37;:::i;:::-;7703:50;;7633:126;;;:::o;7765:152::-;7841:9;7874:37;7905:5;7874:37;:::i;:::-;7861:50;;7765:152;;;:::o;7923:183::-;8036:63;8093:5;8036:63;:::i;:::-;8031:3;8024:76;7923:183;;:::o;8112:274::-;8231:4;8269:2;8258:9;8254:18;8246:26;;8282:97;8376:1;8365:9;8361:17;8352:6;8282:97;:::i;:::-;8112:274;;;;:::o;8392:118::-;8463:22;8479:5;8463:22;:::i;:::-;8456:5;8453:33;8443:61;;8500:1;8497;8490:12;8443:61;8392:118;:::o;8516:135::-;8560:5;8598:6;8585:20;8576:29;;8614:31;8639:5;8614:31;:::i;:::-;8516:135;;;;:::o;8657:77::-;8694:7;8723:5;8712:16;;8657:77;;;:::o;8740:122::-;8813:24;8831:5;8813:24;:::i;:::-;8806:5;8803:35;8793:63;;8852:1;8849;8842:12;8793:63;8740:122;:::o;8868:139::-;8914:5;8952:6;8939:20;8930:29;;8968:33;8995:5;8968:33;:::i;:::-;8868:139;;;;:::o;9013:615::-;9088:6;9096;9104;9153:2;9141:9;9132:7;9128:23;9124:32;9121:119;;;9159:79;;:::i;:::-;9121:119;9279:1;9304:51;9347:7;9338:6;9327:9;9323:22;9304:51;:::i;:::-;9294:61;;9250:115;9404:2;9430:53;9475:7;9466:6;9455:9;9451:22;9430:53;:::i;:::-;9420:63;;9375:118;9532:2;9558:53;9603:7;9594:6;9583:9;9579:22;9558:53;:::i;:::-;9548:63;;9503:118;9013:615;;;;;:::o;9634:474::-;9702:6;9710;9759:2;9747:9;9738:7;9734:23;9730:32;9727:119;;;9765:79;;:::i;:::-;9727:119;9885:1;9910:53;9955:7;9946:6;9935:9;9931:22;9910:53;:::i;:::-;9900:63;;9856:117;10012:2;10038:53;10083:7;10074:6;10063:9;10059:22;10038:53;:::i;:::-;10028:63;;9983:118;9634:474;;;;;:::o;10114:180::-;10162:77;10159:1;10152:88;10259:4;10256:1;10249:15;10283:4;10280:1;10273:15;10300:320;10344:6;10381:1;10375:4;10371:12;10361:22;;10428:1;10422:4;10418:12;10449:18;10439:81;;10505:4;10497:6;10493:17;10483:27;;10439:81;10567:2;10559:6;10556:14;10536:18;10533:38;10530:84;;10586:18;;:::i;:::-;10530:84;10351:269;10300:320;;;:::o;10626:179::-;10766:31;10762:1;10754:6;10750:14;10743:55;10626:179;:::o;10811:366::-;10953:3;10974:67;11038:2;11033:3;10974:67;:::i;:::-;10967:74;;11050:93;11139:3;11050:93;:::i;:::-;11168:2;11163:3;11159:12;11152:19;;10811:366;;;:::o;11183:419::-;11349:4;11387:2;11376:9;11372:18;11364:26;;11436:9;11430:4;11426:20;11422:1;11411:9;11407:17;11400:47;11464:131;11590:4;11464:131;:::i;:::-;11456:139;;11183:419;;;:::o;11608:163::-;11748:15;11744:1;11736:6;11732:14;11725:39;11608:163;:::o;11777:366::-;11919:3;11940:67;12004:2;11999:3;11940:67;:::i;:::-;11933:74;;12016:93;12105:3;12016:93;:::i;:::-;12134:2;12129:3;12125:12;12118:19;;11777:366;;;:::o;12149:419::-;12315:4;12353:2;12342:9;12338:18;12330:26;;12402:9;12396:4;12392:20;12388:1;12377:9;12373:17;12366:47;12430:131;12556:4;12430:131;:::i;:::-;12422:139;;12149:419;;;:::o;12574:180::-;12622:77;12619:1;12612:88;12719:4;12716:1;12709:15;12743:4;12740:1;12733:15;12760:410;12800:7;12823:20;12841:1;12823:20;:::i;:::-;12818:25;;12857:20;12875:1;12857:20;:::i;:::-;12852:25;;12912:1;12909;12905:9;12934:30;12952:11;12934:30;:::i;:::-;12923:41;;13113:1;13104:7;13100:15;13097:1;13094:22;13074:1;13067:9;13047:83;13024:139;;13143:18;;:::i;:::-;13024:139;12808:362;12760:410;;;;:::o;13176:180::-;13224:77;13221:1;13214:88;13321:4;13318:1;13311:15;13345:4;13342:1;13335:15;13362:185;13402:1;13419:20;13437:1;13419:20;:::i;:::-;13414:25;;13453:20;13471:1;13453:20;:::i;:::-;13448:25;;13492:1;13482:35;;13497:18;;:::i;:::-;13482:35;13539:1;13536;13532:9;13527:14;;13362:185;;;;:::o;13553:240::-;13693:34;13689:1;13681:6;13677:14;13670:58;13762:23;13757:2;13749:6;13745:15;13738:48;13553:240;:::o;13799:366::-;13941:3;13962:67;14026:2;14021:3;13962:67;:::i;:::-;13955:74;;14038:93;14127:3;14038:93;:::i;:::-;14156:2;14151:3;14147:12;14140:19;;13799:366;;;:::o;14171:419::-;14337:4;14375:2;14364:9;14360:18;14352:26;;14424:9;14418:4;14414:20;14410:1;14399:9;14395:17;14388:47;14452:131;14578:4;14452:131;:::i;:::-;14444:139;;14171:419;;;:::o;14596:239::-;14736:34;14732:1;14724:6;14720:14;14713:58;14805:22;14800:2;14792:6;14788:15;14781:47;14596:239;:::o;14841:366::-;14983:3;15004:67;15068:2;15063:3;15004:67;:::i;:::-;14997:74;;15080:93;15169:3;15080:93;:::i;:::-;15198:2;15193:3;15189:12;15182:19;;14841:366;;;:::o;15213:419::-;15379:4;15417:2;15406:9;15402:18;15394:26;;15466:9;15460:4;15456:20;15452:1;15441:9;15437:17;15430:47;15494:131;15620:4;15494:131;:::i;:::-;15486:139;;15213:419;;;:::o;15638:191::-;15678:3;15697:20;15715:1;15697:20;:::i;:::-;15692:25;;15731:20;15749:1;15731:20;:::i;:::-;15726:25;;15774:1;15771;15767:9;15760:16;;15795:3;15792:1;15789:10;15786:36;;;15802:18;;:::i;:::-;15786:36;15638:191;;;;:::o;15835:227::-;15975:34;15971:1;15963:6;15959:14;15952:58;16044:10;16039:2;16031:6;16027:15;16020:35;15835:227;:::o;16068:366::-;16210:3;16231:67;16295:2;16290:3;16231:67;:::i;:::-;16224:74;;16307:93;16396:3;16307:93;:::i;:::-;16425:2;16420:3;16416:12;16409:19;;16068:366;;;:::o;16440:419::-;16606:4;16644:2;16633:9;16629:18;16621:26;;16693:9;16687:4;16683:20;16679:1;16668:9;16664:17;16657:47;16721:131;16847:4;16721:131;:::i;:::-;16713:139;;16440:419;;;:::o;16865:102::-;16907:8;16954:5;16951:1;16947:13;16926:34;;16865:102;;;:::o;16973:848::-;17034:5;17041:4;17065:6;17056:15;;17089:5;17080:14;;17103:712;17124:1;17114:8;17111:15;17103:712;;;17219:4;17214:3;17210:14;17204:4;17201:24;17198:50;;;17228:18;;:::i;:::-;17198:50;17278:1;17268:8;17264:16;17261:451;;;17693:4;17686:5;17682:16;17673:25;;17261:451;17743:4;17737;17733:15;17725:23;;17773:32;17796:8;17773:32;:::i;:::-;17761:44;;17103:712;;;16973:848;;;;;;;:::o;17827:1073::-;17881:5;18072:8;18062:40;;18093:1;18084:10;;18095:5;;18062:40;18121:4;18111:36;;18138:1;18129:10;;18140:5;;18111:36;18207:4;18255:1;18250:27;;;;18291:1;18286:191;;;;18200:277;;18250:27;18268:1;18259:10;;18270:5;;;18286:191;18331:3;18321:8;18318:17;18315:43;;;18338:18;;:::i;:::-;18315:43;18387:8;18384:1;18380:16;18371:25;;18422:3;18415:5;18412:14;18409:40;;;18429:18;;:::i;:::-;18409:40;18462:5;;;18200:277;;18586:2;18576:8;18573:16;18567:3;18561:4;18558:13;18554:36;18536:2;18526:8;18523:16;18518:2;18512:4;18509:12;18505:35;18489:111;18486:246;;;18642:8;18636:4;18632:19;18623:28;;18677:3;18670:5;18667:14;18664:40;;;18684:18;;:::i;:::-;18664:40;18717:5;;18486:246;18757:42;18795:3;18785:8;18779:4;18776:1;18757:42;:::i;:::-;18742:57;;;;18831:4;18826:3;18822:14;18815:5;18812:25;18809:51;;;18840:18;;:::i;:::-;18809:51;18889:4;18882:5;18878:16;18869:25;;17827:1073;;;;;;:::o;18906:281::-;18964:5;18988:23;19006:4;18988:23;:::i;:::-;18980:31;;19032:25;19048:8;19032:25;:::i;:::-;19020:37;;19076:104;19113:66;19103:8;19097:4;19076:104;:::i;:::-;19067:113;;18906:281;;;;:::o;19193:182::-;19333:34;19329:1;19321:6;19317:14;19310:58;19193:182;:::o;19381:366::-;19523:3;19544:67;19608:2;19603:3;19544:67;:::i;:::-;19537:74;;19620:93;19709:3;19620:93;:::i;:::-;19738:2;19733:3;19729:12;19722:19;;19381:366;;;:::o;19753:419::-;19919:4;19957:2;19946:9;19942:18;19934:26;;20006:9;20000:4;19996:20;19992:1;19981:9;19977:17;19970:47;20034:131;20160:4;20034:131;:::i;:::-;20026:139;;19753:419;;;:::o;20178:223::-;20318:34;20314:1;20306:6;20302:14;20295:58;20387:6;20382:2;20374:6;20370:15;20363:31;20178:223;:::o;20407:366::-;20549:3;20570:67;20634:2;20629:3;20570:67;:::i;:::-;20563:74;;20646:93;20735:3;20646:93;:::i;:::-;20764:2;20759:3;20755:12;20748:19;;20407:366;;;:::o;20779:419::-;20945:4;20983:2;20972:9;20968:18;20960:26;;21032:9;21026:4;21022:20;21018:1;21007:9;21003:17;20996:47;21060:131;21186:4;21060:131;:::i;:::-;21052:139;;20779:419;;;:::o;21204:181::-;21344:33;21340:1;21332:6;21328:14;21321:57;21204:181;:::o;21391:366::-;21533:3;21554:67;21618:2;21613:3;21554:67;:::i;:::-;21547:74;;21630:93;21719:3;21630:93;:::i;:::-;21748:2;21743:3;21739:12;21732:19;;21391:366;;;:::o;21763:419::-;21929:4;21967:2;21956:9;21952:18;21944:26;;22016:9;22010:4;22006:20;22002:1;21991:9;21987:17;21980:47;22044:131;22170:4;22044:131;:::i;:::-;22036:139;;21763:419;;;:::o;22188:178::-;22328:30;22324:1;22316:6;22312:14;22305:54;22188:178;:::o;22372:366::-;22514:3;22535:67;22599:2;22594:3;22535:67;:::i;:::-;22528:74;;22611:93;22700:3;22611:93;:::i;:::-;22729:2;22724:3;22720:12;22713:19;;22372:366;;;:::o;22744:419::-;22910:4;22948:2;22937:9;22933:18;22925:26;;22997:9;22991:4;22987:20;22983:1;22972:9;22968:17;22961:47;23025:131;23151:4;23025:131;:::i;:::-;23017:139;;22744:419;;;:::o;23169:170::-;23309:22;23305:1;23297:6;23293:14;23286:46;23169:170;:::o;23345:366::-;23487:3;23508:67;23572:2;23567:3;23508:67;:::i;:::-;23501:74;;23584:93;23673:3;23584:93;:::i;:::-;23702:2;23697:3;23693:12;23686:19;;23345:366;;;:::o;23717:419::-;23883:4;23921:2;23910:9;23906:18;23898:26;;23970:9;23964:4;23960:20;23956:1;23945:9;23941:17;23934:47;23998:131;24124:4;23998:131;:::i;:::-;23990:139;;23717:419;;;:::o;24142:118::-;24229:24;24247:5;24229:24;:::i;:::-;24224:3;24217:37;24142:118;;:::o;24266:664::-;24471:4;24509:3;24498:9;24494:19;24486:27;;24523:71;24591:1;24580:9;24576:17;24567:6;24523:71;:::i;:::-;24604:72;24672:2;24661:9;24657:18;24648:6;24604:72;:::i;:::-;24686;24754:2;24743:9;24739:18;24730:6;24686:72;:::i;:::-;24768;24836:2;24825:9;24821:18;24812:6;24768:72;:::i;:::-;24850:73;24918:3;24907:9;24903:19;24894:6;24850:73;:::i;:::-;24266:664;;;;;;;;:::o;24936:442::-;25085:4;25123:2;25112:9;25108:18;25100:26;;25136:71;25204:1;25193:9;25189:17;25180:6;25136:71;:::i;:::-;25217:72;25285:2;25274:9;25270:18;25261:6;25217:72;:::i;:::-;25299;25367:2;25356:9;25352:18;25343:6;25299:72;:::i;:::-;24936:442;;;;;;:::o;25384:148::-;25486:11;25523:3;25508:18;;25384:148;;;;:::o;25538:214::-;25678:66;25674:1;25666:6;25662:14;25655:90;25538:214;:::o;25758:400::-;25918:3;25939:84;26021:1;26016:3;25939:84;:::i;:::-;25932:91;;26032:93;26121:3;26032:93;:::i;:::-;26150:1;26145:3;26141:11;26134:18;;25758:400;;;:::o;26164:79::-;26203:7;26232:5;26221:16;;26164:79;;;:::o;26249:157::-;26354:45;26374:24;26392:5;26374:24;:::i;:::-;26354:45;:::i;:::-;26349:3;26342:58;26249:157;;:::o;26412:663::-;26653:3;26675:148;26819:3;26675:148;:::i;:::-;26668:155;;26833:75;26904:3;26895:6;26833:75;:::i;:::-;26933:2;26928:3;26924:12;26917:19;;26946:75;27017:3;27008:6;26946:75;:::i;:::-;27046:2;27041:3;27037:12;27030:19;;27066:3;27059:10;;26412:663;;;;;:::o;27081:545::-;27254:4;27292:3;27281:9;27277:19;27269:27;;27306:71;27374:1;27363:9;27359:17;27350:6;27306:71;:::i;:::-;27387:68;27451:2;27440:9;27436:18;27427:6;27387:68;:::i;:::-;27465:72;27533:2;27522:9;27518:18;27509:6;27465:72;:::i;:::-;27547;27615:2;27604:9;27600:18;27591:6;27547:72;:::i;:::-;27081:545;;;;;;;:::o;27632:167::-;27772:19;27768:1;27760:6;27756:14;27749:43;27632:167;:::o;27805:366::-;27947:3;27968:67;28032:2;28027:3;27968:67;:::i;:::-;27961:74;;28044:93;28133:3;28044:93;:::i;:::-;28162:2;28157:3;28153:12;28146:19;;27805:366;;;:::o;28177:419::-;28343:4;28381:2;28370:9;28366:18;28358:26;;28430:9;28424:4;28420:20;28416:1;28405:9;28401:17;28394:47;28458:131;28584:4;28458:131;:::i;:::-;28450:139;;28177:419;;;:::o;28602:167::-;28742:19;28738:1;28730:6;28726:14;28719:43;28602:167;:::o;28775:366::-;28917:3;28938:67;29002:2;28997:3;28938:67;:::i;:::-;28931:74;;29014:93;29103:3;29014:93;:::i;:::-;29132:2;29127:3;29123:12;29116:19;;28775:366;;;:::o;29147:419::-;29313:4;29351:2;29340:9;29336:18;29328:26;;29400:9;29394:4;29390:20;29386:1;29375:9;29371:17;29364:47;29428:131;29554:4;29428:131;:::i;:::-;29420:139;;29147:419;;;:::o;29572:180::-;29712:32;29708:1;29700:6;29696:14;29689:56;29572:180;:::o;29758:366::-;29900:3;29921:67;29985:2;29980:3;29921:67;:::i;:::-;29914:74;;29997:93;30086:3;29997:93;:::i;:::-;30115:2;30110:3;30106:12;30099:19;;29758:366;;;:::o;30130:419::-;30296:4;30334:2;30323:9;30319:18;30311:26;;30383:9;30377:4;30373:20;30369:1;30358:9;30354:17;30347:47;30411:131;30537:4;30411:131;:::i;:::-;30403:139;;30130:419;;;:::o;30555:182::-;30695:34;30691:1;30683:6;30679:14;30672:58;30555:182;:::o;30743:366::-;30885:3;30906:67;30970:2;30965:3;30906:67;:::i;:::-;30899:74;;30982:93;31071:3;30982:93;:::i;:::-;31100:2;31095:3;31091:12;31084:19;;30743:366;;;:::o;31115:419::-;31281:4;31319:2;31308:9;31304:18;31296:26;;31368:9;31362:4;31358:20;31354:1;31343:9;31339:17;31332:47;31396:131;31522:4;31396:131;:::i;:::-;31388:139;;31115:419;;;:::o;31540:177::-;31680:29;31676:1;31668:6;31664:14;31657:53;31540:177;:::o;31723:366::-;31865:3;31886:67;31950:2;31945:3;31886:67;:::i;:::-;31879:74;;31962:93;32051:3;31962:93;:::i;:::-;32080:2;32075:3;32071:12;32064:19;;31723:366;;;:::o;32095:419::-;32261:4;32299:2;32288:9;32284:18;32276:26;;32348:9;32342:4;32338:20;32334:1;32323:9;32319:17;32312:47;32376:131;32502:4;32376:131;:::i;:::-;32368:139;;32095:419;;;:::o;32520:175::-;32660:27;32656:1;32648:6;32644:14;32637:51;32520:175;:::o;32701:366::-;32843:3;32864:67;32928:2;32923:3;32864:67;:::i;:::-;32857:74;;32940:93;33029:3;32940:93;:::i;:::-;33058:2;33053:3;33049:12;33042:19;;32701:366;;;:::o;33073:419::-;33239:4;33277:2;33266:9;33262:18;33254:26;;33326:9;33320:4;33316:20;33312:1;33301:9;33297:17;33290:47;33354:131;33480:4;33354:131;:::i;:::-;33346:139;;33073:419;;;:::o;33498:175::-;33638:27;33634:1;33626:6;33622:14;33615:51;33498:175;:::o;33679:366::-;33821:3;33842:67;33906:2;33901:3;33842:67;:::i;:::-;33835:74;;33918:93;34007:3;33918:93;:::i;:::-;34036:2;34031:3;34027:12;34020:19;;33679:366;;;:::o;34051:419::-;34217:4;34255:2;34244:9;34240:18;34232:26;;34304:9;34298:4;34294:20;34290:1;34279:9;34275:17;34268:47;34332:131;34458:4;34332:131;:::i;:::-;34324:139;;34051:419;;;:::o;34476:173::-;34616:25;34612:1;34604:6;34600:14;34593:49;34476:173;:::o;34655:366::-;34797:3;34818:67;34882:2;34877:3;34818:67;:::i;:::-;34811:74;;34894:93;34983:3;34894:93;:::i;:::-;35012:2;35007:3;35003:12;34996:19;;34655:366;;;:::o;35027:419::-;35193:4;35231:2;35220:9;35216:18;35208:26;;35280:9;35274:4;35270:20;35266:1;35255:9;35251:17;35244:47;35308:131;35434:4;35308:131;:::i;:::-;35300:139;;35027:419;;;:::o;35452:172::-;35592:24;35588:1;35580:6;35576:14;35569:48;35452:172;:::o;35630:366::-;35772:3;35793:67;35857:2;35852:3;35793:67;:::i;:::-;35786:74;;35869:93;35958:3;35869:93;:::i;:::-;35987:2;35982:3;35978:12;35971:19;;35630:366;;;:::o;36002:419::-;36168:4;36206:2;36195:9;36191:18;36183:26;;36255:9;36249:4;36245:20;36241:1;36230:9;36226:17;36219:47;36283:131;36409:4;36283:131;:::i;:::-;36275:139;;36002:419;;;:::o;36427:225::-;36567:34;36563:1;36555:6;36551:14;36544:58;36636:8;36631:2;36623:6;36619:15;36612:33;36427:225;:::o;36658:366::-;36800:3;36821:67;36885:2;36880:3;36821:67;:::i;:::-;36814:74;;36897:93;36986:3;36897:93;:::i;:::-;37015:2;37010:3;37006:12;36999:19;;36658:366;;;:::o;37030:419::-;37196:4;37234:2;37223:9;37219:18;37211:26;;37283:9;37277:4;37273:20;37269:1;37258:9;37254:17;37247:47;37311:131;37437:4;37311:131;:::i;:::-;37303:139;;37030:419;;;:::o;37455:169::-;37595:21;37591:1;37583:6;37579:14;37572:45;37455:169;:::o;37630:366::-;37772:3;37793:67;37857:2;37852:3;37793:67;:::i;:::-;37786:74;;37869:93;37958:3;37869:93;:::i;:::-;37987:2;37982:3;37978:12;37971:19;;37630:366;;;:::o;38002:419::-;38168:4;38206:2;38195:9;38191:18;38183:26;;38255:9;38249:4;38245:20;38241:1;38230:9;38226:17;38219:47;38283:131;38409:4;38283:131;:::i;:::-;38275:139;;38002:419;;;:::o;38427:226::-;38567:34;38563:1;38555:6;38551:14;38544:58;38636:9;38631:2;38623:6;38619:15;38612:34;38427:226;:::o;38659:366::-;38801:3;38822:67;38886:2;38881:3;38822:67;:::i;:::-;38815:74;;38898:93;38987:3;38898:93;:::i;:::-;39016:2;39011:3;39007:12;39000:19;;38659:366;;;:::o;39031:419::-;39197:4;39235:2;39224:9;39220:18;39212:26;;39284:9;39278:4;39274:20;39270:1;39259:9;39255:17;39248:47;39312:131;39438:4;39312:131;:::i;:::-;39304:139;;39031:419;;;:::o;39456:137::-;39510:5;39541:6;39535:13;39526:22;;39557:30;39581:5;39557:30;:::i;:::-;39456:137;;;;:::o;39599:345::-;39666:6;39715:2;39703:9;39694:7;39690:23;39686:32;39683:119;;;39721:79;;:::i;:::-;39683:119;39841:1;39866:61;39919:7;39910:6;39899:9;39895:22;39866:61;:::i;:::-;39856:71;;39812:125;39599:345;;;;:::o;39950:775::-;40183:4;40221:3;40210:9;40206:19;40198:27;;40235:71;40303:1;40292:9;40288:17;40279:6;40235:71;:::i;:::-;40316:72;40384:2;40373:9;40369:18;40360:6;40316:72;:::i;:::-;40398;40466:2;40455:9;40451:18;40442:6;40398:72;:::i;:::-;40480;40548:2;40537:9;40533:18;40524:6;40480:72;:::i;:::-;40562:73;40630:3;40619:9;40615:19;40606:6;40562:73;:::i;:::-;40645;40713:3;40702:9;40698:19;40689:6;40645:73;:::i;:::-;39950:775;;;;;;;;;:::o;40731:170::-;40871:22;40867:1;40859:6;40855:14;40848:46;40731:170;:::o;40907:366::-;41049:3;41070:67;41134:2;41129:3;41070:67;:::i;:::-;41063:74;;41146:93;41235:3;41146:93;:::i;:::-;41264:2;41259:3;41255:12;41248:19;;40907:366;;;:::o;41279:419::-;41445:4;41483:2;41472:9;41468:18;41460:26;;41532:9;41526:4;41522:20;41518:1;41507:9;41503:17;41496:47;41560:131;41686:4;41560:131;:::i;:::-;41552:139;;41279:419;;;:::o;41704:194::-;41744:4;41764:20;41782:1;41764:20;:::i;:::-;41759:25;;41798:20;41816:1;41798:20;:::i;:::-;41793:25;;41842:1;41839;41835:9;41827:17;;41866:1;41860:4;41857:11;41854:37;;;41871:18;;:::i;:::-;41854:37;41704:194;;;;:::o;41904:179::-;42044:31;42040:1;42032:6;42028:14;42021:55;41904:179;:::o;42089:366::-;42231:3;42252:67;42316:2;42311:3;42252:67;:::i;:::-;42245:74;;42328:93;42417:3;42328:93;:::i;:::-;42446:2;42441:3;42437:12;42430:19;;42089:366;;;:::o;42461:419::-;42627:4;42665:2;42654:9;42650:18;42642:26;;42714:9;42708:4;42704:20;42700:1;42689:9;42685:17;42678:47;42742:131;42868:4;42742:131;:::i;:::-;42734:139;;42461:419;;;:::o;42886:177::-;43026:29;43022:1;43014:6;43010:14;43003:53;42886:177;:::o;43069:366::-;43211:3;43232:67;43296:2;43291:3;43232:67;:::i;:::-;43225:74;;43308:93;43397:3;43308:93;:::i;:::-;43426:2;43421:3;43417:12;43410:19;;43069:366;;;:::o;43441:419::-;43607:4;43645:2;43634:9;43630:18;43622:26;;43694:9;43688:4;43684:20;43680:1;43669:9;43665:17;43658:47;43722:131;43848:4;43722:131;:::i;:::-;43714:139;;43441:419;;;:::o;43866:182::-;44006:34;44002:1;43994:6;43990:14;43983:58;43866:182;:::o;44054:366::-;44196:3;44217:67;44281:2;44276:3;44217:67;:::i;:::-;44210:74;;44293:93;44382:3;44293:93;:::i;:::-;44411:2;44406:3;44402:12;44395:19;;44054:366;;;:::o;44426:419::-;44592:4;44630:2;44619:9;44615:18;44607:26;;44679:9;44673:4;44669:20;44665:1;44654:9;44650:17;44643:47;44707:131;44833:4;44707:131;:::i;:::-;44699:139;;44426:419;;;:::o;44851:147::-;44952:11;44989:3;44974:18;;44851:147;;;;:::o;45004:114::-;;:::o;45124:398::-;45283:3;45304:83;45385:1;45380:3;45304:83;:::i;:::-;45297:90;;45396:93;45485:3;45396:93;:::i;:::-;45514:1;45509:3;45505:11;45498:18;;45124:398;;;:::o;45528:379::-;45712:3;45734:147;45877:3;45734:147;:::i;:::-;45727:154;;45898:3;45891:10;;45528:379;;;:::o;45913:180::-;45961:77;45958:1;45951:88;46058:4;46055:1;46048:15;46082:4;46079:1;46072:15;46099:180;46147:77;46144:1;46137:88;46244:4;46241:1;46234:15;46268:4;46265:1;46258:15;46285:143;46342:5;46373:6;46367:13;46358:22;;46389:33;46416:5;46389:33;:::i;:::-;46285:143;;;;:::o;46434:351::-;46504:6;46553:2;46541:9;46532:7;46528:23;46524:32;46521:119;;;46559:79;;:::i;:::-;46521:119;46679:1;46704:64;46760:7;46751:6;46740:9;46736:22;46704:64;:::i;:::-;46694:74;;46650:128;46434:351;;;;:::o;46791:85::-;46836:7;46865:5;46854:16;;46791:85;;;:::o;46882:158::-;46940:9;46973:61;46991:42;47000:32;47026:5;47000:32;:::i;:::-;46991:42;:::i;:::-;46973:61;:::i;:::-;46960:74;;46882:158;;;:::o;47046:147::-;47141:45;47180:5;47141:45;:::i;:::-;47136:3;47129:58;47046:147;;:::o;47199:114::-;47266:6;47300:5;47294:12;47284:22;;47199:114;;;:::o;47319:184::-;47418:11;47452:6;47447:3;47440:19;47492:4;47487:3;47483:14;47468:29;;47319:184;;;;:::o;47509:132::-;47576:4;47599:3;47591:11;;47629:4;47624:3;47620:14;47612:22;;47509:132;;;:::o;47647:108::-;47724:24;47742:5;47724:24;:::i;:::-;47719:3;47712:37;47647:108;;:::o;47761:179::-;47830:10;47851:46;47893:3;47885:6;47851:46;:::i;:::-;47929:4;47924:3;47920:14;47906:28;;47761:179;;;;:::o;47946:113::-;48016:4;48048;48043:3;48039:14;48031:22;;47946:113;;;:::o;48095:732::-;48214:3;48243:54;48291:5;48243:54;:::i;:::-;48313:86;48392:6;48387:3;48313:86;:::i;:::-;48306:93;;48423:56;48473:5;48423:56;:::i;:::-;48502:7;48533:1;48518:284;48543:6;48540:1;48537:13;48518:284;;;48619:6;48613:13;48646:63;48705:3;48690:13;48646:63;:::i;:::-;48639:70;;48732:60;48785:6;48732:60;:::i;:::-;48722:70;;48578:224;48565:1;48562;48558:9;48553:14;;48518:284;;;48522:14;48818:3;48811:10;;48219:608;;;48095:732;;;;:::o;48833:831::-;49096:4;49134:3;49123:9;49119:19;49111:27;;49148:71;49216:1;49205:9;49201:17;49192:6;49148:71;:::i;:::-;49229:80;49305:2;49294:9;49290:18;49281:6;49229:80;:::i;:::-;49356:9;49350:4;49346:20;49341:2;49330:9;49326:18;49319:48;49384:108;49487:4;49478:6;49384:108;:::i;:::-;49376:116;;49502:72;49570:2;49559:9;49555:18;49546:6;49502:72;:::i;:::-;49584:73;49652:3;49641:9;49637:19;49628:6;49584:73;:::i;:::-;48833:831;;;;;;;;:::o
Swarm Source
ipfs://3c3a06cdfdc304eb1dc58cb83f1ff21b811ed9b991abda119aed050e8be975df
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.