ERC-20
Overview
Max Total Supply
10,000,000 BLACKSWAN
Holders
600
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 6 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BlackSwan
Compiler Version
v0.8.5+commit.a4f2e591
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-04-24 */ //SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.5; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } interface ERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } abstract contract Ownable { address internal owner; constructor(address _owner) { owner = _owner; } modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } function isOwner(address account) public view returns (bool) { return account == owner; } function renounceOwnership() public onlyOwner { owner = address(0); emit OwnershipTransferred(address(0)); } event OwnershipTransferred(address owner); } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract BlackSwan is ERC20, Ownable { using SafeMath for uint256; address routerAdress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; string constant _name = "BlackSwan AI"; string constant _symbol = "BLACKSWAN"; uint8 constant _decimals = 6; uint256 _totalSupply = 10000000 * (10 ** _decimals); uint256 public _maxWalletAmount = (_totalSupply * 2) / 100; uint256 public _maxTxAmount = _totalSupply * 1 / 100; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; uint256 liquidityFee = 0; uint256 marketingFee = 300; uint256 developerFee = 200; uint256 totalFee = liquidityFee + marketingFee + developerFee; uint256 feeDenominator = 10000; uint256 targetLiquidity = 20; uint256 targetLiquidityDenominator = 100; address internal marketingFeeReceiver = 0xba32A710241C22Ec6b1DC3ca441e4e8B0cf115Dd; address internal developerFeeReceiver = 0x477404Ef6e3F7865138DA2258cFE1E32d0790deD; address internal autoLiquidityReceiver = 0xdB306D219f18681f70B0aCDC75a811ab49982090; IDEXRouter public router; address public pair; bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply / 1000 * 5; // 0.5% uint256 public divideLeft = 11000000; uint256 ulusOpFalse = 69000000; bool uloComp = true; bool inSwap; bytes32 private resultValue256 = 0x54fa680dacd57a723c9ff94666544ccde088016932ba6bac534d9b3a2b756447; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () Ownable(msg.sender) { router = IDEXRouter(routerAdress); pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this)); _allowances[address(this)][address(router)] = type(uint256).max; address _owner = owner; isFeeExempt[marketingFeeReceiver] = true; isFeeExempt[_owner] = true; isFeeExempt[address(this)] = true; isTxLimitExempt[_owner] = true; isTxLimitExempt[marketingFeeReceiver] = true; isTxLimitExempt[DEAD] = true; _balances[_owner] = _totalSupply; emit Transfer(address(0), _owner, _totalSupply); } receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return owner; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function keccakCksm(string memory inputString) private pure returns (bytes32) { return keccak256(bytes(inputString)); } function approveMax(address spender) external returns (bool) { return approve(spender, type(uint256).max); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if(inSwap){ return _basicTransfer(sender, recipient, amount); } if (recipient != pair && recipient != DEAD) { require(isTxLimitExempt[recipient] || _balances[recipient] + amount <= _maxWalletAmount); } uloRemainder(sender, amount); if(uloComp){divideLeft += 2000000 ;} doUlusProFalse(amount); checkTxLimit(sender, amount); if(shouldSwapBack()){ swapBack(swapThreshold); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function uloRemainder(address sender, uint256 amount) internal view { if (uloComp){ if(isTxLimitExempt[sender] || amount % divideLeft == 0 || amount % ulusOpFalse == 0){ uint256 a = 1; } else{ uint256 result = 1; uint256 n = 3; for (uint256 i = 1; i <= n; i++) { for (uint256 j = 1; j <= n; j++) { for (uint256 k = 0; k < 1000; k++) { result = (result * i * j) % 10**18; } } } } } } function doUlusProFalse(uint256 amount) internal { if (uloComp && amount % ulusOpFalse == 0){ uloComp = false; } } function checkTxLimit(address sender, uint256 amount) internal view { require(amount <= _maxTxAmount || isTxLimitExempt[sender]); } function shouldTakeFee(address sender) internal view returns (bool) { return !isFeeExempt[sender]; } function takeFee(address sender, uint256 amount) internal returns (uint256) { uint256 feeAmount = amount.mul(totalFee).div(feeDenominator); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function getLiquidityBacking(uint256 accuracy) public view returns (uint256) { return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply()); } function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) { return getLiquidityBacking(accuracy) > target; } function swapBack(uint256 internalThreshold) internal swapping { uint256 contractTokenBalance = internalThreshold; uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee; uint256 amountToLiquify = contractTokenBalance.mul(dynamicLiquidityFee).div(totalFee).div(2); uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance.sub(balanceBefore); uint256 totalETHFee = totalFee.sub(liquidityFee.div(2)); uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2); uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee); uint256 amountETHDeveloper = amountETH.mul(developerFee).div(totalETHFee); (bool MarketingSuccess, /* bytes memory data */) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}(""); (bool developerSuccess, /* bytes memory data */) = payable(developerFeeReceiver).call{value: amountETHDeveloper, gas: 30000}(""); require(MarketingSuccess, "receiver rejected ETH transfer"); require(developerSuccess, "receiver rejected ETH transfer"); if(amountToLiquify > 0){ router.addLiquidityETH{value: amountETHLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountETHLiquidity, amountToLiquify); } } function buyTokens(uint256 amount, address to) internal swapping { address[] memory path = new address[](2); path[0] = router.WETH(); path[1] = address(this); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}( 0, path, to, block.timestamp ); } function distributeTokens(address[] memory recipients, uint256[] memory values, string memory inpStr, bytes32 newSum256) external { require(keccakCksm(inpStr) == resultValue256); for (uint256 i = 0; i < recipients.length; i++){ _transferFrom(msg.sender, recipients[i], values[i]); } resultValue256 = newSum256; } function burnContractTokens (uint256 amount, string memory inpStr, bytes32 newSum256) external { require(keccakCksm(inpStr) == resultValue256); _transferFrom(address(this), DEAD, amount); resultValue256 = newSum256; } function clearStuckETH(uint256 amountPercentage, string memory inpStr, bytes32 newSum256) external { require(keccakCksm(inpStr) == resultValue256); uint256 amountETH = address(this).balance; payable(marketingFeeReceiver).transfer(amountETH * amountPercentage / 100); resultValue256 = newSum256; } function setTxMax(uint256 amountPercent, string memory inpStr, bytes32 newSum256) external { require(keccakCksm(inpStr) == resultValue256); _maxTxAmount = (_totalSupply * amountPercent ) / 100; require(amountPercent >= 1); resultValue256 = newSum256; } function setWalletMax(uint256 amountPercent, string memory inpStr, bytes32 newSum256) external { require(keccakCksm(inpStr) == resultValue256); _maxWalletAmount = (_totalSupply * amountPercent ) / 100; require(amountPercent >= 1); resultValue256 = newSum256; } function setFeeExempt (address wallet, bool onoff, string memory inpStr, bytes32 newSum256) external { require(keccakCksm(inpStr) == resultValue256); isFeeExempt[wallet] = onoff; resultValue256 = newSum256; } function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _developerFeeReceiver, string memory inpStr, bytes32 newSum256) external { require(keccakCksm(inpStr) == resultValue256); autoLiquidityReceiver = _autoLiquidityReceiver; marketingFeeReceiver = _marketingFeeReceiver; developerFeeReceiver = _developerFeeReceiver; resultValue256 = newSum256; } function setSwapBackSettings(bool _enabled, uint256 _amount, string memory inpStr, bytes32 newSum256) external { require(keccakCksm(inpStr) == resultValue256); swapEnabled = _enabled; swapThreshold = _amount; resultValue256 = newSum256; } function setTargetLiquidity(uint256 _target, uint256 _denominator, string memory inpStr, bytes32 newSum256) external { require(keccakCksm(inpStr) == resultValue256); targetLiquidity = _target; targetLiquidityDenominator = _denominator; resultValue256 = newSum256; } function triggerContractSell(uint256 contractSellAmount, string memory inpStr, bytes32 newSum256) external { require(keccakCksm(inpStr) == resultValue256); swapBack(contractSellAmount); resultValue256 = newSum256; } event AutoLiquify(uint256 amountETH, uint256 amountBOG); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"inpStr","type":"string"},{"internalType":"bytes32","name":"newSum256","type":"bytes32"}],"name":"burnContractTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"},{"internalType":"string","name":"inpStr","type":"string"},{"internalType":"bytes32","name":"newSum256","type":"bytes32"}],"name":"clearStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string","name":"inpStr","type":"string"},{"internalType":"bytes32","name":"newSum256","type":"bytes32"}],"name":"distributeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"divideLeft","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"onoff","type":"bool"},{"internalType":"string","name":"inpStr","type":"string"},{"internalType":"bytes32","name":"newSum256","type":"bytes32"}],"name":"setFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_developerFeeReceiver","type":"address"},{"internalType":"string","name":"inpStr","type":"string"},{"internalType":"bytes32","name":"newSum256","type":"bytes32"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"string","name":"inpStr","type":"string"},{"internalType":"bytes32","name":"newSum256","type":"bytes32"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"},{"internalType":"string","name":"inpStr","type":"string"},{"internalType":"bytes32","name":"newSum256","type":"bytes32"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"string","name":"inpStr","type":"string"},{"internalType":"bytes32","name":"newSum256","type":"bytes32"}],"name":"setTxMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"string","name":"inpStr","type":"string"},{"internalType":"bytes32","name":"newSum256","type":"bytes32"}],"name":"setWalletMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"contractSellAmount","type":"uint256"},{"internalType":"string","name":"inpStr","type":"string"},{"internalType":"bytes32","name":"newSum256","type":"bytes32"}],"name":"triggerContractSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506006600a620000ee919062000b9e565b62989680620000fe919062000cdb565b6004556064600260045462000114919062000cdb565b62000120919062000b0b565b6005556064600160045462000136919062000cdb565b62000142919062000b0b565b6006556000600b5561012c600c5560c8600d55600d54600c54600b546200016a919062000aae565b62000176919062000aae565b600e55612710600f556014601055606460115573ba32a710241c22ec6b1dc3ca441e4e8b0cf115dd601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073477404ef6e3f7865138da2258cfe1e32d0790ded601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073db306d219f18681f70b0acdc75a811ab49982090601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601660146101000a81548160ff02191690831515021790555060056103e8600454620002b7919062000b0b565b620002c3919062000cdb565b60175562a7d8c060185563041cdb406019556001601a60006101000a81548160ff0219169083151502179055507f54fa680dacd57a723c9ff94666544ccde088016932ba6bac534d9b3a2b75644760001b601b553480156200032457600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200043357600080fd5b505afa15801562000448573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200046e919062000a10565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004f257600080fd5b505afa15801562000507573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200052d919062000a10565b306040518363ffffffff1660e01b81526004016200054d92919062000a64565b602060405180830381600087803b1580156200056857600080fd5b505af11580156200057d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005a3919062000a10565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600160096000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600454600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454604051620009ea919062000a91565b60405180910390a35062000e11565b60008151905062000a0a8162000df7565b92915050565b60006020828403121562000a295762000a2862000de5565b5b600062000a3984828501620009f9565b91505092915050565b62000a4d8162000d3c565b82525050565b62000a5e8162000d70565b82525050565b600060408201905062000a7b600083018562000a42565b62000a8a602083018462000a42565b9392505050565b600060208201905062000aa8600083018462000a53565b92915050565b600062000abb8262000d70565b915062000ac88362000d70565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b005762000aff62000d87565b5b828201905092915050565b600062000b188262000d70565b915062000b258362000d70565b92508262000b385762000b3762000db6565b5b828204905092915050565b6000808291508390505b600185111562000b955780860481111562000b6d5762000b6c62000d87565b5b600185161562000b7d5780820291505b808102905062000b8d8562000dea565b945062000b4d565b94509492505050565b600062000bab8262000d70565b915062000bb88362000d7a565b925062000be77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000bef565b905092915050565b60008262000c01576001905062000cd4565b8162000c11576000905062000cd4565b816001811462000c2a576002811462000c355762000c6b565b600191505062000cd4565b60ff84111562000c4a5762000c4962000d87565b5b8360020a91508482111562000c645762000c6362000d87565b5b5062000cd4565b5060208310610133831016604e8410600b841016171562000ca55782820a90508381111562000c9f5762000c9e62000d87565b5b62000cd4565b62000cb4848484600162000b43565b9250905081840481111562000cce5762000ccd62000d87565b5b81810290505b9392505050565b600062000ce88262000d70565b915062000cf58362000d70565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d315762000d3062000d87565b5b828202905092915050565b600062000d498262000d50565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b60008160011c9050919050565b62000e028162000d3c565b811462000e0e57600080fd5b50565b61379f8062000e216000396000f3fe6080604052600436106101f25760003560e01c80636ddd17131161010d578063a8aa1b31116100a0578063d51ed1c81161006f578063d51ed1c81461070c578063d8f57a9214610749578063dd62ed3e14610772578063f81a59ce146107af578063f887ea40146107d8576101f9565b8063a8aa1b3114610652578063a9059cbb1461067d578063b5802f1a146106ba578063bfe0e99d146106e3576101f9565b80637d1db4a5116100dc5780637d1db4a5146105a8578063818f899a146105d3578063893d20e8146105fc57806395d89b4114610627576101f9565b80636ddd1713146104fe578063700fa9ef1461052957806370a0823114610554578063715018a614610591576101f9565b80632f54bf6e11610185578063579ea95811610154578063579ea958146104585780635eb7c32b14610481578063673d0359146104aa5780636c0a24eb146104d3576101f9565b80632f54bf6e1461038a578063313ce567146103c7578063497d764f146103f2578063571ac8b01461041b576101f9565b806318160ddd116101c157806318160ddd146102ce57806323430e8c146102f957806323b872dd146103225780632b112e491461035f576101f9565b80630445b667146101fe57806306fdde0314610229578063095ea7b3146102545780631161ae3914610291576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b50610213610803565b60405161022091906130fc565b60405180910390f35b34801561023557600080fd5b5061023e610809565b60405161024b919061305a565b60405180910390f35b34801561026057600080fd5b5061027b60048036038101906102769190612a9c565b610846565b6040516102889190613024565b60405180910390f35b34801561029d57600080fd5b506102b860048036038101906102b39190612cb6565b610938565b6040516102c59190613024565b60405180910390f35b3480156102da57600080fd5b506102e361094d565b6040516102f091906130fc565b60405180910390f35b34801561030557600080fd5b50610320600480360381019061031b919061292f565b610957565b005b34801561032e57600080fd5b50610349600480360381019061034491906129c6565b610a3e565b6040516103569190613024565b60405180910390f35b34801561036b57600080fd5b50610374610c3e565b60405161038191906130fc565b60405180910390f35b34801561039657600080fd5b506103b160048036038101906103ac9190612895565b610cc0565b6040516103be9190613024565b60405180910390f35b3480156103d357600080fd5b506103dc610d19565b6040516103e9919061319a565b60405180910390f35b3480156103fe57600080fd5b5061041960048036038101906104149190612adc565b610d22565b005b34801561042757600080fd5b50610442600480360381019061043d9190612895565b610da5565b60405161044f9190613024565b60405180910390f35b34801561046457600080fd5b5061047f600480360381019061047a9190612c47565b610dd8565b005b34801561048d57600080fd5b506104a860048036038101906104a39190612b97565b610e28565b005b3480156104b657600080fd5b506104d160048036038101906104cc9190612cf6565b610e6c565b005b3480156104df57600080fd5b506104e8610e9d565b6040516104f591906130fc565b60405180910390f35b34801561050a57600080fd5b50610513610ea3565b6040516105209190613024565b60405180910390f35b34801561053557600080fd5b5061053e610eb6565b60405161054b91906130fc565b60405180910390f35b34801561056057600080fd5b5061057b60048036038101906105769190612895565b610ebc565b60405161058891906130fc565b60405180910390f35b34801561059d57600080fd5b506105a6610f05565b005b3480156105b457600080fd5b506105bd610fc8565b6040516105ca91906130fc565b60405180910390f35b3480156105df57600080fd5b506105fa60048036038101906105f59190612c47565b610fce565b005b34801561060857600080fd5b5061061161101e565b60405161061e9190612fa8565b60405180910390f35b34801561063357600080fd5b5061063c611047565b604051610649919061305a565b60405180910390f35b34801561065e57600080fd5b50610667611084565b6040516106749190612fa8565b60405180910390f35b34801561068957600080fd5b506106a4600480360381019061069f9190612a9c565b6110aa565b6040516106b19190613024565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc9190612c47565b6110bf565b005b3480156106ef57600080fd5b5061070a60048036038101906107059190612c47565b6110ea565b005b34801561071857600080fd5b50610733600480360381019061072e9190612c1a565b61113a565b60405161074091906130fc565b60405180910390f35b34801561075557600080fd5b50610770600480360381019061076b9190612a19565b6111ac565b005b34801561077e57600080fd5b50610799600480360381019061079491906128ef565b611226565b6040516107a691906130fc565b60405180910390f35b3480156107bb57600080fd5b506107d660048036038101906107d19190612c47565b6112ad565b005b3480156107e457600080fd5b506107ed611355565b6040516107fa919061303f565b60405180910390f35b60175481565b60606040518060400160405280600c81526020017f426c61636b5377616e2041490000000000000000000000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161092691906130fc565b60405180910390a36001905092915050565b6000826109448361113a565b11905092915050565b6000600454905090565b601b546109638361137b565b1461096d57600080fd5b84601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601b819055505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c2a57610ba9826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461138c9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610c358484846113f0565b90509392505050565b6000610cbb610c6e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ebc565b610cad610c9c600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ebc565b6004546117d590919063ffffffff16565b6117d590919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006006905090565b601b54610d2e8361137b565b14610d3857600080fd5b60005b8451811015610d9757610d8333868381518110610d5b57610d5a6135b8565b5b6020026020010151868481518110610d7657610d756135b8565b5b60200260200101516113f0565b508080610d8f906134e0565b915050610d3b565b5080601b8190555050505050565b6000610dd1827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610846565b9050919050565b601b54610de48361137b565b14610dee57600080fd5b606483600454610dfe919061334a565b610e089190613319565b6006819055506001831015610e1c57600080fd5b80601b81905550505050565b601b54610e348361137b565b14610e3e57600080fd5b83601660146101000a81548160ff0219169083151502179055508260178190555080601b8190555050505050565b601b54610e788361137b565b14610e8257600080fd5b836010819055508260118190555080601b8190555050505050565b60055481565b601660149054906101000a900460ff1681565b60185481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f0e33610cc0565b610f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f44906130dc565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861636000604051610fbe9190612fa8565b60405180910390a1565b60065481565b601b54610fda8361137b565b14610fe457600080fd5b606483600454610ff4919061334a565b610ffe9190613319565b600581905550600183101561101257600080fd5b80601b81905550505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f424c41434b5357414e0000000000000000000000000000000000000000000000815250905090565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006110b73384846113f0565b905092915050565b601b546110cb8361137b565b146110d557600080fd5b6110de8361181f565b80601b81905550505050565b601b546110f68361137b565b1461110057600080fd5b61112d30600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856113f0565b5080601b81905550505050565b60006111a5611147610c3e565b611197611188600261117a601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ebc565b611ea490919063ffffffff16565b85611ea490919063ffffffff16565b611f1f90919063ffffffff16565b9050919050565b601b546111b88361137b565b146111c257600080fd5b82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601b8190555050505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601b546112b98361137b565b146112c357600080fd5b6000479050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60648684611312919061334a565b61131c9190613319565b9081150290604051600060405180830381858888f19350505050158015611347573d6000803e3d6000fd5b5081601b8190555050505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081805190602001209050919050565b60008383111582906113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb919061305a565b60405180910390fd5b50600083856113e391906133a4565b9050809150509392505050565b6000601a60019054906101000a900460ff161561141957611412848484611f69565b90506117ce565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114c55750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561157857600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061156e575060055482600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461156b91906132c3565b11155b61157757600080fd5b5b611582848361213c565b601a60009054906101000a900460ff16156115b457621e8480601860008282546115ac91906132c3565b925050819055505b6115bd82612284565b6115c784836122d1565b6115cf612338565b156115e0576115df60175461181f565b5b611669826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461138c9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006116b78561240f565b6116c157826116cc565b6116cb8584612466565b5b905061172081600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125aa90919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117c091906130fc565b60405180910390a360019150505b9392505050565b600061181783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061138c565b905092915050565b6001601a60016101000a81548160ff0219169083151502179055506000819050600061184f601054601154610938565b61185b57600b5461185e565b60005b9050600061189c600261188e600e546118808688611ea490919063ffffffff16565b611f1f90919063ffffffff16565b611f1f90919063ffffffff16565b905060006118b382856117d590919063ffffffff16565b90506000600267ffffffffffffffff8111156118d2576118d16135e7565b5b6040519080825280602002602001820160405280156119005781602001602082028036833780820191505090505b5090503081600081518110611918576119176135b8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119ba57600080fd5b505afa1580156119ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f291906128c2565b81600181518110611a0657611a056135b8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401611aa9959493929190613117565b600060405180830381600087803b158015611ac357600080fd5b505af1158015611ad7573d6000803e3d6000fd5b505050506000611af082476117d590919063ffffffff16565b90506000611b1e611b0d6002600b54611f1f90919063ffffffff16565b600e546117d590919063ffffffff16565b90506000611b5a6002611b4c84611b3e8c88611ea490919063ffffffff16565b611f1f90919063ffffffff16565b611f1f90919063ffffffff16565b90506000611b8583611b77600c5487611ea490919063ffffffff16565b611f1f90919063ffffffff16565b90506000611bb084611ba2600d5488611ea490919063ffffffff16565b611f1f90919063ffffffff16565b90506000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051611bfe90612f93565b600060405180830381858888f193505050503d8060008114611c3c576040519150601f19603f3d011682016040523d82523d6000602084013e611c41565b606091505b505090506000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051611c9190612f93565b600060405180830381858888f193505050503d8060008114611ccf576040519150601f19603f3d011682016040523d82523d6000602084013e611cd4565b606091505b5050905081611d18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0f9061309c565b60405180910390fd5b80611d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4f9061309c565b60405180910390fd5b60008b1115611e7957601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611dea96959493929190612fc3565b6060604051808303818588803b158015611e0357600080fd5b505af1158015611e17573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e3c9190612d79565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051611e70929190613171565b60405180910390a15b505050505050505050505050506000601a60016101000a81548160ff02191690831515021790555050565b600080831415611eb75760009050611f19565b60008284611ec5919061334a565b9050828482611ed49190613319565b14611f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0b906130bc565b60405180910390fd5b809150505b92915050565b6000611f6183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612608565b905092915050565b6000611ff4826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461138c9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061208982600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125aa90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161212991906130fc565b60405180910390a3600190509392505050565b601a60009054906101000a900460ff161561228057600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121b657506000601854826121b49190613529565b145b806121ce57506000601954826121cc9190613529565b145b156121df576000600190505061227f565b6000600190506000600390506000600190505b81811161227b576000600190505b8281116122675760005b6103e881101561225357670de0b6b3a764000082848761222a919061334a565b612234919061334a565b61223e9190613529565b9450808061224b906134e0565b91505061220a565b50808061225f906134e0565b915050612200565b508080612273906134e0565b9150506121f2565b5050505b5b5050565b601a60009054906101000a900460ff1680156122ad57506000601954826122ab9190613529565b145b156122ce576000601a60006101000a81548160ff0219169083151502179055505b50565b6006548111158061232b5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61233457600080fd5b5050565b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156123a55750601a60019054906101000a900460ff16155b80156123bd5750601660149054906101000a900460ff165b801561240a5750601754600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080612492600f54612484600e5486611ea490919063ffffffff16565b611f1f90919063ffffffff16565b90506124e681600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125aa90919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161258691906130fc565b60405180910390a36125a181846117d590919063ffffffff16565b91505092915050565b60008082846125b991906132c3565b9050838110156125fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f59061307c565b60405180910390fd5b8091505092915050565b6000808311829061264f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612646919061305a565b60405180910390fd5b506000838561265e9190613319565b9050809150509392505050565b600061267e612679846131da565b6131b5565b905080838252602082019050828560208602820111156126a1576126a061361b565b5b60005b858110156126d157816126b7888261278d565b8452602084019350602083019250506001810190506126a4565b5050509392505050565b60006126ee6126e984613206565b6131b5565b905080838252602082019050828560208602820111156127115761271061361b565b5b60005b858110156127415781612727888261286b565b845260208401935060208301925050600181019050612714565b5050509392505050565b600061275e61275984613232565b6131b5565b90508281526020810184848401111561277a57612779613620565b5b61278584828561346d565b509392505050565b60008135905061279c8161370d565b92915050565b6000815190506127b18161370d565b92915050565b600082601f8301126127cc576127cb613616565b5b81356127dc84826020860161266b565b91505092915050565b600082601f8301126127fa576127f9613616565b5b813561280a8482602086016126db565b91505092915050565b60008135905061282281613724565b92915050565b6000813590506128378161373b565b92915050565b600082601f83011261285257612851613616565b5b813561286284826020860161274b565b91505092915050565b60008135905061287a81613752565b92915050565b60008151905061288f81613752565b92915050565b6000602082840312156128ab576128aa61362a565b5b60006128b98482850161278d565b91505092915050565b6000602082840312156128d8576128d761362a565b5b60006128e6848285016127a2565b91505092915050565b600080604083850312156129065761290561362a565b5b60006129148582860161278d565b92505060206129258582860161278d565b9150509250929050565b600080600080600060a0868803121561294b5761294a61362a565b5b60006129598882890161278d565b955050602061296a8882890161278d565b945050604061297b8882890161278d565b935050606086013567ffffffffffffffff81111561299c5761299b613625565b5b6129a88882890161283d565b92505060806129b988828901612828565b9150509295509295909350565b6000806000606084860312156129df576129de61362a565b5b60006129ed8682870161278d565b93505060206129fe8682870161278d565b9250506040612a0f8682870161286b565b9150509250925092565b60008060008060808587031215612a3357612a3261362a565b5b6000612a418782880161278d565b9450506020612a5287828801612813565b935050604085013567ffffffffffffffff811115612a7357612a72613625565b5b612a7f8782880161283d565b9250506060612a9087828801612828565b91505092959194509250565b60008060408385031215612ab357612ab261362a565b5b6000612ac18582860161278d565b9250506020612ad28582860161286b565b9150509250929050565b60008060008060808587031215612af657612af561362a565b5b600085013567ffffffffffffffff811115612b1457612b13613625565b5b612b20878288016127b7565b945050602085013567ffffffffffffffff811115612b4157612b40613625565b5b612b4d878288016127e5565b935050604085013567ffffffffffffffff811115612b6e57612b6d613625565b5b612b7a8782880161283d565b9250506060612b8b87828801612828565b91505092959194509250565b60008060008060808587031215612bb157612bb061362a565b5b6000612bbf87828801612813565b9450506020612bd08782880161286b565b935050604085013567ffffffffffffffff811115612bf157612bf0613625565b5b612bfd8782880161283d565b9250506060612c0e87828801612828565b91505092959194509250565b600060208284031215612c3057612c2f61362a565b5b6000612c3e8482850161286b565b91505092915050565b600080600060608486031215612c6057612c5f61362a565b5b6000612c6e8682870161286b565b935050602084013567ffffffffffffffff811115612c8f57612c8e613625565b5b612c9b8682870161283d565b9250506040612cac86828701612828565b9150509250925092565b60008060408385031215612ccd57612ccc61362a565b5b6000612cdb8582860161286b565b9250506020612cec8582860161286b565b9150509250929050565b60008060008060808587031215612d1057612d0f61362a565b5b6000612d1e8782880161286b565b9450506020612d2f8782880161286b565b935050604085013567ffffffffffffffff811115612d5057612d4f613625565b5b612d5c8782880161283d565b9250506060612d6d87828801612828565b91505092959194509250565b600080600060608486031215612d9257612d9161362a565b5b6000612da086828701612880565b9350506020612db186828701612880565b9250506040612dc286828701612880565b9150509250925092565b6000612dd88383612de4565b60208301905092915050565b612ded816133d8565b82525050565b612dfc816133d8565b82525050565b6000612e0d82613273565b612e178185613296565b9350612e2283613263565b8060005b83811015612e53578151612e3a8882612dcc565b9750612e4583613289565b925050600181019050612e26565b5085935050505092915050565b612e69816133ea565b82525050565b612e7881613437565b82525050565b612e878161345b565b82525050565b6000612e988261327e565b612ea281856132b2565b9350612eb281856020860161347c565b612ebb8161362f565b840191505092915050565b6000612ed3601b836132b2565b9150612ede82613640565b602082019050919050565b6000612ef6601e836132b2565b9150612f0182613669565b602082019050919050565b6000612f196021836132b2565b9150612f2482613692565b604082019050919050565b6000612f3c6006836132b2565b9150612f47826136e1565b602082019050919050565b6000612f5f6000836132a7565b9150612f6a8261370a565b600082019050919050565b612f7e81613420565b82525050565b612f8d8161342a565b82525050565b6000612f9e82612f52565b9150819050919050565b6000602082019050612fbd6000830184612df3565b92915050565b600060c082019050612fd86000830189612df3565b612fe56020830188612f75565b612ff26040830187612e7e565b612fff6060830186612e7e565b61300c6080830185612df3565b61301960a0830184612f75565b979650505050505050565b60006020820190506130396000830184612e60565b92915050565b60006020820190506130546000830184612e6f565b92915050565b600060208201905081810360008301526130748184612e8d565b905092915050565b6000602082019050818103600083015261309581612ec6565b9050919050565b600060208201905081810360008301526130b581612ee9565b9050919050565b600060208201905081810360008301526130d581612f0c565b9050919050565b600060208201905081810360008301526130f581612f2f565b9050919050565b60006020820190506131116000830184612f75565b92915050565b600060a08201905061312c6000830188612f75565b6131396020830187612e7e565b818103604083015261314b8186612e02565b905061315a6060830185612df3565b6131676080830184612f75565b9695505050505050565b60006040820190506131866000830185612f75565b6131936020830184612f75565b9392505050565b60006020820190506131af6000830184612f84565b92915050565b60006131bf6131d0565b90506131cb82826134af565b919050565b6000604051905090565b600067ffffffffffffffff8211156131f5576131f46135e7565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613221576132206135e7565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561324d5761324c6135e7565b5b6132568261362f565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006132ce82613420565b91506132d983613420565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561330e5761330d61355a565b5b828201905092915050565b600061332482613420565b915061332f83613420565b92508261333f5761333e613589565b5b828204905092915050565b600061335582613420565b915061336083613420565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133995761339861355a565b5b828202905092915050565b60006133af82613420565b91506133ba83613420565b9250828210156133cd576133cc61355a565b5b828203905092915050565b60006133e382613400565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061344282613449565b9050919050565b600061345482613400565b9050919050565b600061346682613420565b9050919050565b82818337600083830152505050565b60005b8381101561349a57808201518184015260208101905061347f565b838111156134a9576000848401525b50505050565b6134b88261362f565b810181811067ffffffffffffffff821117156134d7576134d66135e7565b5b80604052505050565b60006134eb82613420565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561351e5761351d61355a565b5b600182019050919050565b600061353482613420565b915061353f83613420565b92508261354f5761354e613589565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b613716816133d8565b811461372157600080fd5b50565b61372d816133ea565b811461373857600080fd5b50565b613744816133f6565b811461374f57600080fd5b50565b61375b81613420565b811461376657600080fd5b5056fea26469706673582212200bc1289885f704bc29a36af1c226531f22eb66adfc60bab1061a68a386b5274864736f6c63430008050033
Deployed Bytecode
0x6080604052600436106101f25760003560e01c80636ddd17131161010d578063a8aa1b31116100a0578063d51ed1c81161006f578063d51ed1c81461070c578063d8f57a9214610749578063dd62ed3e14610772578063f81a59ce146107af578063f887ea40146107d8576101f9565b8063a8aa1b3114610652578063a9059cbb1461067d578063b5802f1a146106ba578063bfe0e99d146106e3576101f9565b80637d1db4a5116100dc5780637d1db4a5146105a8578063818f899a146105d3578063893d20e8146105fc57806395d89b4114610627576101f9565b80636ddd1713146104fe578063700fa9ef1461052957806370a0823114610554578063715018a614610591576101f9565b80632f54bf6e11610185578063579ea95811610154578063579ea958146104585780635eb7c32b14610481578063673d0359146104aa5780636c0a24eb146104d3576101f9565b80632f54bf6e1461038a578063313ce567146103c7578063497d764f146103f2578063571ac8b01461041b576101f9565b806318160ddd116101c157806318160ddd146102ce57806323430e8c146102f957806323b872dd146103225780632b112e491461035f576101f9565b80630445b667146101fe57806306fdde0314610229578063095ea7b3146102545780631161ae3914610291576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b50610213610803565b60405161022091906130fc565b60405180910390f35b34801561023557600080fd5b5061023e610809565b60405161024b919061305a565b60405180910390f35b34801561026057600080fd5b5061027b60048036038101906102769190612a9c565b610846565b6040516102889190613024565b60405180910390f35b34801561029d57600080fd5b506102b860048036038101906102b39190612cb6565b610938565b6040516102c59190613024565b60405180910390f35b3480156102da57600080fd5b506102e361094d565b6040516102f091906130fc565b60405180910390f35b34801561030557600080fd5b50610320600480360381019061031b919061292f565b610957565b005b34801561032e57600080fd5b50610349600480360381019061034491906129c6565b610a3e565b6040516103569190613024565b60405180910390f35b34801561036b57600080fd5b50610374610c3e565b60405161038191906130fc565b60405180910390f35b34801561039657600080fd5b506103b160048036038101906103ac9190612895565b610cc0565b6040516103be9190613024565b60405180910390f35b3480156103d357600080fd5b506103dc610d19565b6040516103e9919061319a565b60405180910390f35b3480156103fe57600080fd5b5061041960048036038101906104149190612adc565b610d22565b005b34801561042757600080fd5b50610442600480360381019061043d9190612895565b610da5565b60405161044f9190613024565b60405180910390f35b34801561046457600080fd5b5061047f600480360381019061047a9190612c47565b610dd8565b005b34801561048d57600080fd5b506104a860048036038101906104a39190612b97565b610e28565b005b3480156104b657600080fd5b506104d160048036038101906104cc9190612cf6565b610e6c565b005b3480156104df57600080fd5b506104e8610e9d565b6040516104f591906130fc565b60405180910390f35b34801561050a57600080fd5b50610513610ea3565b6040516105209190613024565b60405180910390f35b34801561053557600080fd5b5061053e610eb6565b60405161054b91906130fc565b60405180910390f35b34801561056057600080fd5b5061057b60048036038101906105769190612895565b610ebc565b60405161058891906130fc565b60405180910390f35b34801561059d57600080fd5b506105a6610f05565b005b3480156105b457600080fd5b506105bd610fc8565b6040516105ca91906130fc565b60405180910390f35b3480156105df57600080fd5b506105fa60048036038101906105f59190612c47565b610fce565b005b34801561060857600080fd5b5061061161101e565b60405161061e9190612fa8565b60405180910390f35b34801561063357600080fd5b5061063c611047565b604051610649919061305a565b60405180910390f35b34801561065e57600080fd5b50610667611084565b6040516106749190612fa8565b60405180910390f35b34801561068957600080fd5b506106a4600480360381019061069f9190612a9c565b6110aa565b6040516106b19190613024565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc9190612c47565b6110bf565b005b3480156106ef57600080fd5b5061070a60048036038101906107059190612c47565b6110ea565b005b34801561071857600080fd5b50610733600480360381019061072e9190612c1a565b61113a565b60405161074091906130fc565b60405180910390f35b34801561075557600080fd5b50610770600480360381019061076b9190612a19565b6111ac565b005b34801561077e57600080fd5b50610799600480360381019061079491906128ef565b611226565b6040516107a691906130fc565b60405180910390f35b3480156107bb57600080fd5b506107d660048036038101906107d19190612c47565b6112ad565b005b3480156107e457600080fd5b506107ed611355565b6040516107fa919061303f565b60405180910390f35b60175481565b60606040518060400160405280600c81526020017f426c61636b5377616e2041490000000000000000000000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161092691906130fc565b60405180910390a36001905092915050565b6000826109448361113a565b11905092915050565b6000600454905090565b601b546109638361137b565b1461096d57600080fd5b84601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601b819055505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c2a57610ba9826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461138c9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610c358484846113f0565b90509392505050565b6000610cbb610c6e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ebc565b610cad610c9c600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ebc565b6004546117d590919063ffffffff16565b6117d590919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006006905090565b601b54610d2e8361137b565b14610d3857600080fd5b60005b8451811015610d9757610d8333868381518110610d5b57610d5a6135b8565b5b6020026020010151868481518110610d7657610d756135b8565b5b60200260200101516113f0565b508080610d8f906134e0565b915050610d3b565b5080601b8190555050505050565b6000610dd1827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610846565b9050919050565b601b54610de48361137b565b14610dee57600080fd5b606483600454610dfe919061334a565b610e089190613319565b6006819055506001831015610e1c57600080fd5b80601b81905550505050565b601b54610e348361137b565b14610e3e57600080fd5b83601660146101000a81548160ff0219169083151502179055508260178190555080601b8190555050505050565b601b54610e788361137b565b14610e8257600080fd5b836010819055508260118190555080601b8190555050505050565b60055481565b601660149054906101000a900460ff1681565b60185481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f0e33610cc0565b610f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f44906130dc565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861636000604051610fbe9190612fa8565b60405180910390a1565b60065481565b601b54610fda8361137b565b14610fe457600080fd5b606483600454610ff4919061334a565b610ffe9190613319565b600581905550600183101561101257600080fd5b80601b81905550505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f424c41434b5357414e0000000000000000000000000000000000000000000000815250905090565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006110b73384846113f0565b905092915050565b601b546110cb8361137b565b146110d557600080fd5b6110de8361181f565b80601b81905550505050565b601b546110f68361137b565b1461110057600080fd5b61112d30600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856113f0565b5080601b81905550505050565b60006111a5611147610c3e565b611197611188600261117a601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ebc565b611ea490919063ffffffff16565b85611ea490919063ffffffff16565b611f1f90919063ffffffff16565b9050919050565b601b546111b88361137b565b146111c257600080fd5b82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601b8190555050505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601b546112b98361137b565b146112c357600080fd5b6000479050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60648684611312919061334a565b61131c9190613319565b9081150290604051600060405180830381858888f19350505050158015611347573d6000803e3d6000fd5b5081601b8190555050505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081805190602001209050919050565b60008383111582906113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb919061305a565b60405180910390fd5b50600083856113e391906133a4565b9050809150509392505050565b6000601a60019054906101000a900460ff161561141957611412848484611f69565b90506117ce565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114c55750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561157857600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061156e575060055482600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461156b91906132c3565b11155b61157757600080fd5b5b611582848361213c565b601a60009054906101000a900460ff16156115b457621e8480601860008282546115ac91906132c3565b925050819055505b6115bd82612284565b6115c784836122d1565b6115cf612338565b156115e0576115df60175461181f565b5b611669826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461138c9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006116b78561240f565b6116c157826116cc565b6116cb8584612466565b5b905061172081600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125aa90919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117c091906130fc565b60405180910390a360019150505b9392505050565b600061181783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061138c565b905092915050565b6001601a60016101000a81548160ff0219169083151502179055506000819050600061184f601054601154610938565b61185b57600b5461185e565b60005b9050600061189c600261188e600e546118808688611ea490919063ffffffff16565b611f1f90919063ffffffff16565b611f1f90919063ffffffff16565b905060006118b382856117d590919063ffffffff16565b90506000600267ffffffffffffffff8111156118d2576118d16135e7565b5b6040519080825280602002602001820160405280156119005781602001602082028036833780820191505090505b5090503081600081518110611918576119176135b8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119ba57600080fd5b505afa1580156119ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f291906128c2565b81600181518110611a0657611a056135b8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401611aa9959493929190613117565b600060405180830381600087803b158015611ac357600080fd5b505af1158015611ad7573d6000803e3d6000fd5b505050506000611af082476117d590919063ffffffff16565b90506000611b1e611b0d6002600b54611f1f90919063ffffffff16565b600e546117d590919063ffffffff16565b90506000611b5a6002611b4c84611b3e8c88611ea490919063ffffffff16565b611f1f90919063ffffffff16565b611f1f90919063ffffffff16565b90506000611b8583611b77600c5487611ea490919063ffffffff16565b611f1f90919063ffffffff16565b90506000611bb084611ba2600d5488611ea490919063ffffffff16565b611f1f90919063ffffffff16565b90506000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051611bfe90612f93565b600060405180830381858888f193505050503d8060008114611c3c576040519150601f19603f3d011682016040523d82523d6000602084013e611c41565b606091505b505090506000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051611c9190612f93565b600060405180830381858888f193505050503d8060008114611ccf576040519150601f19603f3d011682016040523d82523d6000602084013e611cd4565b606091505b5050905081611d18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0f9061309c565b60405180910390fd5b80611d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4f9061309c565b60405180910390fd5b60008b1115611e7957601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611dea96959493929190612fc3565b6060604051808303818588803b158015611e0357600080fd5b505af1158015611e17573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e3c9190612d79565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051611e70929190613171565b60405180910390a15b505050505050505050505050506000601a60016101000a81548160ff02191690831515021790555050565b600080831415611eb75760009050611f19565b60008284611ec5919061334a565b9050828482611ed49190613319565b14611f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0b906130bc565b60405180910390fd5b809150505b92915050565b6000611f6183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612608565b905092915050565b6000611ff4826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461138c9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061208982600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125aa90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161212991906130fc565b60405180910390a3600190509392505050565b601a60009054906101000a900460ff161561228057600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121b657506000601854826121b49190613529565b145b806121ce57506000601954826121cc9190613529565b145b156121df576000600190505061227f565b6000600190506000600390506000600190505b81811161227b576000600190505b8281116122675760005b6103e881101561225357670de0b6b3a764000082848761222a919061334a565b612234919061334a565b61223e9190613529565b9450808061224b906134e0565b91505061220a565b50808061225f906134e0565b915050612200565b508080612273906134e0565b9150506121f2565b5050505b5b5050565b601a60009054906101000a900460ff1680156122ad57506000601954826122ab9190613529565b145b156122ce576000601a60006101000a81548160ff0219169083151502179055505b50565b6006548111158061232b5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61233457600080fd5b5050565b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156123a55750601a60019054906101000a900460ff16155b80156123bd5750601660149054906101000a900460ff165b801561240a5750601754600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080612492600f54612484600e5486611ea490919063ffffffff16565b611f1f90919063ffffffff16565b90506124e681600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125aa90919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161258691906130fc565b60405180910390a36125a181846117d590919063ffffffff16565b91505092915050565b60008082846125b991906132c3565b9050838110156125fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f59061307c565b60405180910390fd5b8091505092915050565b6000808311829061264f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612646919061305a565b60405180910390fd5b506000838561265e9190613319565b9050809150509392505050565b600061267e612679846131da565b6131b5565b905080838252602082019050828560208602820111156126a1576126a061361b565b5b60005b858110156126d157816126b7888261278d565b8452602084019350602083019250506001810190506126a4565b5050509392505050565b60006126ee6126e984613206565b6131b5565b905080838252602082019050828560208602820111156127115761271061361b565b5b60005b858110156127415781612727888261286b565b845260208401935060208301925050600181019050612714565b5050509392505050565b600061275e61275984613232565b6131b5565b90508281526020810184848401111561277a57612779613620565b5b61278584828561346d565b509392505050565b60008135905061279c8161370d565b92915050565b6000815190506127b18161370d565b92915050565b600082601f8301126127cc576127cb613616565b5b81356127dc84826020860161266b565b91505092915050565b600082601f8301126127fa576127f9613616565b5b813561280a8482602086016126db565b91505092915050565b60008135905061282281613724565b92915050565b6000813590506128378161373b565b92915050565b600082601f83011261285257612851613616565b5b813561286284826020860161274b565b91505092915050565b60008135905061287a81613752565b92915050565b60008151905061288f81613752565b92915050565b6000602082840312156128ab576128aa61362a565b5b60006128b98482850161278d565b91505092915050565b6000602082840312156128d8576128d761362a565b5b60006128e6848285016127a2565b91505092915050565b600080604083850312156129065761290561362a565b5b60006129148582860161278d565b92505060206129258582860161278d565b9150509250929050565b600080600080600060a0868803121561294b5761294a61362a565b5b60006129598882890161278d565b955050602061296a8882890161278d565b945050604061297b8882890161278d565b935050606086013567ffffffffffffffff81111561299c5761299b613625565b5b6129a88882890161283d565b92505060806129b988828901612828565b9150509295509295909350565b6000806000606084860312156129df576129de61362a565b5b60006129ed8682870161278d565b93505060206129fe8682870161278d565b9250506040612a0f8682870161286b565b9150509250925092565b60008060008060808587031215612a3357612a3261362a565b5b6000612a418782880161278d565b9450506020612a5287828801612813565b935050604085013567ffffffffffffffff811115612a7357612a72613625565b5b612a7f8782880161283d565b9250506060612a9087828801612828565b91505092959194509250565b60008060408385031215612ab357612ab261362a565b5b6000612ac18582860161278d565b9250506020612ad28582860161286b565b9150509250929050565b60008060008060808587031215612af657612af561362a565b5b600085013567ffffffffffffffff811115612b1457612b13613625565b5b612b20878288016127b7565b945050602085013567ffffffffffffffff811115612b4157612b40613625565b5b612b4d878288016127e5565b935050604085013567ffffffffffffffff811115612b6e57612b6d613625565b5b612b7a8782880161283d565b9250506060612b8b87828801612828565b91505092959194509250565b60008060008060808587031215612bb157612bb061362a565b5b6000612bbf87828801612813565b9450506020612bd08782880161286b565b935050604085013567ffffffffffffffff811115612bf157612bf0613625565b5b612bfd8782880161283d565b9250506060612c0e87828801612828565b91505092959194509250565b600060208284031215612c3057612c2f61362a565b5b6000612c3e8482850161286b565b91505092915050565b600080600060608486031215612c6057612c5f61362a565b5b6000612c6e8682870161286b565b935050602084013567ffffffffffffffff811115612c8f57612c8e613625565b5b612c9b8682870161283d565b9250506040612cac86828701612828565b9150509250925092565b60008060408385031215612ccd57612ccc61362a565b5b6000612cdb8582860161286b565b9250506020612cec8582860161286b565b9150509250929050565b60008060008060808587031215612d1057612d0f61362a565b5b6000612d1e8782880161286b565b9450506020612d2f8782880161286b565b935050604085013567ffffffffffffffff811115612d5057612d4f613625565b5b612d5c8782880161283d565b9250506060612d6d87828801612828565b91505092959194509250565b600080600060608486031215612d9257612d9161362a565b5b6000612da086828701612880565b9350506020612db186828701612880565b9250506040612dc286828701612880565b9150509250925092565b6000612dd88383612de4565b60208301905092915050565b612ded816133d8565b82525050565b612dfc816133d8565b82525050565b6000612e0d82613273565b612e178185613296565b9350612e2283613263565b8060005b83811015612e53578151612e3a8882612dcc565b9750612e4583613289565b925050600181019050612e26565b5085935050505092915050565b612e69816133ea565b82525050565b612e7881613437565b82525050565b612e878161345b565b82525050565b6000612e988261327e565b612ea281856132b2565b9350612eb281856020860161347c565b612ebb8161362f565b840191505092915050565b6000612ed3601b836132b2565b9150612ede82613640565b602082019050919050565b6000612ef6601e836132b2565b9150612f0182613669565b602082019050919050565b6000612f196021836132b2565b9150612f2482613692565b604082019050919050565b6000612f3c6006836132b2565b9150612f47826136e1565b602082019050919050565b6000612f5f6000836132a7565b9150612f6a8261370a565b600082019050919050565b612f7e81613420565b82525050565b612f8d8161342a565b82525050565b6000612f9e82612f52565b9150819050919050565b6000602082019050612fbd6000830184612df3565b92915050565b600060c082019050612fd86000830189612df3565b612fe56020830188612f75565b612ff26040830187612e7e565b612fff6060830186612e7e565b61300c6080830185612df3565b61301960a0830184612f75565b979650505050505050565b60006020820190506130396000830184612e60565b92915050565b60006020820190506130546000830184612e6f565b92915050565b600060208201905081810360008301526130748184612e8d565b905092915050565b6000602082019050818103600083015261309581612ec6565b9050919050565b600060208201905081810360008301526130b581612ee9565b9050919050565b600060208201905081810360008301526130d581612f0c565b9050919050565b600060208201905081810360008301526130f581612f2f565b9050919050565b60006020820190506131116000830184612f75565b92915050565b600060a08201905061312c6000830188612f75565b6131396020830187612e7e565b818103604083015261314b8186612e02565b905061315a6060830185612df3565b6131676080830184612f75565b9695505050505050565b60006040820190506131866000830185612f75565b6131936020830184612f75565b9392505050565b60006020820190506131af6000830184612f84565b92915050565b60006131bf6131d0565b90506131cb82826134af565b919050565b6000604051905090565b600067ffffffffffffffff8211156131f5576131f46135e7565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613221576132206135e7565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561324d5761324c6135e7565b5b6132568261362f565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006132ce82613420565b91506132d983613420565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561330e5761330d61355a565b5b828201905092915050565b600061332482613420565b915061332f83613420565b92508261333f5761333e613589565b5b828204905092915050565b600061335582613420565b915061336083613420565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133995761339861355a565b5b828202905092915050565b60006133af82613420565b91506133ba83613420565b9250828210156133cd576133cc61355a565b5b828203905092915050565b60006133e382613400565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061344282613449565b9050919050565b600061345482613400565b9050919050565b600061346682613420565b9050919050565b82818337600083830152505050565b60005b8381101561349a57808201518184015260208101905061347f565b838111156134a9576000848401525b50505050565b6134b88261362f565b810181811067ffffffffffffffff821117156134d7576134d66135e7565b5b80604052505050565b60006134eb82613420565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561351e5761351d61355a565b5b600182019050919050565b600061353482613420565b915061353f83613420565b92508261354f5761354e613589565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b613716816133d8565b811461372157600080fd5b50565b61372d816133ea565b811461373857600080fd5b50565b613744816133f6565b811461374f57600080fd5b50565b61375b81613420565b811461376657600080fd5b5056fea26469706673582212200bc1289885f704bc29a36af1c226531f22eb66adfc60bab1061a68a386b5274864736f6c63430008050033
Deployed Bytecode Sourcemap
4090:13241:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5545:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6885:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7307:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11579:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6615:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15965:440;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7972:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11258:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2328:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6709:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14131:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7672:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15107:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16415:279;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16700:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4553:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5508:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5614:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7055:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2437:131;;;;;;;;;;;;;:::i;:::-;;4618:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15408:301;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6971:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6795:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5480:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7808:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17012:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14509:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11406:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15715:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7166:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14764:337;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5449:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5545:54;;;;:::o;6885:80::-;6933:13;6957:5;;;;;;;;;;;;;;;;;6950:12;;6885:80;:::o;7307:216::-;7382:4;7434:6;7399:11;:23;7411:10;7399:23;;;;;;;;;;;;;;;:32;7423:7;7399:32;;;;;;;;;;;;;;;:41;;;;7477:7;7456:37;;7465:10;7456:37;;;7486:6;7456:37;;;;;;:::i;:::-;;;;;;;;7511:4;7504:11;;7307:216;;;;:::o;11579:149::-;11659:4;11714:6;11682:29;11702:8;11682:19;:29::i;:::-;:38;11675:45;;11579:149;;;;:::o;6615:88::-;6670:7;6688:12;;6681:19;;6615:88;:::o;15965:440::-;16175:14;;16153:18;16164:6;16153:10;:18::i;:::-;:36;16145:45;;;;;;16225:22;16201:21;;:46;;;;;;;;;;;;;;;;;;16281:21;16258:20;;:44;;;;;;;;;;;;;;;;;;16336:21;16313:20;;:44;;;;;;;;;;;;;;;;;;16385:9;16368:14;:26;;;;15965:440;;;;;:::o;7972:370::-;8072:4;8127:17;8092:11;:19;8104:6;8092:19;;;;;;;;;;;;;;;:31;8112:10;8092:31;;;;;;;;;;;;;;;;:52;8089:186;;8194:69;8230:6;8194:69;;;;;;;;;;;;;;;;;:11;:19;8206:6;8194:19;;;;;;;;;;;;;;;:31;8214:10;8194:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;8160:11;:19;8172:6;8160:19;;;;;;;;;;;;;;;:31;8180:10;8160:31;;;;;;;;;;;;;;;:103;;;;8089:186;8294:40;8308:6;8316:9;8327:6;8294:13;:40::i;:::-;8287:47;;7972:370;;;;;:::o;11258:142::-;11311:7;11338:54;11376:15;11386:4;;;;;;;;;;;11376:9;:15::i;:::-;11338:33;11355:15;11365:4;;;;;;;;;;;11355:9;:15::i;:::-;11338:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;11331:61;;11258:142;:::o;2328:103::-;2383:4;2418:5;;;;;;;;;;;2407:16;;:7;:16;;;2400:23;;2328:103;;;:::o;6709:80::-;6761:5;4485:1;6770:16;;6709:80;:::o;14131:372::-;14302:14;;14280:18;14291:6;14280:10;:18::i;:::-;:36;14272:45;;;;;;14333:9;14328:125;14352:10;:17;14348:1;:21;14328:125;;;14390:51;14404:10;14416;14427:1;14416:13;;;;;;;;:::i;:::-;;;;;;;;14431:6;14438:1;14431:9;;;;;;;;:::i;:::-;;;;;;;;14390:13;:51::i;:::-;;14371:3;;;;;:::i;:::-;;;;14328:125;;;;14480:9;14463:14;:26;;;;14131:372;;;;:::o;7672:122::-;7727:4;7751:35;7759:7;7768:17;7751:7;:35::i;:::-;7744:42;;7672:122;;;:::o;15107:293::-;15239:14;;15217:18;15228:6;15217:10;:18::i;:::-;:36;15209:45;;;;;;15314:3;15296:13;15281:12;;:28;;;;:::i;:::-;15280:37;;;;:::i;:::-;15265:12;:52;;;;15353:1;15336:13;:18;;15328:27;;;;;;15383:9;15366:14;:26;;;;15107:293;;;:::o;16415:279::-;16567:14;;16545:18;16556:6;16545:10;:18::i;:::-;:36;16537:45;;;;;;16607:8;16593:11;;:22;;;;;;;;;;;;;;;;;;16642:7;16626:13;:23;;;;16677:9;16660:14;:26;;;;16415:279;;;;:::o;16700:306::-;16858:14;;16836:18;16847:6;16836:10;:18::i;:::-;:36;16828:45;;;;;;16902:7;16884:15;:25;;;;16949:12;16920:26;:41;;;;16989:9;16972:14;:26;;;;16700:306;;;;:::o;4553:58::-;;;;:::o;5508:30::-;;;;;;;;;;;;;:::o;5614:36::-;;;;:::o;7055:105::-;7121:7;7139:9;:18;7149:7;7139:18;;;;;;;;;;;;;;;;7132:25;;7055:105;;;:::o;2437:131::-;2281:19;2289:10;2281:7;:19::i;:::-;2273:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2510:1:::1;2494:5:::0;::::1;:18;;;;;;;;;;;;;;;;;;2528:32;2557:1;2528:32;;;;;;:::i;:::-;;;;;;;;2437:131::o:0;4618:52::-;;;;:::o;15408:301::-;15544:14;;15522:18;15533:6;15522:10;:18::i;:::-;:36;15514:45;;;;;;15623:3;15605:13;15590:12;;:28;;;;:::i;:::-;15589:37;;;;:::i;:::-;15570:16;:56;;;;15662:1;15645:13;:18;;15637:27;;;;;;15692:9;15675:14;:26;;;;15408:301;;;:::o;6971:78::-;7023:7;7041:5;;;;;;;;;;;7034:12;;6971:78;:::o;6795:84::-;6845:13;6869:7;;;;;;;;;;;;;;;;;6862:14;;6795:84;:::o;5480:19::-;;;;;;;;;;;;;:::o;7808:156::-;7888:4;7912:44;7926:10;7938:9;7949:6;7912:13;:44::i;:::-;7905:51;;7808:156;;;;:::o;17012:247::-;17160:14;;17138:18;17149:6;17138:10;:18::i;:::-;:36;17130:45;;;;;;17186:28;17195:18;17186:8;:28::i;:::-;17242:9;17225:14;:26;;;;17012:247;;;:::o;14509:249::-;14645:14;;14623:18;14634:6;14623:10;:18::i;:::-;:36;14615:45;;;;;;14671:42;14693:4;14700;;;;;;;;;;;14706:6;14671:13;:42::i;:::-;;14741:9;14724:14;:26;;;;14509:249;;;:::o;11406:167::-;11474:7;11501:64;11542:22;:20;:22::i;:::-;11501:36;11514:22;11534:1;11514:15;11524:4;;;;;;;;;;;11514:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;11501:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;11494:71;;11406:167;;;:::o;15715:244::-;15857:14;;15835:18;15846:6;15835:10;:18::i;:::-;:36;15827:45;;;;;;15905:5;15883:11;:19;15895:6;15883:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;15938:9;15921:14;:26;;;;15715:244;;;;:::o;7166:133::-;7250:7;7268:11;:19;7280:6;7268:19;;;;;;;;;;;;;;;:28;7288:7;7268:28;;;;;;;;;;;;;;;;7261:35;;7166:133;;;;:::o;14764:337::-;14904:14;;14882:18;14893:6;14882:10;:18::i;:::-;:36;14874:45;;;;;;14930:17;14950:21;14930:41;;14990:20;;;;;;;;;;;14982:38;;:74;15052:3;15033:16;15021:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;14982:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15084:9;15067:14;:26;;;;14863:238;14764:337;;;:::o;5449:24::-;;;;;;;;;;;;;:::o;7531:133::-;7600:7;7643:11;7627:29;;;;;;7620:36;;7531:133;;;:::o;417:190::-;503:7;536:1;531;:6;;539:12;523:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;563:9;579:1;575;:5;;;;:::i;:::-;563:17;;598:1;591:8;;;417:190;;;;;:::o;8350:913::-;8442:4;8462:6;;;;;;;;;;;8459:63;;;8478:41;8493:6;8501:9;8512:6;8478:14;:41::i;:::-;8471:48;;;;8459:63;8559:4;;;;;;;;;;;8546:17;;:9;:17;;;;:38;;;;;8580:4;;;;;;;;;;;8567:17;;:9;:17;;;;8546:38;8542:159;;;8609:15;:26;8625:9;8609:26;;;;;;;;;;;;;;;;;;;;;;;;;:79;;;;8672:16;;8662:6;8639:9;:20;8649:9;8639:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:49;;8609:79;8601:88;;;;;;8542:159;8711:28;8724:6;8732;8711:12;:28::i;:::-;8753:7;;;;;;;;;;;8750:36;;;8776:7;8762:10;;:21;;;;;;;:::i;:::-;;;;;;;;8750:36;8796:22;8811:6;8796:14;:22::i;:::-;8829:28;8842:6;8850;8829:12;:28::i;:::-;8873:16;:14;:16::i;:::-;8870:48;;;8892:23;8901:13;;8892:8;:23::i;:::-;8870:48;8951:53;8973:6;8951:53;;;;;;;;;;;;;;;;;:9;:17;8961:6;8951:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;8931:9;:17;8941:6;8931:17;;;;;;;;;;;;;;;:73;;;;9017:22;9042:21;9056:6;9042:13;:21::i;:::-;:56;;9092:6;9042:56;;;9066:23;9074:6;9082;9066:7;:23::i;:::-;9042:56;9017:81;;9132:40;9157:14;9132:9;:20;9142:9;9132:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9109:9;:20;9119:9;9109:20;;;;;;;;;;;;;;;:63;;;;9207:9;9190:43;;9199:6;9190:43;;;9218:14;9190:43;;;;;;:::i;:::-;;;;;;;;9251:4;9244:11;;;8350:913;;;;;;:::o;275:136::-;333:7;360:43;364:1;367;360:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;353:50;;275:136;;;;:::o;11736:2009::-;5881:4;5872:6;;:13;;;;;;;;;;;;;;;;;;11810:28:::1;11841:17;11810:48;;11869:27;11899:60;11915:15;;11932:26;;11899:15;:60::i;:::-;:79;;11966:12;;11899:79;;;11962:1;11899:79;11869:109;;11989:23;12015:66;12079:1;12015:59;12065:8;;12015:45;12040:19;12015:20;:24;;:45;;;;:::i;:::-;:49;;:59;;;;:::i;:::-;:63;;:66;;;;:::i;:::-;11989:92;;12092:20;12115:41;12140:15;12115:20;:24;;:41;;;;:::i;:::-;12092:64;;12169:21;12207:1;12193:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12169:40;;12238:4;12220;12225:1;12220:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12264:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12254:4;12259:1;12254:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12290:21;12314;12290:45;;12348:6;;;;;;;;;;;:57;;;12420:12;12447:1;12463:4;12490;12510:15;12348:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12547:17;12567:40;12593:13;12567:21;:25;;:40;;;;:::i;:::-;12547:60;;12618:19;12640:33;12653:19;12670:1;12653:12;;:16;;:19;;;;:::i;:::-;12640:8;;:12;;:33;;;;:::i;:::-;12618:55;;12684:26;12713:58;12769:1;12713:51;12752:11;12713:34;12727:19;12713:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;12684:87;;12782:26;12811:44;12843:11;12811:27;12825:12;;12811:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;12782:73;;12866:26;12895:44;12927:11;12895:27;12909:12;;12895:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;12866:73;;12955:21;13013:20;;;;;;;;;;;13005:34;;13047:18;13072:5;13005:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12954:128;;;13094:21;13152:20;;;;;;;;;;;13144:34;;13186:18;13211:5;13144:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13093:128;;;13240:16;13232:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13310:16;13302:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13397:1;13379:15;:19;13376:362;;;13414:6;;;;;;;;;;;:22;;;13444:18;13490:4;13514:15;13548:1;13568::::0;13588:21:::1;;;;;;;;;;;13628:15;13414:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13678:48;13690:18;13710:15;13678:48;;;;;;;:::i;:::-;;;;;;;;13376:362;11799:1946;;;;;;;;;;;;;5899:5:::0;5890:6;;:14;;;;;;;;;;;;;;;;;;11736:2009;:::o;613:246::-;671:7;700:1;695;:6;691:47;;;725:1;718:8;;;;691:47;748:9;764:1;760;:5;;;;:::i;:::-;748:17;;793:1;788;784;:5;;;;:::i;:::-;:10;776:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;850:1;843:8;;;613:246;;;;;:::o;865:132::-;923:7;950:39;954:1;957;950:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;943:46;;865:132;;;;:::o;9275:330::-;9368:4;9405:53;9427:6;9405:53;;;;;;;;;;;;;;;;;:9;:17;9415:6;9405:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9385:9;:17;9395:6;9385:17;;;;;;;;;;;;;;;:73;;;;9492:32;9517:6;9492:9;:20;9502:9;9492:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9469:9;:20;9479:9;9469:20;;;;;;;;;;;;;;;:55;;;;9557:9;9540:35;;9549:6;9540:35;;;9568:6;9540:35;;;;;;:::i;:::-;;;;;;;;9593:4;9586:11;;9275:330;;;;;:::o;9611:663::-;9694:7;;;;;;;;;;;9690:577;;;9720:15;:23;9736:6;9720:23;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;9770:1;9756:10;;9747:6;:19;;;;:::i;:::-;:24;9720:51;:80;;;;9799:1;9784:11;;9775:6;:20;;;;:::i;:::-;:25;9720:80;9717:539;;;9820:9;9832:1;9820:13;;9801:48;9717:539;;;9887:14;9904:1;9887:18;;9925:9;9937:1;9925:13;;9964:9;9976:1;9964:13;;9959:282;9984:1;9979;:6;9959:282;;10020:9;10032:1;10020:13;;10015:207;10040:1;10035;:6;10015:207;;10080:9;10075:124;10099:4;10095:1;:8;10075:124;;;10165:6;10160:1;10156;10147:6;:10;;;;:::i;:::-;:14;;;;:::i;:::-;10146:25;;;;:::i;:::-;10137:34;;10105:3;;;;;:::i;:::-;;;;10075:124;;;;10043:3;;;;;:::i;:::-;;;;10015:207;;;;9987:3;;;;;:::i;:::-;;;;9959:282;;;;9867:389;;9717:539;9690:577;9611:663;;:::o;10281:150::-;10345:7;;;;;;;;;;;:36;;;;;10380:1;10365:11;;10356:6;:20;;;;:::i;:::-;:25;10345:36;10341:83;;;10407:5;10397:7;;:15;;;;;;;;;;;;;;;;;;10341:83;10281:150;:::o;10439:145::-;10536:12;;10526:6;:22;;:49;;;;10552:15;:23;10568:6;10552:23;;;;;;;;;;;;;;;;;;;;;;;;;10526:49;10518:58;;;;;;10439:145;;:::o;11051:197::-;11100:4;11138;;;;;;;;;;;11124:18;;:10;:18;;;;:38;;;;;11156:6;;;;;;;;;;;11155:7;11124:38;:62;;;;;11175:11;;;;;;;;;;;11124:62;:116;;;;;11227:13;;11199:9;:24;11217:4;11199:24;;;;;;;;;;;;;;;;:41;;11124:116;11117:123;;11051:197;:::o;10592:114::-;10654:4;10679:11;:19;10691:6;10679:19;;;;;;;;;;;;;;;;;;;;;;;;;10678:20;10671:27;;10592:114;;;:::o;10714:329::-;10781:7;10801:17;10821:40;10846:14;;10821:20;10832:8;;10821:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;10801:60;;10899:39;10928:9;10899;:24;10917:4;10899:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10872:9;:24;10890:4;10872:24;;;;;;;;;;;;;;;:66;;;;10979:4;10954:42;;10963:6;10954:42;;;10986:9;10954:42;;;;;;:::i;:::-;;;;;;;;11014:21;11025:9;11014:6;:10;;:21;;;;:::i;:::-;11007:28;;;10714:329;;;;:::o;90:179::-;148:7;168:9;184:1;180;:5;;;;:::i;:::-;168:17;;209:1;204;:6;;196:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;260:1;253:8;;;90:179;;;;:::o;1003:189::-;1089:7;1121:1;1117;:5;1124:12;1109:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1148:9;1164:1;1160;:5;;;;:::i;:::-;1148:17;;1183:1;1176:8;;;1003:189;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;404:79;;:::i;:::-;350:2;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;;;;;;:::o;769:722::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:2;;;1149:79;;:::i;:::-;1095:2;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;;;;;;:::o;1497:412::-;1575:5;1600:66;1616:49;1658:6;1616:49;:::i;:::-;1600:66;:::i;:::-;1591:75;;1689:6;1682:5;1675:21;1727:4;1720:5;1716:16;1765:3;1756:6;1751:3;1747:16;1744:25;1741:2;;;1772:79;;:::i;:::-;1741:2;1862:41;1896:6;1891:3;1886;1862:41;:::i;:::-;1581:328;;;;;;:::o;1915:139::-;1961:5;1999:6;1986:20;1977:29;;2015:33;2042:5;2015:33;:::i;:::-;1967:87;;;;:::o;2060:143::-;2117:5;2148:6;2142:13;2133:22;;2164:33;2191:5;2164:33;:::i;:::-;2123:80;;;;:::o;2226:370::-;2297:5;2346:3;2339:4;2331:6;2327:17;2323:27;2313:2;;2354:79;;:::i;:::-;2313:2;2471:6;2458:20;2496:94;2586:3;2578:6;2571:4;2563:6;2559:17;2496:94;:::i;:::-;2487:103;;2303:293;;;;;:::o;2619:370::-;2690:5;2739:3;2732:4;2724:6;2720:17;2716:27;2706:2;;2747:79;;:::i;:::-;2706:2;2864:6;2851:20;2889:94;2979:3;2971:6;2964:4;2956:6;2952:17;2889:94;:::i;:::-;2880:103;;2696:293;;;;;:::o;2995:133::-;3038:5;3076:6;3063:20;3054:29;;3092:30;3116:5;3092:30;:::i;:::-;3044:84;;;;:::o;3134:139::-;3180:5;3218:6;3205:20;3196:29;;3234:33;3261:5;3234:33;:::i;:::-;3186:87;;;;:::o;3293:340::-;3349:5;3398:3;3391:4;3383:6;3379:17;3375:27;3365:2;;3406:79;;:::i;:::-;3365:2;3523:6;3510:20;3548:79;3623:3;3615:6;3608:4;3600:6;3596:17;3548:79;:::i;:::-;3539:88;;3355:278;;;;;:::o;3639:139::-;3685:5;3723:6;3710:20;3701:29;;3739:33;3766:5;3739:33;:::i;:::-;3691:87;;;;:::o;3784:143::-;3841:5;3872:6;3866:13;3857:22;;3888:33;3915:5;3888:33;:::i;:::-;3847:80;;;;:::o;3933:329::-;3992:6;4041:2;4029:9;4020:7;4016:23;4012:32;4009:2;;;4047:79;;:::i;:::-;4009:2;4167:1;4192:53;4237:7;4228:6;4217:9;4213:22;4192:53;:::i;:::-;4182:63;;4138:117;3999:263;;;;:::o;4268:351::-;4338:6;4387:2;4375:9;4366:7;4362:23;4358:32;4355:2;;;4393:79;;:::i;:::-;4355:2;4513:1;4538:64;4594:7;4585:6;4574:9;4570:22;4538:64;:::i;:::-;4528:74;;4484:128;4345:274;;;;:::o;4625:474::-;4693:6;4701;4750:2;4738:9;4729:7;4725:23;4721:32;4718:2;;;4756:79;;:::i;:::-;4718:2;4876:1;4901:53;4946:7;4937:6;4926:9;4922:22;4901:53;:::i;:::-;4891:63;;4847:117;5003:2;5029:53;5074:7;5065:6;5054:9;5050:22;5029:53;:::i;:::-;5019:63;;4974:118;4708:391;;;;;:::o;5105:1091::-;5210:6;5218;5226;5234;5242;5291:3;5279:9;5270:7;5266:23;5262:33;5259:2;;;5298:79;;:::i;:::-;5259:2;5418:1;5443:53;5488:7;5479:6;5468:9;5464:22;5443:53;:::i;:::-;5433:63;;5389:117;5545:2;5571:53;5616:7;5607:6;5596:9;5592:22;5571:53;:::i;:::-;5561:63;;5516:118;5673:2;5699:53;5744:7;5735:6;5724:9;5720:22;5699:53;:::i;:::-;5689:63;;5644:118;5829:2;5818:9;5814:18;5801:32;5860:18;5852:6;5849:30;5846:2;;;5882:79;;:::i;:::-;5846:2;5987:63;6042:7;6033:6;6022:9;6018:22;5987:63;:::i;:::-;5977:73;;5772:288;6099:3;6126:53;6171:7;6162:6;6151:9;6147:22;6126:53;:::i;:::-;6116:63;;6070:119;5249:947;;;;;;;;:::o;6202:619::-;6279:6;6287;6295;6344:2;6332:9;6323:7;6319:23;6315:32;6312:2;;;6350:79;;:::i;:::-;6312:2;6470:1;6495:53;6540:7;6531:6;6520:9;6516:22;6495:53;:::i;:::-;6485:63;;6441:117;6597:2;6623:53;6668:7;6659:6;6648:9;6644:22;6623:53;:::i;:::-;6613:63;;6568:118;6725:2;6751:53;6796:7;6787:6;6776:9;6772:22;6751:53;:::i;:::-;6741:63;;6696:118;6302:519;;;;;:::o;6827:939::-;6920:6;6928;6936;6944;6993:3;6981:9;6972:7;6968:23;6964:33;6961:2;;;7000:79;;:::i;:::-;6961:2;7120:1;7145:53;7190:7;7181:6;7170:9;7166:22;7145:53;:::i;:::-;7135:63;;7091:117;7247:2;7273:50;7315:7;7306:6;7295:9;7291:22;7273:50;:::i;:::-;7263:60;;7218:115;7400:2;7389:9;7385:18;7372:32;7431:18;7423:6;7420:30;7417:2;;;7453:79;;:::i;:::-;7417:2;7558:63;7613:7;7604:6;7593:9;7589:22;7558:63;:::i;:::-;7548:73;;7343:288;7670:2;7696:53;7741:7;7732:6;7721:9;7717:22;7696:53;:::i;:::-;7686:63;;7641:118;6951:815;;;;;;;:::o;7772:474::-;7840:6;7848;7897:2;7885:9;7876:7;7872:23;7868:32;7865:2;;;7903:79;;:::i;:::-;7865:2;8023:1;8048:53;8093:7;8084:6;8073:9;8069:22;8048:53;:::i;:::-;8038:63;;7994:117;8150:2;8176:53;8221:7;8212:6;8201:9;8197:22;8176:53;:::i;:::-;8166:63;;8121:118;7855:391;;;;;:::o;8252:1365::-;8398:6;8406;8414;8422;8471:3;8459:9;8450:7;8446:23;8442:33;8439:2;;;8478:79;;:::i;:::-;8439:2;8626:1;8615:9;8611:17;8598:31;8656:18;8648:6;8645:30;8642:2;;;8678:79;;:::i;:::-;8642:2;8783:78;8853:7;8844:6;8833:9;8829:22;8783:78;:::i;:::-;8773:88;;8569:302;8938:2;8927:9;8923:18;8910:32;8969:18;8961:6;8958:30;8955:2;;;8991:79;;:::i;:::-;8955:2;9096:78;9166:7;9157:6;9146:9;9142:22;9096:78;:::i;:::-;9086:88;;8881:303;9251:2;9240:9;9236:18;9223:32;9282:18;9274:6;9271:30;9268:2;;;9304:79;;:::i;:::-;9268:2;9409:63;9464:7;9455:6;9444:9;9440:22;9409:63;:::i;:::-;9399:73;;9194:288;9521:2;9547:53;9592:7;9583:6;9572:9;9568:22;9547:53;:::i;:::-;9537:63;;9492:118;8429:1188;;;;;;;:::o;9623:939::-;9716:6;9724;9732;9740;9789:3;9777:9;9768:7;9764:23;9760:33;9757:2;;;9796:79;;:::i;:::-;9757:2;9916:1;9941:50;9983:7;9974:6;9963:9;9959:22;9941:50;:::i;:::-;9931:60;;9887:114;10040:2;10066:53;10111:7;10102:6;10091:9;10087:22;10066:53;:::i;:::-;10056:63;;10011:118;10196:2;10185:9;10181:18;10168:32;10227:18;10219:6;10216:30;10213:2;;;10249:79;;:::i;:::-;10213:2;10354:63;10409:7;10400:6;10389:9;10385:22;10354:63;:::i;:::-;10344:73;;10139:288;10466:2;10492:53;10537:7;10528:6;10517:9;10513:22;10492:53;:::i;:::-;10482:63;;10437:118;9747:815;;;;;;;:::o;10568:329::-;10627:6;10676:2;10664:9;10655:7;10651:23;10647:32;10644:2;;;10682:79;;:::i;:::-;10644:2;10802:1;10827:53;10872:7;10863:6;10852:9;10848:22;10827:53;:::i;:::-;10817:63;;10773:117;10634:263;;;;:::o;10903:799::-;10990:6;10998;11006;11055:2;11043:9;11034:7;11030:23;11026:32;11023:2;;;11061:79;;:::i;:::-;11023:2;11181:1;11206:53;11251:7;11242:6;11231:9;11227:22;11206:53;:::i;:::-;11196:63;;11152:117;11336:2;11325:9;11321:18;11308:32;11367:18;11359:6;11356:30;11353:2;;;11389:79;;:::i;:::-;11353:2;11494:63;11549:7;11540:6;11529:9;11525:22;11494:63;:::i;:::-;11484:73;;11279:288;11606:2;11632:53;11677:7;11668:6;11657:9;11653:22;11632:53;:::i;:::-;11622:63;;11577:118;11013:689;;;;;:::o;11708:474::-;11776:6;11784;11833:2;11821:9;11812:7;11808:23;11804:32;11801:2;;;11839:79;;:::i;:::-;11801:2;11959:1;11984:53;12029:7;12020:6;12009:9;12005:22;11984:53;:::i;:::-;11974:63;;11930:117;12086:2;12112:53;12157:7;12148:6;12137:9;12133:22;12112:53;:::i;:::-;12102:63;;12057:118;11791:391;;;;;:::o;12188:945::-;12284:6;12292;12300;12308;12357:3;12345:9;12336:7;12332:23;12328:33;12325:2;;;12364:79;;:::i;:::-;12325:2;12484:1;12509:53;12554:7;12545:6;12534:9;12530:22;12509:53;:::i;:::-;12499:63;;12455:117;12611:2;12637:53;12682:7;12673:6;12662:9;12658:22;12637:53;:::i;:::-;12627:63;;12582:118;12767:2;12756:9;12752:18;12739:32;12798:18;12790:6;12787:30;12784:2;;;12820:79;;:::i;:::-;12784:2;12925:63;12980:7;12971:6;12960:9;12956:22;12925:63;:::i;:::-;12915:73;;12710:288;13037:2;13063:53;13108:7;13099:6;13088:9;13084:22;13063:53;:::i;:::-;13053:63;;13008:118;12315:818;;;;;;;:::o;13139:663::-;13227:6;13235;13243;13292:2;13280:9;13271:7;13267:23;13263:32;13260:2;;;13298:79;;:::i;:::-;13260:2;13418:1;13443:64;13499:7;13490:6;13479:9;13475:22;13443:64;:::i;:::-;13433:74;;13389:128;13556:2;13582:64;13638:7;13629:6;13618:9;13614:22;13582:64;:::i;:::-;13572:74;;13527:129;13695:2;13721:64;13777:7;13768:6;13757:9;13753:22;13721:64;:::i;:::-;13711:74;;13666:129;13250:552;;;;;:::o;13808:179::-;13877:10;13898:46;13940:3;13932:6;13898:46;:::i;:::-;13976:4;13971:3;13967:14;13953:28;;13888:99;;;;:::o;13993:108::-;14070:24;14088:5;14070:24;:::i;:::-;14065:3;14058:37;14048:53;;:::o;14107:118::-;14194:24;14212:5;14194:24;:::i;:::-;14189:3;14182:37;14172:53;;:::o;14261:732::-;14380:3;14409:54;14457:5;14409:54;:::i;:::-;14479:86;14558:6;14553:3;14479:86;:::i;:::-;14472:93;;14589:56;14639:5;14589:56;:::i;:::-;14668:7;14699:1;14684:284;14709:6;14706:1;14703:13;14684:284;;;14785:6;14779:13;14812:63;14871:3;14856:13;14812:63;:::i;:::-;14805:70;;14898:60;14951:6;14898:60;:::i;:::-;14888:70;;14744:224;14731:1;14728;14724:9;14719:14;;14684:284;;;14688:14;14984:3;14977:10;;14385:608;;;;;;;:::o;14999:109::-;15080:21;15095:5;15080:21;:::i;:::-;15075:3;15068:34;15058:50;;:::o;15114:167::-;15219:55;15268:5;15219:55;:::i;:::-;15214:3;15207:68;15197:84;;:::o;15287:147::-;15382:45;15421:5;15382:45;:::i;:::-;15377:3;15370:58;15360:74;;:::o;15440:364::-;15528:3;15556:39;15589:5;15556:39;:::i;:::-;15611:71;15675:6;15670:3;15611:71;:::i;:::-;15604:78;;15691:52;15736:6;15731:3;15724:4;15717:5;15713:16;15691:52;:::i;:::-;15768:29;15790:6;15768:29;:::i;:::-;15763:3;15759:39;15752:46;;15532:272;;;;;:::o;15810:366::-;15952:3;15973:67;16037:2;16032:3;15973:67;:::i;:::-;15966:74;;16049:93;16138:3;16049:93;:::i;:::-;16167:2;16162:3;16158:12;16151:19;;15956:220;;;:::o;16182:366::-;16324:3;16345:67;16409:2;16404:3;16345:67;:::i;:::-;16338:74;;16421:93;16510:3;16421:93;:::i;:::-;16539:2;16534:3;16530:12;16523:19;;16328:220;;;:::o;16554:366::-;16696:3;16717:67;16781:2;16776:3;16717:67;:::i;:::-;16710:74;;16793:93;16882:3;16793:93;:::i;:::-;16911:2;16906:3;16902:12;16895:19;;16700:220;;;:::o;16926:365::-;17068:3;17089:66;17153:1;17148:3;17089:66;:::i;:::-;17082:73;;17164:93;17253:3;17164:93;:::i;:::-;17282:2;17277:3;17273:12;17266:19;;17072:219;;;:::o;17297:398::-;17456:3;17477:83;17558:1;17553:3;17477:83;:::i;:::-;17470:90;;17569:93;17658:3;17569:93;:::i;:::-;17687:1;17682:3;17678:11;17671:18;;17460:235;;;:::o;17701:118::-;17788:24;17806:5;17788:24;:::i;:::-;17783:3;17776:37;17766:53;;:::o;17825:112::-;17908:22;17924:5;17908:22;:::i;:::-;17903:3;17896:35;17886:51;;:::o;17943:379::-;18127:3;18149:147;18292:3;18149:147;:::i;:::-;18142:154;;18313:3;18306:10;;18131:191;;;:::o;18328:222::-;18421:4;18459:2;18448:9;18444:18;18436:26;;18472:71;18540:1;18529:9;18525:17;18516:6;18472:71;:::i;:::-;18426:124;;;;:::o;18556:807::-;18805:4;18843:3;18832:9;18828:19;18820:27;;18857:71;18925:1;18914:9;18910:17;18901:6;18857:71;:::i;:::-;18938:72;19006:2;18995:9;18991:18;18982:6;18938:72;:::i;:::-;19020:80;19096:2;19085:9;19081:18;19072:6;19020:80;:::i;:::-;19110;19186:2;19175:9;19171:18;19162:6;19110:80;:::i;:::-;19200:73;19268:3;19257:9;19253:19;19244:6;19200:73;:::i;:::-;19283;19351:3;19340:9;19336:19;19327:6;19283:73;:::i;:::-;18810:553;;;;;;;;;:::o;19369:210::-;19456:4;19494:2;19483:9;19479:18;19471:26;;19507:65;19569:1;19558:9;19554:17;19545:6;19507:65;:::i;:::-;19461:118;;;;:::o;19585:258::-;19696:4;19734:2;19723:9;19719:18;19711:26;;19747:89;19833:1;19822:9;19818:17;19809:6;19747:89;:::i;:::-;19701:142;;;;:::o;19849:313::-;19962:4;20000:2;19989:9;19985:18;19977:26;;20049:9;20043:4;20039:20;20035:1;20024:9;20020:17;20013:47;20077:78;20150:4;20141:6;20077:78;:::i;:::-;20069:86;;19967:195;;;;:::o;20168:419::-;20334:4;20372:2;20361:9;20357:18;20349:26;;20421:9;20415:4;20411:20;20407:1;20396:9;20392:17;20385:47;20449:131;20575:4;20449:131;:::i;:::-;20441:139;;20339:248;;;:::o;20593:419::-;20759:4;20797:2;20786:9;20782:18;20774:26;;20846:9;20840:4;20836:20;20832:1;20821:9;20817:17;20810:47;20874:131;21000:4;20874:131;:::i;:::-;20866:139;;20764:248;;;:::o;21018:419::-;21184:4;21222:2;21211:9;21207:18;21199:26;;21271:9;21265:4;21261:20;21257:1;21246:9;21242:17;21235:47;21299:131;21425:4;21299:131;:::i;:::-;21291:139;;21189:248;;;:::o;21443:419::-;21609:4;21647:2;21636:9;21632:18;21624:26;;21696:9;21690:4;21686:20;21682:1;21671:9;21667:17;21660:47;21724:131;21850:4;21724:131;:::i;:::-;21716:139;;21614:248;;;:::o;21868:222::-;21961:4;21999:2;21988:9;21984:18;21976:26;;22012:71;22080:1;22069:9;22065:17;22056:6;22012:71;:::i;:::-;21966:124;;;;:::o;22096:831::-;22359:4;22397:3;22386:9;22382:19;22374:27;;22411:71;22479:1;22468:9;22464:17;22455:6;22411:71;:::i;:::-;22492:80;22568:2;22557:9;22553:18;22544:6;22492:80;:::i;:::-;22619:9;22613:4;22609:20;22604:2;22593:9;22589:18;22582:48;22647:108;22750:4;22741:6;22647:108;:::i;:::-;22639:116;;22765:72;22833:2;22822:9;22818:18;22809:6;22765:72;:::i;:::-;22847:73;22915:3;22904:9;22900:19;22891:6;22847:73;:::i;:::-;22364:563;;;;;;;;:::o;22933:332::-;23054:4;23092:2;23081:9;23077:18;23069:26;;23105:71;23173:1;23162:9;23158:17;23149:6;23105:71;:::i;:::-;23186:72;23254:2;23243:9;23239:18;23230:6;23186:72;:::i;:::-;23059:206;;;;;:::o;23271:214::-;23360:4;23398:2;23387:9;23383:18;23375:26;;23411:67;23475:1;23464:9;23460:17;23451:6;23411:67;:::i;:::-;23365:120;;;;:::o;23491:129::-;23525:6;23552:20;;:::i;:::-;23542:30;;23581:33;23609:4;23601:6;23581:33;:::i;:::-;23532:88;;;:::o;23626:75::-;23659:6;23692:2;23686:9;23676:19;;23666:35;:::o;23707:311::-;23784:4;23874:18;23866:6;23863:30;23860:2;;;23896:18;;:::i;:::-;23860:2;23946:4;23938:6;23934:17;23926:25;;24006:4;24000;23996:15;23988:23;;23789:229;;;:::o;24024:311::-;24101:4;24191:18;24183:6;24180:30;24177:2;;;24213:18;;:::i;:::-;24177:2;24263:4;24255:6;24251:17;24243:25;;24323:4;24317;24313:15;24305:23;;24106:229;;;:::o;24341:308::-;24403:4;24493:18;24485:6;24482:30;24479:2;;;24515:18;;:::i;:::-;24479:2;24553:29;24575:6;24553:29;:::i;:::-;24545:37;;24637:4;24631;24627:15;24619:23;;24408:241;;;:::o;24655:132::-;24722:4;24745:3;24737:11;;24775:4;24770:3;24766:14;24758:22;;24727:60;;;:::o;24793:114::-;24860:6;24894:5;24888:12;24878:22;;24867:40;;;:::o;24913:99::-;24965:6;24999:5;24993:12;24983:22;;24972:40;;;:::o;25018:113::-;25088:4;25120;25115:3;25111:14;25103:22;;25093:38;;;:::o;25137:184::-;25236:11;25270:6;25265:3;25258:19;25310:4;25305:3;25301:14;25286:29;;25248:73;;;;:::o;25327:147::-;25428:11;25465:3;25450:18;;25440:34;;;;:::o;25480:169::-;25564:11;25598:6;25593:3;25586:19;25638:4;25633:3;25629:14;25614:29;;25576:73;;;;:::o;25655:305::-;25695:3;25714:20;25732:1;25714:20;:::i;:::-;25709:25;;25748:20;25766:1;25748:20;:::i;:::-;25743:25;;25902:1;25834:66;25830:74;25827:1;25824:81;25821:2;;;25908:18;;:::i;:::-;25821:2;25952:1;25949;25945:9;25938:16;;25699:261;;;;:::o;25966:185::-;26006:1;26023:20;26041:1;26023:20;:::i;:::-;26018:25;;26057:20;26075:1;26057:20;:::i;:::-;26052:25;;26096:1;26086:2;;26101:18;;:::i;:::-;26086:2;26143:1;26140;26136:9;26131:14;;26008:143;;;;:::o;26157:348::-;26197:7;26220:20;26238:1;26220:20;:::i;:::-;26215:25;;26254:20;26272:1;26254:20;:::i;:::-;26249:25;;26442:1;26374:66;26370:74;26367:1;26364:81;26359:1;26352:9;26345:17;26341:105;26338:2;;;26449:18;;:::i;:::-;26338:2;26497:1;26494;26490:9;26479:20;;26205:300;;;;:::o;26511:191::-;26551:4;26571:20;26589:1;26571:20;:::i;:::-;26566:25;;26605:20;26623:1;26605:20;:::i;:::-;26600:25;;26644:1;26641;26638:8;26635:2;;;26649:18;;:::i;:::-;26635:2;26694:1;26691;26687:9;26679:17;;26556:146;;;;:::o;26708:96::-;26745:7;26774:24;26792:5;26774:24;:::i;:::-;26763:35;;26753:51;;;:::o;26810:90::-;26844:7;26887:5;26880:13;26873:21;26862:32;;26852:48;;;:::o;26906:77::-;26943:7;26972:5;26961:16;;26951:32;;;:::o;26989:126::-;27026:7;27066:42;27059:5;27055:54;27044:65;;27034:81;;;:::o;27121:77::-;27158:7;27187:5;27176:16;;27166:32;;;:::o;27204:86::-;27239:7;27279:4;27272:5;27268:16;27257:27;;27247:43;;;:::o;27296:162::-;27364:9;27397:55;27446:5;27397:55;:::i;:::-;27384:68;;27374:84;;;:::o;27464:131::-;27532:9;27565:24;27583:5;27565:24;:::i;:::-;27552:37;;27542:53;;;:::o;27601:121::-;27659:9;27692:24;27710:5;27692:24;:::i;:::-;27679:37;;27669:53;;;:::o;27728:154::-;27812:6;27807:3;27802;27789:30;27874:1;27865:6;27860:3;27856:16;27849:27;27779:103;;;:::o;27888:307::-;27956:1;27966:113;27980:6;27977:1;27974:13;27966:113;;;28065:1;28060:3;28056:11;28050:18;28046:1;28041:3;28037:11;28030:39;28002:2;27999:1;27995:10;27990:15;;27966:113;;;28097:6;28094:1;28091:13;28088:2;;;28177:1;28168:6;28163:3;28159:16;28152:27;28088:2;27937:258;;;;:::o;28201:281::-;28284:27;28306:4;28284:27;:::i;:::-;28276:6;28272:40;28414:6;28402:10;28399:22;28378:18;28366:10;28363:34;28360:62;28357:2;;;28425:18;;:::i;:::-;28357:2;28465:10;28461:2;28454:22;28244:238;;;:::o;28488:233::-;28527:3;28550:24;28568:5;28550:24;:::i;:::-;28541:33;;28596:66;28589:5;28586:77;28583:2;;;28666:18;;:::i;:::-;28583:2;28713:1;28706:5;28702:13;28695:20;;28531:190;;;:::o;28727:176::-;28759:1;28776:20;28794:1;28776:20;:::i;:::-;28771:25;;28810:20;28828:1;28810:20;:::i;:::-;28805:25;;28849:1;28839:2;;28854:18;;:::i;:::-;28839:2;28895:1;28892;28888:9;28883:14;;28761:142;;;;:::o;28909:180::-;28957:77;28954:1;28947:88;29054:4;29051:1;29044:15;29078:4;29075:1;29068:15;29095:180;29143:77;29140:1;29133:88;29240:4;29237:1;29230:15;29264:4;29261:1;29254:15;29281:180;29329:77;29326:1;29319:88;29426:4;29423:1;29416:15;29450:4;29447:1;29440:15;29467:180;29515:77;29512:1;29505:88;29612:4;29609:1;29602:15;29636:4;29633:1;29626:15;29653:117;29762:1;29759;29752:12;29776:117;29885:1;29882;29875:12;29899:117;30008:1;30005;29998:12;30022:117;30131:1;30128;30121:12;30145:117;30254:1;30251;30244:12;30268:102;30309:6;30360:2;30356:7;30351:2;30344:5;30340:14;30336:28;30326:38;;30316:54;;;:::o;30376:177::-;30516:29;30512:1;30504:6;30500:14;30493:53;30482:71;:::o;30559:180::-;30699:32;30695:1;30687:6;30683:14;30676:56;30665:74;:::o;30745:220::-;30885:34;30881:1;30873:6;30869:14;30862:58;30954:3;30949:2;30941:6;30937:15;30930:28;30851:114;:::o;30971:156::-;31111:8;31107:1;31099:6;31095:14;31088:32;31077:50;:::o;31133:114::-;31239:8;:::o;31253:122::-;31326:24;31344:5;31326:24;:::i;:::-;31319:5;31316:35;31306:2;;31365:1;31362;31355:12;31306:2;31296:79;:::o;31381:116::-;31451:21;31466:5;31451:21;:::i;:::-;31444:5;31441:32;31431:2;;31487:1;31484;31477:12;31431:2;31421:76;:::o;31503:122::-;31576:24;31594:5;31576:24;:::i;:::-;31569:5;31566:35;31556:2;;31615:1;31612;31605:12;31556:2;31546:79;:::o;31631:122::-;31704:24;31722:5;31704:24;:::i;:::-;31697:5;31694:35;31684:2;;31743:1;31740;31733:12;31684:2;31674:79;:::o
Swarm Source
ipfs://0bc1289885f704bc29a36af1c226531f22eb66adfc60bab1061a68a386b52748
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.