More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 166 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 20393982 | 27 days ago | IN | 0 ETH | 0.00007768 | ||||
Approve | 16977028 | 507 days ago | IN | 0 ETH | 0.00297561 | ||||
Approve | 16883638 | 520 days ago | IN | 0 ETH | 0.00051008 | ||||
Approve | 16845378 | 525 days ago | IN | 0 ETH | 0.00073781 | ||||
Approve | 16842990 | 526 days ago | IN | 0 ETH | 0.00139873 | ||||
Approve | 16841454 | 526 days ago | IN | 0 ETH | 0.00141452 | ||||
Approve | 16836638 | 526 days ago | IN | 0 ETH | 0.00109543 | ||||
Approve | 16836457 | 526 days ago | IN | 0 ETH | 0.00111776 | ||||
Approve | 16835841 | 527 days ago | IN | 0 ETH | 0.00069514 | ||||
Approve | 16835387 | 527 days ago | IN | 0 ETH | 0.00106413 | ||||
Approve | 16835015 | 527 days ago | IN | 0 ETH | 0.00157818 | ||||
Approve | 16834547 | 527 days ago | IN | 0 ETH | 0.00183442 | ||||
Approve | 16834531 | 527 days ago | IN | 0 ETH | 0.00179481 | ||||
Approve | 16834531 | 527 days ago | IN | 0 ETH | 0.00179481 | ||||
Approve | 16834531 | 527 days ago | IN | 0 ETH | 0.00179481 | ||||
Approve | 16834531 | 527 days ago | IN | 0 ETH | 0.00179481 | ||||
Approve | 16834531 | 527 days ago | IN | 0 ETH | 0.00179481 | ||||
Approve | 16834531 | 527 days ago | IN | 0 ETH | 0.00179481 | ||||
Approve | 16834531 | 527 days ago | IN | 0 ETH | 0.00179481 | ||||
Approve | 16834531 | 527 days ago | IN | 0 ETH | 0.00179481 | ||||
Approve | 16834531 | 527 days ago | IN | 0 ETH | 0.00179481 | ||||
Approve | 16834531 | 527 days ago | IN | 0 ETH | 0.00179481 | ||||
Approve | 16834430 | 527 days ago | IN | 0 ETH | 0.0028566 | ||||
Approve | 16834164 | 527 days ago | IN | 0 ETH | 0.00167346 | ||||
Approve | 16834099 | 527 days ago | IN | 0 ETH | 0.00161901 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
16977037 | 507 days ago | 0.00094868 ETH | ||||
16977037 | 507 days ago | 0.00094868 ETH | ||||
16874238 | 521 days ago | 0.00137383 ETH | ||||
16874238 | 521 days ago | 0.00137383 ETH | ||||
16845379 | 525 days ago | 0.00062707 ETH | ||||
16845379 | 525 days ago | 0.00062707 ETH | ||||
16844256 | 525 days ago | 0.00279503 ETH | ||||
16844256 | 525 days ago | 0.00279503 ETH | ||||
16842995 | 526 days ago | 0.00196323 ETH | ||||
16842995 | 526 days ago | 0.00196323 ETH | ||||
16841459 | 526 days ago | 0.00134888 ETH | ||||
16841459 | 526 days ago | 0.00134888 ETH | ||||
16839460 | 526 days ago | 0.00207711 ETH | ||||
16839460 | 526 days ago | 0.00207711 ETH | ||||
16837172 | 526 days ago | 0.00068042 ETH | ||||
16837172 | 526 days ago | 0.00068042 ETH | ||||
16836992 | 526 days ago | 0.00127867 ETH | ||||
16836992 | 526 days ago | 0.00127867 ETH | ||||
16836657 | 526 days ago | 0.00225662 ETH | ||||
16836657 | 526 days ago | 0.00225662 ETH | ||||
16836407 | 526 days ago | 0.00049753 ETH | ||||
16836407 | 526 days ago | 0.00049753 ETH | ||||
16835438 | 527 days ago | 0.0006001 ETH | ||||
16835438 | 527 days ago | 0.0006001 ETH | ||||
16835388 | 527 days ago | 0.00092237 ETH |
Loading...
Loading
Contract Name:
SniffAI
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-15 */ /** ALPHA DONT FADE Telegram: https://t.me/sniffai WEB: https://sniffai.info/ Twitter: https://twitter.com/sniff_ai */ //SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.12; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } 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 IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract SniffAI is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "Sniff AI"; string private constant _symbol = "SNIFF"; uint8 private constant _decimals = 9; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; //Buy Fee uint256 private _feeOnBuy = 0; uint256 private _taxOnBuy = 30; //Sell Fee uint256 private _feeOnSell = 0; uint256 private _taxOnSell = 30; uint256 public totalFees; //Original Fee uint256 private _redisFee = _feeOnSell; uint256 private _taxFee = _taxOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping(address => uint256) private cooldown; address payable private _developmentWalletAddress = payable(0x7054134C3f36fC99d99377e19564048068aD619B); address payable private _marketingWalletAddress = payable(0x7054134C3f36fC99d99377e19564048068aD619B); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen = true; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = 10000000 * 10**9; uint256 public _maxWalletSize = 20000000 * 10**9; uint256 public _swapTokensAtAmount = 10000 * 10**9; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_developmentWalletAddress] = true; _isExcludedFromFee[_marketingWalletAddress] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeAllFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreAllFee() private { _redisFee = _previousredisFee; _taxFee = _previoustaxFee; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner()) { //Trade start check if (!tradingOpen) { require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled"); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } bool takeFee = true; //Transfer Tokens if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) { takeFee = false; } else { //Set Fee for Buys if(from == uniswapV2Pair && to != address(uniswapV2Router)) { _redisFee = _feeOnBuy; _taxFee = _taxOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _feeOnSell; _taxFee = _taxOnSell; } } _tokenTransfer(from, to, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { _marketingWalletAddress.transfer(amount); } function setTrading(bool _tradingOpen) public onlyOwner { tradingOpen = _tradingOpen; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _redisFee, _taxFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 redisFee, uint256 taxFee ) private pure returns ( uint256, uint256, uint256 ) { uint256 tFee = tAmount.mul(redisFee).div(100); uint256 tTeam = tAmount.mul(taxFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner { _feeOnBuy = redisFeeOnBuy; _feeOnSell = redisFeeOnSell; _taxOnBuy = taxFeeOnBuy; _taxOnSell = taxFeeOnSell; totalFees = _feeOnBuy + _feeOnSell + _taxOnBuy + _taxOnSell; require(totalFees <= 10, "Must keep fees at 10% or less"); } //Set minimum tokens required to swap. function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } //Set minimum tokens required to swap. function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } function noLimits() external onlyOwner{ _maxTxAmount = _tTotal; _maxWalletSize = _tTotal; } //Set max buy amount function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = maxTxAmount; } //Set max wallet amount function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = maxWalletSize; } }
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":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"noLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052670de0b6b3a76400006000196200001c919062000729565b6000196200002b919062000790565b6006556000600855601e6009556000600a55601e600b55600a54600d55600b54600e55600d54600f55600e54601055737054134c3f36fc99d99377e19564048068ad619b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737054134c3f36fc99d99377e19564048068ad619b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff021916908315150217905550662386f26fc1000060165566470de4df8200006017556509184e72a0006018553480156200018157600080fd5b50600062000194620006bf60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000249620006bf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200032d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000353919062000835565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e1919062000835565b6040518363ffffffff1660e01b81526004016200040092919062000878565b6020604051808303816000875af115801562000420573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000446919062000835565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006200049c620006c760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000649620006bf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006b09190620008b6565b60405180910390a350620008d3565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200073682620006f0565b91506200074383620006f0565b925082620007565762000755620006fa565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200079d82620006f0565b9150620007aa83620006f0565b9250828203905081811115620007c557620007c462000761565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007fd82620007d0565b9050919050565b6200080f81620007f0565b81146200081b57600080fd5b50565b6000815190506200082f8162000804565b92915050565b6000602082840312156200084e576200084d620007cb565b5b60006200085e848285016200081e565b91505092915050565b6200087281620007f0565b82525050565b60006040820190506200088f600083018562000867565b6200089e602083018462000867565b9392505050565b620008b081620006f0565b82525050565b6000602082019050620008cd6000830184620008a5565b92915050565b6134b880620008e36000396000f3fe60806040526004361061016a5760003560e01c8063715018a6116100d157806395d89b411161008a578063a9059cbb11610064578063a9059cbb14610501578063dd62ed3e1461053e578063ea1644d51461057b578063f2fde38b146105a457610171565b806395d89b411461048457806398a5c315146104af578063a2a957bb146104d857610171565b8063715018a61461039a57806374010ece146103b15780637d1db4a5146103da5780638da5cb5b146104055780638f70ccf7146104305780638f9a55c01461045957610171565b806323b872dd1161012357806323b872dd146102765780632fd689e3146102b3578063313ce567146102de57806349bd5a5e146103095780636d8aa8f81461033457806370a082311461035d57610171565b8063014667601461017657806306fdde031461018d578063095ea7b3146101b857806313114a9d146101f55780631694505e1461022057806318160ddd1461024b57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105cd565b005b34801561019957600080fd5b506101a2610682565b6040516101af91906125e7565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da91906126a2565b6106bf565b6040516101ec91906126fd565b60405180910390f35b34801561020157600080fd5b5061020a6106dd565b6040516102179190612727565b60405180910390f35b34801561022c57600080fd5b506102356106e3565b60405161024291906127a1565b60405180910390f35b34801561025757600080fd5b50610260610709565b60405161026d9190612727565b60405180910390f35b34801561028257600080fd5b5061029d600480360381019061029891906127bc565b610719565b6040516102aa91906126fd565b60405180910390f35b3480156102bf57600080fd5b506102c86107f2565b6040516102d59190612727565b60405180910390f35b3480156102ea57600080fd5b506102f36107f8565b604051610300919061282b565b60405180910390f35b34801561031557600080fd5b5061031e610801565b60405161032b9190612855565b60405180910390f35b34801561034057600080fd5b5061035b6004803603810190610356919061289c565b610827565b005b34801561036957600080fd5b50610384600480360381019061037f91906128c9565b6108d9565b6040516103919190612727565b60405180910390f35b3480156103a657600080fd5b506103af61092a565b005b3480156103bd57600080fd5b506103d860048036038101906103d391906128f6565b610a7d565b005b3480156103e657600080fd5b506103ef610b1c565b6040516103fc9190612727565b60405180910390f35b34801561041157600080fd5b5061041a610b22565b6040516104279190612855565b60405180910390f35b34801561043c57600080fd5b506104576004803603810190610452919061289c565b610b4b565b005b34801561046557600080fd5b5061046e610bfd565b60405161047b9190612727565b60405180910390f35b34801561049057600080fd5b50610499610c03565b6040516104a691906125e7565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d191906128f6565b610c40565b005b3480156104e457600080fd5b506104ff60048036038101906104fa9190612923565b610cdf565b005b34801561050d57600080fd5b50610528600480360381019061052391906126a2565b610e0c565b60405161053591906126fd565b60405180910390f35b34801561054a57600080fd5b506105656004803603810190610560919061298a565b610e2a565b6040516105729190612727565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d91906128f6565b610eb1565b005b3480156105b057600080fd5b506105cb60048036038101906105c691906128c9565b610f50565b005b6105d5611111565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610662576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065990612a16565b60405180910390fd5b670de0b6b3a7640000601681905550670de0b6b3a7640000601781905550565b60606040518060400160405280600881526020017f536e696666204149000000000000000000000000000000000000000000000000815250905090565b60006106d36106cc611111565b8484611119565b6001905092915050565b600c5481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006107268484846112e2565b6107e784610732611111565b6107e28560405180606001604052806028815260200161345b60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610798611111565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a829092919063ffffffff16565b611119565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61082f611111565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b390612a16565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6000610923600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ae6565b9050919050565b610932611111565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b690612a16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a85611111565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0990612a16565b60405180910390fd5b8060168190555050565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b53611111565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610be0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd790612a16565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600581526020017f534e494646000000000000000000000000000000000000000000000000000000815250905090565b610c48611111565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccc90612a16565b60405180910390fd5b8060188190555050565b610ce7611111565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6b90612a16565b60405180910390fd5b8360088190555082600a819055508160098190555080600b81905550600b54600954600a54600854610da69190612a65565b610db09190612a65565b610dba9190612a65565b600c81905550600a600c541115610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd90612ae5565b60405180910390fd5b50505050565b6000610e20610e19611111565b84846112e2565b6001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610eb9611111565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3d90612a16565b60405180910390fd5b8060178190555050565b610f58611111565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdc90612a16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b90612b77565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117f90612c09565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ee90612c9b565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112d59190612727565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134890612d2d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b790612dbf565b60405180910390fd5b60008111611403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fa90612e51565b60405180910390fd5b61140b610b22565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114795750611449610b22565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561178157601560149054906101000a900460ff166115085761149a610b22565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fe90612ee3565b60405180910390fd5b5b60165481111561154d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154490612f4f565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146115fa57601754816115af846108d9565b6115b99190612a65565b106115f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f090612fe1565b60405180910390fd5b5b6000611605306108d9565b90506000601854821015905060165482106116205760165491505b808015611638575060158054906101000a900460ff16155b80156116925750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156116aa5750601560169054906101000a900460ff165b80156117005750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156117565750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561177e5761176482611b54565b6000479050600081111561177c5761177b47611dcb565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118285750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118db5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118da5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156118e95760009050611a70565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119945750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156119ac57600854600d81905550600954600e819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a575750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a6f57600a54600d81905550600b54600e819055505b5b611a7c84848484611e37565b50505050565b6000838311158290611aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac191906125e7565b60405180910390fd5b5060008385611ad99190613001565b9050809150509392505050565b6000600654821115611b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b24906130a7565b60405180910390fd5b6000611b37611e64565b9050611b4c8184611e8f90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611b8b57611b8a6130c7565b5b604051908082528060200260200182016040528015611bb95781602001602082028036833780820191505090505b5090503081600081518110611bd157611bd06130f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9c919061313a565b81600181518110611cb057611caf6130f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d1730601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611119565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611d7b959493929190613260565b600060405180830381600087803b158015611d9557600080fd5b505af1158015611da9573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e33573d6000803e3d6000fd5b5050565b80611e4557611e44611ed9565b5b611e50848484611f16565b80611e5e57611e5d6120e1565b5b50505050565b6000806000611e716120f5565b91509150611e888183611e8f90919063ffffffff16565b9250505090565b6000611ed183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612154565b905092915050565b6000600d54148015611eed57506000600e54145b611f1457600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b600080600080600080611f28876121b7565b955095509550955095509550611f8686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461221f90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061201b85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461226990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612067816122c7565b6120718483612384565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516120ce9190612727565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b600080600060065490506000670de0b6b3a76400009050612129670de0b6b3a7640000600654611e8f90919063ffffffff16565b82101561214757600654670de0b6b3a7640000935093505050612150565b81819350935050505b9091565b6000808311829061219b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219291906125e7565b60405180910390fd5b50600083856121aa91906132e9565b9050809150509392505050565b60008060008060008060008060006121d48a600d54600e546123be565b92509250925060006121e4611e64565b905060008060006121f78e878787612454565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061226183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a82565b905092915050565b60008082846122789190612a65565b9050838110156122bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b490613366565b60405180910390fd5b8091505092915050565b60006122d1611e64565b905060006122e882846124dd90919063ffffffff16565b905061233c81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461226990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6123998260065461221f90919063ffffffff16565b6006819055506123b48160075461226990919063ffffffff16565b6007819055505050565b6000806000806123ea60646123dc888a6124dd90919063ffffffff16565b611e8f90919063ffffffff16565b905060006124146064612406888b6124dd90919063ffffffff16565b611e8f90919063ffffffff16565b9050600061243d8261242f858c61221f90919063ffffffff16565b61221f90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061246d85896124dd90919063ffffffff16565b9050600061248486896124dd90919063ffffffff16565b9050600061249b87896124dd90919063ffffffff16565b905060006124c4826124b6858761221f90919063ffffffff16565b61221f90919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036124ef5760009050612551565b600082846124fd9190613386565b905082848261250c91906132e9565b1461254c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125439061343a565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612591578082015181840152602081019050612576565b60008484015250505050565b6000601f19601f8301169050919050565b60006125b982612557565b6125c38185612562565b93506125d3818560208601612573565b6125dc8161259d565b840191505092915050565b6000602082019050818103600083015261260181846125ae565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126398261260e565b9050919050565b6126498161262e565b811461265457600080fd5b50565b60008135905061266681612640565b92915050565b6000819050919050565b61267f8161266c565b811461268a57600080fd5b50565b60008135905061269c81612676565b92915050565b600080604083850312156126b9576126b8612609565b5b60006126c785828601612657565b92505060206126d88582860161268d565b9150509250929050565b60008115159050919050565b6126f7816126e2565b82525050565b600060208201905061271260008301846126ee565b92915050565b6127218161266c565b82525050565b600060208201905061273c6000830184612718565b92915050565b6000819050919050565b600061276761276261275d8461260e565b612742565b61260e565b9050919050565b60006127798261274c565b9050919050565b600061278b8261276e565b9050919050565b61279b81612780565b82525050565b60006020820190506127b66000830184612792565b92915050565b6000806000606084860312156127d5576127d4612609565b5b60006127e386828701612657565b93505060206127f486828701612657565b92505060406128058682870161268d565b9150509250925092565b600060ff82169050919050565b6128258161280f565b82525050565b6000602082019050612840600083018461281c565b92915050565b61284f8161262e565b82525050565b600060208201905061286a6000830184612846565b92915050565b612879816126e2565b811461288457600080fd5b50565b60008135905061289681612870565b92915050565b6000602082840312156128b2576128b1612609565b5b60006128c084828501612887565b91505092915050565b6000602082840312156128df576128de612609565b5b60006128ed84828501612657565b91505092915050565b60006020828403121561290c5761290b612609565b5b600061291a8482850161268d565b91505092915050565b6000806000806080858703121561293d5761293c612609565b5b600061294b8782880161268d565b945050602061295c8782880161268d565b935050604061296d8782880161268d565b925050606061297e8782880161268d565b91505092959194509250565b600080604083850312156129a1576129a0612609565b5b60006129af85828601612657565b92505060206129c085828601612657565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612a00602083612562565b9150612a0b826129ca565b602082019050919050565b60006020820190508181036000830152612a2f816129f3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a708261266c565b9150612a7b8361266c565b9250828201905080821115612a9357612a92612a36565b5b92915050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b6000612acf601d83612562565b9150612ada82612a99565b602082019050919050565b60006020820190508181036000830152612afe81612ac2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612b61602683612562565b9150612b6c82612b05565b604082019050919050565b60006020820190508181036000830152612b9081612b54565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612bf3602483612562565b9150612bfe82612b97565b604082019050919050565b60006020820190508181036000830152612c2281612be6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c85602283612562565b9150612c9082612c29565b604082019050919050565b60006020820190508181036000830152612cb481612c78565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d17602583612562565b9150612d2282612cbb565b604082019050919050565b60006020820190508181036000830152612d4681612d0a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612da9602383612562565b9150612db482612d4d565b604082019050919050565b60006020820190508181036000830152612dd881612d9c565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612e3b602983612562565b9150612e4682612ddf565b604082019050919050565b60006020820190508181036000830152612e6a81612e2e565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000612ecd603f83612562565b9150612ed882612e71565b604082019050919050565b60006020820190508181036000830152612efc81612ec0565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612f39601c83612562565b9150612f4482612f03565b602082019050919050565b60006020820190508181036000830152612f6881612f2c565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000612fcb602383612562565b9150612fd682612f6f565b604082019050919050565b60006020820190508181036000830152612ffa81612fbe565b9050919050565b600061300c8261266c565b91506130178361266c565b925082820390508181111561302f5761302e612a36565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613091602a83612562565b915061309c82613035565b604082019050919050565b600060208201905081810360008301526130c081613084565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061313481612640565b92915050565b6000602082840312156131505761314f612609565b5b600061315e84828501613125565b91505092915050565b6000819050919050565b600061318c61318761318284613167565b612742565b61266c565b9050919050565b61319c81613171565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6131d78161262e565b82525050565b60006131e983836131ce565b60208301905092915050565b6000602082019050919050565b600061320d826131a2565b61321781856131ad565b9350613222836131be565b8060005b8381101561325357815161323a88826131dd565b9750613245836131f5565b925050600181019050613226565b5085935050505092915050565b600060a0820190506132756000830188612718565b6132826020830187613193565b81810360408301526132948186613202565b90506132a36060830185612846565b6132b06080830184612718565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006132f48261266c565b91506132ff8361266c565b92508261330f5761330e6132ba565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613350601b83612562565b915061335b8261331a565b602082019050919050565b6000602082019050818103600083015261337f81613343565b9050919050565b60006133918261266c565b915061339c8361266c565b92508282026133aa8161266c565b915082820484148315176133c1576133c0612a36565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613424602183612562565b915061342f826133c8565b604082019050919050565b6000602082019050818103600083015261345381613417565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d28756d78cb6570b419279156b5b70d37ace244c4698d2e101f7f2e4bb636b5264736f6c63430008120033
Deployed Bytecode
0x60806040526004361061016a5760003560e01c8063715018a6116100d157806395d89b411161008a578063a9059cbb11610064578063a9059cbb14610501578063dd62ed3e1461053e578063ea1644d51461057b578063f2fde38b146105a457610171565b806395d89b411461048457806398a5c315146104af578063a2a957bb146104d857610171565b8063715018a61461039a57806374010ece146103b15780637d1db4a5146103da5780638da5cb5b146104055780638f70ccf7146104305780638f9a55c01461045957610171565b806323b872dd1161012357806323b872dd146102765780632fd689e3146102b3578063313ce567146102de57806349bd5a5e146103095780636d8aa8f81461033457806370a082311461035d57610171565b8063014667601461017657806306fdde031461018d578063095ea7b3146101b857806313114a9d146101f55780631694505e1461022057806318160ddd1461024b57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105cd565b005b34801561019957600080fd5b506101a2610682565b6040516101af91906125e7565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da91906126a2565b6106bf565b6040516101ec91906126fd565b60405180910390f35b34801561020157600080fd5b5061020a6106dd565b6040516102179190612727565b60405180910390f35b34801561022c57600080fd5b506102356106e3565b60405161024291906127a1565b60405180910390f35b34801561025757600080fd5b50610260610709565b60405161026d9190612727565b60405180910390f35b34801561028257600080fd5b5061029d600480360381019061029891906127bc565b610719565b6040516102aa91906126fd565b60405180910390f35b3480156102bf57600080fd5b506102c86107f2565b6040516102d59190612727565b60405180910390f35b3480156102ea57600080fd5b506102f36107f8565b604051610300919061282b565b60405180910390f35b34801561031557600080fd5b5061031e610801565b60405161032b9190612855565b60405180910390f35b34801561034057600080fd5b5061035b6004803603810190610356919061289c565b610827565b005b34801561036957600080fd5b50610384600480360381019061037f91906128c9565b6108d9565b6040516103919190612727565b60405180910390f35b3480156103a657600080fd5b506103af61092a565b005b3480156103bd57600080fd5b506103d860048036038101906103d391906128f6565b610a7d565b005b3480156103e657600080fd5b506103ef610b1c565b6040516103fc9190612727565b60405180910390f35b34801561041157600080fd5b5061041a610b22565b6040516104279190612855565b60405180910390f35b34801561043c57600080fd5b506104576004803603810190610452919061289c565b610b4b565b005b34801561046557600080fd5b5061046e610bfd565b60405161047b9190612727565b60405180910390f35b34801561049057600080fd5b50610499610c03565b6040516104a691906125e7565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d191906128f6565b610c40565b005b3480156104e457600080fd5b506104ff60048036038101906104fa9190612923565b610cdf565b005b34801561050d57600080fd5b50610528600480360381019061052391906126a2565b610e0c565b60405161053591906126fd565b60405180910390f35b34801561054a57600080fd5b506105656004803603810190610560919061298a565b610e2a565b6040516105729190612727565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d91906128f6565b610eb1565b005b3480156105b057600080fd5b506105cb60048036038101906105c691906128c9565b610f50565b005b6105d5611111565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610662576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065990612a16565b60405180910390fd5b670de0b6b3a7640000601681905550670de0b6b3a7640000601781905550565b60606040518060400160405280600881526020017f536e696666204149000000000000000000000000000000000000000000000000815250905090565b60006106d36106cc611111565b8484611119565b6001905092915050565b600c5481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006107268484846112e2565b6107e784610732611111565b6107e28560405180606001604052806028815260200161345b60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610798611111565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a829092919063ffffffff16565b611119565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61082f611111565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b390612a16565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6000610923600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ae6565b9050919050565b610932611111565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b690612a16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a85611111565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0990612a16565b60405180910390fd5b8060168190555050565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b53611111565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610be0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd790612a16565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600581526020017f534e494646000000000000000000000000000000000000000000000000000000815250905090565b610c48611111565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccc90612a16565b60405180910390fd5b8060188190555050565b610ce7611111565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6b90612a16565b60405180910390fd5b8360088190555082600a819055508160098190555080600b81905550600b54600954600a54600854610da69190612a65565b610db09190612a65565b610dba9190612a65565b600c81905550600a600c541115610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd90612ae5565b60405180910390fd5b50505050565b6000610e20610e19611111565b84846112e2565b6001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610eb9611111565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3d90612a16565b60405180910390fd5b8060178190555050565b610f58611111565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdc90612a16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b90612b77565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117f90612c09565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ee90612c9b565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112d59190612727565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134890612d2d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b790612dbf565b60405180910390fd5b60008111611403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fa90612e51565b60405180910390fd5b61140b610b22565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114795750611449610b22565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561178157601560149054906101000a900460ff166115085761149a610b22565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fe90612ee3565b60405180910390fd5b5b60165481111561154d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154490612f4f565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146115fa57601754816115af846108d9565b6115b99190612a65565b106115f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f090612fe1565b60405180910390fd5b5b6000611605306108d9565b90506000601854821015905060165482106116205760165491505b808015611638575060158054906101000a900460ff16155b80156116925750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156116aa5750601560169054906101000a900460ff165b80156117005750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156117565750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561177e5761176482611b54565b6000479050600081111561177c5761177b47611dcb565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118285750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118db5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118da5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156118e95760009050611a70565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119945750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156119ac57600854600d81905550600954600e819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a575750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a6f57600a54600d81905550600b54600e819055505b5b611a7c84848484611e37565b50505050565b6000838311158290611aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac191906125e7565b60405180910390fd5b5060008385611ad99190613001565b9050809150509392505050565b6000600654821115611b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b24906130a7565b60405180910390fd5b6000611b37611e64565b9050611b4c8184611e8f90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611b8b57611b8a6130c7565b5b604051908082528060200260200182016040528015611bb95781602001602082028036833780820191505090505b5090503081600081518110611bd157611bd06130f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9c919061313a565b81600181518110611cb057611caf6130f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d1730601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611119565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611d7b959493929190613260565b600060405180830381600087803b158015611d9557600080fd5b505af1158015611da9573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e33573d6000803e3d6000fd5b5050565b80611e4557611e44611ed9565b5b611e50848484611f16565b80611e5e57611e5d6120e1565b5b50505050565b6000806000611e716120f5565b91509150611e888183611e8f90919063ffffffff16565b9250505090565b6000611ed183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612154565b905092915050565b6000600d54148015611eed57506000600e54145b611f1457600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b600080600080600080611f28876121b7565b955095509550955095509550611f8686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461221f90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061201b85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461226990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612067816122c7565b6120718483612384565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516120ce9190612727565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b600080600060065490506000670de0b6b3a76400009050612129670de0b6b3a7640000600654611e8f90919063ffffffff16565b82101561214757600654670de0b6b3a7640000935093505050612150565b81819350935050505b9091565b6000808311829061219b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219291906125e7565b60405180910390fd5b50600083856121aa91906132e9565b9050809150509392505050565b60008060008060008060008060006121d48a600d54600e546123be565b92509250925060006121e4611e64565b905060008060006121f78e878787612454565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061226183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a82565b905092915050565b60008082846122789190612a65565b9050838110156122bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b490613366565b60405180910390fd5b8091505092915050565b60006122d1611e64565b905060006122e882846124dd90919063ffffffff16565b905061233c81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461226990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6123998260065461221f90919063ffffffff16565b6006819055506123b48160075461226990919063ffffffff16565b6007819055505050565b6000806000806123ea60646123dc888a6124dd90919063ffffffff16565b611e8f90919063ffffffff16565b905060006124146064612406888b6124dd90919063ffffffff16565b611e8f90919063ffffffff16565b9050600061243d8261242f858c61221f90919063ffffffff16565b61221f90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061246d85896124dd90919063ffffffff16565b9050600061248486896124dd90919063ffffffff16565b9050600061249b87896124dd90919063ffffffff16565b905060006124c4826124b6858761221f90919063ffffffff16565b61221f90919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036124ef5760009050612551565b600082846124fd9190613386565b905082848261250c91906132e9565b1461254c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125439061343a565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612591578082015181840152602081019050612576565b60008484015250505050565b6000601f19601f8301169050919050565b60006125b982612557565b6125c38185612562565b93506125d3818560208601612573565b6125dc8161259d565b840191505092915050565b6000602082019050818103600083015261260181846125ae565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126398261260e565b9050919050565b6126498161262e565b811461265457600080fd5b50565b60008135905061266681612640565b92915050565b6000819050919050565b61267f8161266c565b811461268a57600080fd5b50565b60008135905061269c81612676565b92915050565b600080604083850312156126b9576126b8612609565b5b60006126c785828601612657565b92505060206126d88582860161268d565b9150509250929050565b60008115159050919050565b6126f7816126e2565b82525050565b600060208201905061271260008301846126ee565b92915050565b6127218161266c565b82525050565b600060208201905061273c6000830184612718565b92915050565b6000819050919050565b600061276761276261275d8461260e565b612742565b61260e565b9050919050565b60006127798261274c565b9050919050565b600061278b8261276e565b9050919050565b61279b81612780565b82525050565b60006020820190506127b66000830184612792565b92915050565b6000806000606084860312156127d5576127d4612609565b5b60006127e386828701612657565b93505060206127f486828701612657565b92505060406128058682870161268d565b9150509250925092565b600060ff82169050919050565b6128258161280f565b82525050565b6000602082019050612840600083018461281c565b92915050565b61284f8161262e565b82525050565b600060208201905061286a6000830184612846565b92915050565b612879816126e2565b811461288457600080fd5b50565b60008135905061289681612870565b92915050565b6000602082840312156128b2576128b1612609565b5b60006128c084828501612887565b91505092915050565b6000602082840312156128df576128de612609565b5b60006128ed84828501612657565b91505092915050565b60006020828403121561290c5761290b612609565b5b600061291a8482850161268d565b91505092915050565b6000806000806080858703121561293d5761293c612609565b5b600061294b8782880161268d565b945050602061295c8782880161268d565b935050604061296d8782880161268d565b925050606061297e8782880161268d565b91505092959194509250565b600080604083850312156129a1576129a0612609565b5b60006129af85828601612657565b92505060206129c085828601612657565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612a00602083612562565b9150612a0b826129ca565b602082019050919050565b60006020820190508181036000830152612a2f816129f3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a708261266c565b9150612a7b8361266c565b9250828201905080821115612a9357612a92612a36565b5b92915050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b6000612acf601d83612562565b9150612ada82612a99565b602082019050919050565b60006020820190508181036000830152612afe81612ac2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612b61602683612562565b9150612b6c82612b05565b604082019050919050565b60006020820190508181036000830152612b9081612b54565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612bf3602483612562565b9150612bfe82612b97565b604082019050919050565b60006020820190508181036000830152612c2281612be6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c85602283612562565b9150612c9082612c29565b604082019050919050565b60006020820190508181036000830152612cb481612c78565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d17602583612562565b9150612d2282612cbb565b604082019050919050565b60006020820190508181036000830152612d4681612d0a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612da9602383612562565b9150612db482612d4d565b604082019050919050565b60006020820190508181036000830152612dd881612d9c565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612e3b602983612562565b9150612e4682612ddf565b604082019050919050565b60006020820190508181036000830152612e6a81612e2e565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000612ecd603f83612562565b9150612ed882612e71565b604082019050919050565b60006020820190508181036000830152612efc81612ec0565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612f39601c83612562565b9150612f4482612f03565b602082019050919050565b60006020820190508181036000830152612f6881612f2c565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000612fcb602383612562565b9150612fd682612f6f565b604082019050919050565b60006020820190508181036000830152612ffa81612fbe565b9050919050565b600061300c8261266c565b91506130178361266c565b925082820390508181111561302f5761302e612a36565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613091602a83612562565b915061309c82613035565b604082019050919050565b600060208201905081810360008301526130c081613084565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061313481612640565b92915050565b6000602082840312156131505761314f612609565b5b600061315e84828501613125565b91505092915050565b6000819050919050565b600061318c61318761318284613167565b612742565b61266c565b9050919050565b61319c81613171565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6131d78161262e565b82525050565b60006131e983836131ce565b60208301905092915050565b6000602082019050919050565b600061320d826131a2565b61321781856131ad565b9350613222836131be565b8060005b8381101561325357815161323a88826131dd565b9750613245836131f5565b925050600181019050613226565b5085935050505092915050565b600060a0820190506132756000830188612718565b6132826020830187613193565b81810360408301526132948186613202565b90506132a36060830185612846565b6132b06080830184612718565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006132f48261266c565b91506132ff8361266c565b92508261330f5761330e6132ba565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613350601b83612562565b915061335b8261331a565b602082019050919050565b6000602082019050818103600083015261337f81613343565b9050919050565b60006133918261266c565b915061339c8361266c565b92508282026133aa8161266c565b915082820484148315176133c1576133c0612a36565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613424602183612562565b915061342f826133c8565b604082019050919050565b6000602082019050818103600083015261345381613417565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d28756d78cb6570b419279156b5b70d37ace244c4698d2e101f7f2e4bb636b5264736f6c63430008120033
Deployed Bytecode Sourcemap
4222:12778:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16584:114;;;;;;;;;;;;;:::i;:::-;;6770:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7702:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5085:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5599:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7050:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7904:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5906:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6958:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5647:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16471:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7154:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1695:148;;;;;;;;;;;;;:::i;:::-;;16734:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5798:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1479:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12280:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5851:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6862:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16279:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15813:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7301:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7509:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16880:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1852:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16584:114;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4776:18:::1;16633:12;:22;;;;4776:18;16666:14;:24;;;;16584:114::o:0;6770:83::-;6807:13;6840:5;;;;;;;;;;;;;;;;;6833:12;;6770:83;:::o;7702:193::-;7804:4;7826:39;7835:12;:10;:12::i;:::-;7849:7;7858:6;7826:8;:39::i;:::-;7883:4;7876:11;;7702:193;;;;:::o;5085:24::-;;;;:::o;5599:41::-;;;;;;;;;;;;;:::o;7050:95::-;7103:7;4776:18;7123:14;;7050:95;:::o;7904:446::-;8036:4;8053:36;8063:6;8071:9;8082:6;8053:9;:36::i;:::-;8100:220;8123:6;8144:12;:10;:12::i;:::-;8171:138;8227:6;8171:138;;;;;;;;;;;;;;;;;:11;:19;8183:6;8171:19;;;;;;;;;;;;;;;:33;8191:12;:10;:12::i;:::-;8171:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8100:8;:220::i;:::-;8338:4;8331:11;;7904:446;;;;;:::o;5906:50::-;;;;:::o;6958:83::-;6999:5;4447:1;7017:16;;6958:83;:::o;5647:28::-;;;;;;;;;;;;;:::o;16471:101::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16552:12:::1;16538:11;;:26;;;;;;;;;;;;;;;;;;16471:101:::0;:::o;7154:138::-;7220:7;7247:37;7267:7;:16;7275:7;7267:16;;;;;;;;;;;;;;;;7247:19;:37::i;:::-;7240:44;;7154:138;;;:::o;1695:148::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1802:1:::1;1765:40;;1786:6;::::0;::::1;;;;;;;;1765:40;;;;;;;;;;;;1833:1;1816:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1695:148::o:0;16734:108::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16823:11:::1;16808:12;:26;;;;16734:108:::0;:::o;5798:46::-;;;;:::o;1479:79::-;1517:7;1544:6;;;;;;;;;;;1537:13;;1479:79;:::o;12280:101::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12361:12:::1;12347:11;;:26;;;;;;;;;;;;;;;;;;12280:101:::0;:::o;5851:48::-;;;;:::o;6862:87::-;6901:13;6934:7;;;;;;;;;;;;;;;;;6927:14;;6862:87;:::o;16279:139::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16392:18:::1;16370:19;:40;;;;16279:139:::0;:::o;15813:413::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15959:13:::1;15947:9;:25;;;;15996:14;15983:10;:27;;;;16033:11;16021:9;:23;;;;16068:12;16055:10;:25;;;;16140:10;;16128:9;;16115:10;;16103:9;;:22;;;;:::i;:::-;:34;;;;:::i;:::-;:47;;;;:::i;:::-;16091:9;:59;;;;16182:2;16169:9;;:15;;16161:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;15813:413:::0;;;;:::o;7301:199::-;7406:4;7428:42;7438:12;:10;:12::i;:::-;7452:9;7463:6;7428:9;:42::i;:::-;7488:4;7481:11;;7301:199;;;;:::o;7509:184::-;7626:7;7658:11;:18;7670:5;7658:18;;;;;;;;;;;;;;;:27;7677:7;7658:27;;;;;;;;;;;;;;;;7651:34;;7509:184;;;;:::o;16880:115::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16974:13:::1;16957:14;:30;;;;16880:115:::0;:::o;1852:244::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1961:1:::1;1941:22;;:8;:22;;::::0;1933:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2051:8;2022:38;;2043:6;::::0;::::1;;;;;;;;2022:38;;;;;;;;;;;;2080:8;2071:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1852:244:::0;:::o;228:98::-;281:7;308:10;301:17;;228:98;:::o;9047:369::-;9191:1;9174:19;;:5;:19;;;9166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9272:1;9253:21;;:7;:21;;;9245:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9354:6;9324:11;:18;9336:5;9324:18;;;;;;;;;;;;;;;:27;9343:7;9324:27;;;;;;;;;;;;;;;:36;;;;9392:7;9376:32;;9385:5;9376:32;;;9401:6;9376:32;;;;;;:::i;:::-;;;;;;;;9047:369;;;:::o;9425:2240::-;9563:1;9547:18;;:4;:18;;;9539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9640:1;9626:16;;:2;:16;;;9618:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9710:1;9701:6;:10;9693:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9783:7;:5;:7::i;:::-;9775:15;;:4;:15;;;;:32;;;;;9800:7;:5;:7::i;:::-;9794:13;;:2;:13;;;;9775:32;9771:1178;;;9865:11;;;;;;;;;;;9860:144;;9913:7;:5;:7::i;:::-;9905:15;;:4;:15;;;9897:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9860:144;10039:12;;10029:6;:22;;10021:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10111:13;;;;;;;;;;;10105:19;;:2;:19;;;10102:146;;10178:14;;10169:6;10153:13;10163:2;10153:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10145:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10102:146;10265:28;10296:24;10314:4;10296:9;:24::i;:::-;10265:55;;10335:12;10374:19;;10350:20;:43;;10335:58;;10438:12;;10414:20;:36;10411:124;;10507:12;;10484:35;;10411:124;10556:7;:18;;;;;10568:6;;;;;;;;;;10567:7;10556:18;:43;;;;;10586:13;;;;;;;;;;;10578:21;;:4;:21;;;;10556:43;:58;;;;;10603:11;;;;;;;;;;;10556:58;:87;;;;;10619:18;:24;10638:4;10619:24;;;;;;;;;;;;;;;;;;;;;;;;;10618:25;10556:87;:114;;;;;10648:18;:22;10667:2;10648:22;;;;;;;;;;;;;;;;;;;;;;;;;10647:23;10556:114;10552:386;;;10691:38;10708:20;10691:16;:38::i;:::-;10748:26;10777:21;10748:50;;10842:1;10821:18;:22;10817:106;;;10868:35;10881:21;10868:12;:35::i;:::-;10817:106;10672:266;10552:386;9809:1140;;9771:1178;10962:12;10977:4;10962:19;;11027:18;:24;11046:4;11027:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11055:18;:22;11074:2;11055:22;;;;;;;;;;;;;;;;;;;;;;;;;11027:50;11026:102;;;;11091:13;;;;;;;;;;;11083:21;;:4;:21;;;;:44;;;;;11114:13;;;;;;;;;;;11108:19;;:2;:19;;;;11083:44;11026:102;11022:581;;;11155:5;11145:15;;11022:581;;;11239:13;;;;;;;;;;;11231:21;;:4;:21;;;:55;;;;;11270:15;;;;;;;;;;;11256:30;;:2;:30;;;;11231:55;11228:154;;;11319:9;;11307;:21;;;;11357:9;;11347:7;:19;;;;11228:154;11442:13;;;;;;;;;;;11436:19;;:2;:19;;;:55;;;;;11475:15;;;;;;;;;;;11459:32;;:4;:32;;;;11436:55;11432:157;;;11524:10;;11512:9;:22;;;;11563:10;;11553:7;:20;;;;11432:157;11022:581;11616:41;11631:4;11637:2;11641:6;11649:7;11616:14;:41::i;:::-;9528:2137;9425:2240;;;:::o;2464:224::-;2584:7;2617:1;2612;:6;;2620:12;2604:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2644:9;2660:1;2656;:5;;;;:::i;:::-;2644:17;;2679:1;2672:8;;;2464:224;;;;;:::o;8359:323::-;8454:7;8512;;8501;:18;;8479:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8600:19;8622:10;:8;:10::i;:::-;8600:32;;8650:24;8662:11;8650:7;:11;;:24;;;;:::i;:::-;8643:31;;;8359:323;;;:::o;11674:483::-;6061:4;6052:6;;:13;;;;;;;;;;;;;;;;;;11752:21:::1;11790:1;11776:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11752:40;;11821:4;11803;11808:1;11803:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11847:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11837:4;11842:1;11837:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11880:62;11897:4;11912:15;;;;;;;;;;;11930:11;11880:8;:62::i;:::-;11953:15;;;;;;;;;;;:66;;;12034:11;12060:1;12076:4;12103;12123:15;11953:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11741:416;6097:5:::0;6088:6;;:14;;;;;;;;;;;;;;;;;;11674:483;:::o;12166:105::-;12223:23;;;;;;;;;;;:32;;:40;12256:6;12223:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12166:105;:::o;12390:282::-;12546:7;12541:28;;12555:14;:12;:14::i;:::-;12541:28;12580:44;12598:6;12606:9;12617:6;12580:17;:44::i;:::-;12640:7;12635:29;;12649:15;:13;:15::i;:::-;12635:29;12390:282;;;;:::o;15368:167::-;15410:7;15431:15;15448;15467:19;:17;:19::i;:::-;15430:56;;;;15507:20;15519:7;15507;:11;;:20;;;;:::i;:::-;15500:27;;;;15368:167;:::o;2952:132::-;3010:7;3037:39;3041:1;3044;3037:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3030:46;;2952:132;;;;:::o;8691:221::-;8751:1;8738:9;;:14;:30;;;;;8767:1;8756:7;;:12;8738:30;8770:7;8734:43;8810:9;;8790:17;:29;;;;8848:7;;8830:15;:25;;;;8881:1;8869:9;:13;;;;8903:1;8893:7;:11;;;;8691:221;:::o;12681:610::-;12828:15;12858:23;12896:12;12923:23;12961:12;12988:13;13015:19;13026:7;13015:10;:19::i;:::-;12813:221;;;;;;;;;;;;13063:28;13083:7;13063;:15;13071:6;13063:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13045:7;:15;13053:6;13045:15;;;;;;;;;;;;;;;:46;;;;13123:39;13146:15;13123:7;:18;13131:9;13123:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13102:7;:18;13110:9;13102:18;;;;;;;;;;;;;;;:60;;;;13173:16;13183:5;13173:9;:16::i;:::-;13200:23;13212:4;13218;13200:11;:23::i;:::-;13256:9;13239:44;;13248:6;13239:44;;;13267:15;13239:44;;;;;;:::i;:::-;;;;;;;;12802:489;;;;;;12681:610;;;:::o;8921:117::-;8977:17;;8965:9;:29;;;;9015:15;;9005:7;:25;;;;8921:117::o;15544:260::-;15595:7;15604;15624:15;15642:7;;15624:25;;15660:15;4776:18;15660:25;;15710:20;4776:18;15710:7;;:11;;:20;;;;:::i;:::-;15700:7;:30;15696:61;;;15740:7;;4776:18;15732:25;;;;;;;;15696:61;15779:7;15788;15771:25;;;;;;15544:260;;;:::o;3093:223::-;3213:7;3245:1;3241;:5;3248:12;3233:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3272:9;3288:1;3284;:5;;;;:::i;:::-;3272:17;;3307:1;3300:8;;;3093:223;;;;;:::o;13714:618::-;13814:7;13836;13858;13880;13902;13924;13960:23;13985:12;13999:13;14029:40;14041:7;14050:9;;14061:7;;14029:11;:40::i;:::-;13959:110;;;;;;14080:19;14102:10;:8;:10::i;:::-;14080:32;;14124:15;14141:23;14166:12;14195:46;14207:7;14216:4;14222:5;14229:11;14195;:46::i;:::-;14123:118;;;;;;14263:7;14272:15;14289:4;14295:15;14312:4;14318:5;14255:69;;;;;;;;;;;;;;;;;;;13714:618;;;;;;;:::o;2319:136::-;2377:7;2404:43;2408:1;2411;2404:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2397:50;;2319:136;;;;:::o;2131:179::-;2189:7;2209:9;2225:1;2221;:5;;;;:::i;:::-;2209:17;;2250:1;2245;:6;;2237:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2301:1;2294:8;;;2131:179;;;;:::o;13300:211::-;13353:19;13375:10;:8;:10::i;:::-;13353:32;;13396:13;13412:22;13422:11;13412:5;:9;;:22;;;;:::i;:::-;13396:38;;13470:33;13497:5;13470:7;:22;13486:4;13470:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13445:7;:22;13461:4;13445:22;;;;;;;;;;;;;;;:58;;;;13342:169;;13300:211;:::o;13520:147::-;13598:17;13610:4;13598:7;;:11;;:17;;;;:::i;:::-;13588:7;:27;;;;13639:20;13654:4;13639:10;;:14;;:20;;;;:::i;:::-;13626:10;:33;;;;13520:147;;:::o;14341:472::-;14510:7;14532;14554;14589:12;14604:30;14630:3;14604:21;14616:8;14604:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14589:45;;14645:13;14661:28;14685:3;14661:19;14673:6;14661:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14645:44;;14700:23;14726:28;14748:5;14726:17;14738:4;14726:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14700:54;;14776:15;14793:4;14799:5;14768:37;;;;;;;;;14341:472;;;;;;;:::o;14822:537::-;15016:7;15038;15060;15095:15;15113:24;15125:11;15113:7;:11;;:24;;;;:::i;:::-;15095:42;;15148:12;15163:21;15172:11;15163:4;:8;;:21;;;;:::i;:::-;15148:36;;15195:13;15211:22;15221:11;15211:5;:9;;:22;;;;:::i;:::-;15195:38;;15244:23;15270:28;15292:5;15270:17;15282:4;15270:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15244:54;;15320:7;15329:15;15346:4;15312:39;;;;;;;;;;14822:537;;;;;;;;:::o;2697:246::-;2755:7;2784:1;2779;:6;2775:47;;2809:1;2802:8;;;;2775:47;2832:9;2848:1;2844;:5;;;;:::i;:::-;2832:17;;2877:1;2872;2868;:5;;;;:::i;:::-;:10;2860:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2934:1;2927:8;;;2697:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:152::-;4220:9;4253:37;4284:5;4253:37;:::i;:::-;4240:50;;4144:152;;;:::o;4302:183::-;4415:63;4472:5;4415:63;:::i;:::-;4410:3;4403:76;4302:183;;:::o;4491:274::-;4610:4;4648:2;4637:9;4633:18;4625:26;;4661:97;4755:1;4744:9;4740:17;4731:6;4661:97;:::i;:::-;4491:274;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:116::-;6248:21;6263:5;6248:21;:::i;:::-;6241:5;6238:32;6228:60;;6284:1;6281;6274:12;6228:60;6178:116;:::o;6300:133::-;6343:5;6381:6;6368:20;6359:29;;6397:30;6421:5;6397:30;:::i;:::-;6300:133;;;;:::o;6439:323::-;6495:6;6544:2;6532:9;6523:7;6519:23;6515:32;6512:119;;;6550:79;;:::i;:::-;6512:119;6670:1;6695:50;6737:7;6728:6;6717:9;6713:22;6695:50;:::i;:::-;6685:60;;6641:114;6439:323;;;;:::o;6768:329::-;6827:6;6876:2;6864:9;6855:7;6851:23;6847:32;6844:119;;;6882:79;;:::i;:::-;6844:119;7002:1;7027:53;7072:7;7063:6;7052:9;7048:22;7027:53;:::i;:::-;7017:63;;6973:117;6768:329;;;;:::o;7103:::-;7162:6;7211:2;7199:9;7190:7;7186:23;7182:32;7179:119;;;7217:79;;:::i;:::-;7179:119;7337:1;7362:53;7407:7;7398:6;7387:9;7383:22;7362:53;:::i;:::-;7352:63;;7308:117;7103:329;;;;:::o;7438:765::-;7524:6;7532;7540;7548;7597:3;7585:9;7576:7;7572:23;7568:33;7565:120;;;7604:79;;:::i;:::-;7565:120;7724:1;7749:53;7794:7;7785:6;7774:9;7770:22;7749:53;:::i;:::-;7739:63;;7695:117;7851:2;7877:53;7922:7;7913:6;7902:9;7898:22;7877:53;:::i;:::-;7867:63;;7822:118;7979:2;8005:53;8050:7;8041:6;8030:9;8026:22;8005:53;:::i;:::-;7995:63;;7950:118;8107:2;8133:53;8178:7;8169:6;8158:9;8154:22;8133:53;:::i;:::-;8123:63;;8078:118;7438:765;;;;;;;:::o;8209:474::-;8277:6;8285;8334:2;8322:9;8313:7;8309:23;8305:32;8302:119;;;8340:79;;:::i;:::-;8302:119;8460:1;8485:53;8530:7;8521:6;8510:9;8506:22;8485:53;:::i;:::-;8475:63;;8431:117;8587:2;8613:53;8658:7;8649:6;8638:9;8634:22;8613:53;:::i;:::-;8603:63;;8558:118;8209:474;;;;;:::o;8689:182::-;8829:34;8825:1;8817:6;8813:14;8806:58;8689:182;:::o;8877:366::-;9019:3;9040:67;9104:2;9099:3;9040:67;:::i;:::-;9033:74;;9116:93;9205:3;9116:93;:::i;:::-;9234:2;9229:3;9225:12;9218:19;;8877:366;;;:::o;9249:419::-;9415:4;9453:2;9442:9;9438:18;9430:26;;9502:9;9496:4;9492:20;9488:1;9477:9;9473:17;9466:47;9530:131;9656:4;9530:131;:::i;:::-;9522:139;;9249:419;;;:::o;9674:180::-;9722:77;9719:1;9712:88;9819:4;9816:1;9809:15;9843:4;9840:1;9833:15;9860:191;9900:3;9919:20;9937:1;9919:20;:::i;:::-;9914:25;;9953:20;9971:1;9953:20;:::i;:::-;9948:25;;9996:1;9993;9989:9;9982:16;;10017:3;10014:1;10011:10;10008:36;;;10024:18;;:::i;:::-;10008:36;9860:191;;;;:::o;10057:179::-;10197:31;10193:1;10185:6;10181:14;10174:55;10057:179;:::o;10242:366::-;10384:3;10405:67;10469:2;10464:3;10405:67;:::i;:::-;10398:74;;10481:93;10570:3;10481:93;:::i;:::-;10599:2;10594:3;10590:12;10583:19;;10242:366;;;:::o;10614:419::-;10780:4;10818:2;10807:9;10803:18;10795:26;;10867:9;10861:4;10857:20;10853:1;10842:9;10838:17;10831:47;10895:131;11021:4;10895:131;:::i;:::-;10887:139;;10614:419;;;:::o;11039:225::-;11179:34;11175:1;11167:6;11163:14;11156:58;11248:8;11243:2;11235:6;11231:15;11224:33;11039:225;:::o;11270:366::-;11412:3;11433:67;11497:2;11492:3;11433:67;:::i;:::-;11426:74;;11509:93;11598:3;11509:93;:::i;:::-;11627:2;11622:3;11618:12;11611:19;;11270:366;;;:::o;11642:419::-;11808:4;11846:2;11835:9;11831:18;11823:26;;11895:9;11889:4;11885:20;11881:1;11870:9;11866:17;11859:47;11923:131;12049:4;11923:131;:::i;:::-;11915:139;;11642:419;;;:::o;12067:223::-;12207:34;12203:1;12195:6;12191:14;12184:58;12276:6;12271:2;12263:6;12259:15;12252:31;12067:223;:::o;12296:366::-;12438:3;12459:67;12523:2;12518:3;12459:67;:::i;:::-;12452:74;;12535:93;12624:3;12535:93;:::i;:::-;12653:2;12648:3;12644:12;12637:19;;12296:366;;;:::o;12668:419::-;12834:4;12872:2;12861:9;12857:18;12849:26;;12921:9;12915:4;12911:20;12907:1;12896:9;12892:17;12885:47;12949:131;13075:4;12949:131;:::i;:::-;12941:139;;12668:419;;;:::o;13093:221::-;13233:34;13229:1;13221:6;13217:14;13210:58;13302:4;13297:2;13289:6;13285:15;13278:29;13093:221;:::o;13320:366::-;13462:3;13483:67;13547:2;13542:3;13483:67;:::i;:::-;13476:74;;13559:93;13648:3;13559:93;:::i;:::-;13677:2;13672:3;13668:12;13661:19;;13320:366;;;:::o;13692:419::-;13858:4;13896:2;13885:9;13881:18;13873:26;;13945:9;13939:4;13935:20;13931:1;13920:9;13916:17;13909:47;13973:131;14099:4;13973:131;:::i;:::-;13965:139;;13692:419;;;:::o;14117:224::-;14257:34;14253:1;14245:6;14241:14;14234:58;14326:7;14321:2;14313:6;14309:15;14302:32;14117:224;:::o;14347:366::-;14489:3;14510:67;14574:2;14569:3;14510:67;:::i;:::-;14503:74;;14586:93;14675:3;14586:93;:::i;:::-;14704:2;14699:3;14695:12;14688:19;;14347:366;;;:::o;14719:419::-;14885:4;14923:2;14912:9;14908:18;14900:26;;14972:9;14966:4;14962:20;14958:1;14947:9;14943:17;14936:47;15000:131;15126:4;15000:131;:::i;:::-;14992:139;;14719:419;;;:::o;15144:222::-;15284:34;15280:1;15272:6;15268:14;15261:58;15353:5;15348:2;15340:6;15336:15;15329:30;15144:222;:::o;15372:366::-;15514:3;15535:67;15599:2;15594:3;15535:67;:::i;:::-;15528:74;;15611:93;15700:3;15611:93;:::i;:::-;15729:2;15724:3;15720:12;15713:19;;15372:366;;;:::o;15744:419::-;15910:4;15948:2;15937:9;15933:18;15925:26;;15997:9;15991:4;15987:20;15983:1;15972:9;15968:17;15961:47;16025:131;16151:4;16025:131;:::i;:::-;16017:139;;15744:419;;;:::o;16169:228::-;16309:34;16305:1;16297:6;16293:14;16286:58;16378:11;16373:2;16365:6;16361:15;16354:36;16169:228;:::o;16403:366::-;16545:3;16566:67;16630:2;16625:3;16566:67;:::i;:::-;16559:74;;16642:93;16731:3;16642:93;:::i;:::-;16760:2;16755:3;16751:12;16744:19;;16403:366;;;:::o;16775:419::-;16941:4;16979:2;16968:9;16964:18;16956:26;;17028:9;17022:4;17018:20;17014:1;17003:9;16999:17;16992:47;17056:131;17182:4;17056:131;:::i;:::-;17048:139;;16775:419;;;:::o;17200:250::-;17340:34;17336:1;17328:6;17324:14;17317:58;17409:33;17404:2;17396:6;17392:15;17385:58;17200:250;:::o;17456:366::-;17598:3;17619:67;17683:2;17678:3;17619:67;:::i;:::-;17612:74;;17695:93;17784:3;17695:93;:::i;:::-;17813:2;17808:3;17804:12;17797:19;;17456:366;;;:::o;17828:419::-;17994:4;18032:2;18021:9;18017:18;18009:26;;18081:9;18075:4;18071:20;18067:1;18056:9;18052:17;18045:47;18109:131;18235:4;18109:131;:::i;:::-;18101:139;;17828:419;;;:::o;18253:178::-;18393:30;18389:1;18381:6;18377:14;18370:54;18253:178;:::o;18437:366::-;18579:3;18600:67;18664:2;18659:3;18600:67;:::i;:::-;18593:74;;18676:93;18765:3;18676:93;:::i;:::-;18794:2;18789:3;18785:12;18778:19;;18437:366;;;:::o;18809:419::-;18975:4;19013:2;19002:9;18998:18;18990:26;;19062:9;19056:4;19052:20;19048:1;19037:9;19033:17;19026:47;19090:131;19216:4;19090:131;:::i;:::-;19082:139;;18809:419;;;:::o;19234:222::-;19374:34;19370:1;19362:6;19358:14;19351:58;19443:5;19438:2;19430:6;19426:15;19419:30;19234:222;:::o;19462:366::-;19604:3;19625:67;19689:2;19684:3;19625:67;:::i;:::-;19618:74;;19701:93;19790:3;19701:93;:::i;:::-;19819:2;19814:3;19810:12;19803:19;;19462:366;;;:::o;19834:419::-;20000:4;20038:2;20027:9;20023:18;20015:26;;20087:9;20081:4;20077:20;20073:1;20062:9;20058:17;20051:47;20115:131;20241:4;20115:131;:::i;:::-;20107:139;;19834:419;;;:::o;20259:194::-;20299:4;20319:20;20337:1;20319:20;:::i;:::-;20314:25;;20353:20;20371:1;20353:20;:::i;:::-;20348:25;;20397:1;20394;20390:9;20382:17;;20421:1;20415:4;20412:11;20409:37;;;20426:18;;:::i;:::-;20409:37;20259:194;;;;:::o;20459:229::-;20599:34;20595:1;20587:6;20583:14;20576:58;20668:12;20663:2;20655:6;20651:15;20644:37;20459:229;:::o;20694:366::-;20836:3;20857:67;20921:2;20916:3;20857:67;:::i;:::-;20850:74;;20933:93;21022:3;20933:93;:::i;:::-;21051:2;21046:3;21042:12;21035:19;;20694:366;;;:::o;21066:419::-;21232:4;21270:2;21259:9;21255:18;21247:26;;21319:9;21313:4;21309:20;21305:1;21294:9;21290:17;21283:47;21347:131;21473:4;21347:131;:::i;:::-;21339:139;;21066:419;;;:::o;21491:180::-;21539:77;21536:1;21529:88;21636:4;21633:1;21626:15;21660:4;21657:1;21650:15;21677:180;21725:77;21722:1;21715:88;21822:4;21819:1;21812:15;21846:4;21843:1;21836:15;21863:143;21920:5;21951:6;21945:13;21936:22;;21967:33;21994:5;21967:33;:::i;:::-;21863:143;;;;:::o;22012:351::-;22082:6;22131:2;22119:9;22110:7;22106:23;22102:32;22099:119;;;22137:79;;:::i;:::-;22099:119;22257:1;22282:64;22338:7;22329:6;22318:9;22314:22;22282:64;:::i;:::-;22272:74;;22228:128;22012:351;;;;:::o;22369:85::-;22414:7;22443:5;22432:16;;22369:85;;;:::o;22460:158::-;22518:9;22551:61;22569:42;22578:32;22604:5;22578:32;:::i;:::-;22569:42;:::i;:::-;22551:61;:::i;:::-;22538:74;;22460:158;;;:::o;22624:147::-;22719:45;22758:5;22719:45;:::i;:::-;22714:3;22707:58;22624:147;;:::o;22777:114::-;22844:6;22878:5;22872:12;22862:22;;22777:114;;;:::o;22897:184::-;22996:11;23030:6;23025:3;23018:19;23070:4;23065:3;23061:14;23046:29;;22897:184;;;;:::o;23087:132::-;23154:4;23177:3;23169:11;;23207:4;23202:3;23198:14;23190:22;;23087:132;;;:::o;23225:108::-;23302:24;23320:5;23302:24;:::i;:::-;23297:3;23290:37;23225:108;;:::o;23339:179::-;23408:10;23429:46;23471:3;23463:6;23429:46;:::i;:::-;23507:4;23502:3;23498:14;23484:28;;23339:179;;;;:::o;23524:113::-;23594:4;23626;23621:3;23617:14;23609:22;;23524:113;;;:::o;23673:732::-;23792:3;23821:54;23869:5;23821:54;:::i;:::-;23891:86;23970:6;23965:3;23891:86;:::i;:::-;23884:93;;24001:56;24051:5;24001:56;:::i;:::-;24080:7;24111:1;24096:284;24121:6;24118:1;24115:13;24096:284;;;24197:6;24191:13;24224:63;24283:3;24268:13;24224:63;:::i;:::-;24217:70;;24310:60;24363:6;24310:60;:::i;:::-;24300:70;;24156:224;24143:1;24140;24136:9;24131:14;;24096:284;;;24100:14;24396:3;24389:10;;23797:608;;;23673:732;;;;:::o;24411:831::-;24674:4;24712:3;24701:9;24697:19;24689:27;;24726:71;24794:1;24783:9;24779:17;24770:6;24726:71;:::i;:::-;24807:80;24883:2;24872:9;24868:18;24859:6;24807:80;:::i;:::-;24934:9;24928:4;24924:20;24919:2;24908:9;24904:18;24897:48;24962:108;25065:4;25056:6;24962:108;:::i;:::-;24954:116;;25080:72;25148:2;25137:9;25133:18;25124:6;25080:72;:::i;:::-;25162:73;25230:3;25219:9;25215:19;25206:6;25162:73;:::i;:::-;24411:831;;;;;;;;:::o;25248:180::-;25296:77;25293:1;25286:88;25393:4;25390:1;25383:15;25417:4;25414:1;25407:15;25434:185;25474:1;25491:20;25509:1;25491:20;:::i;:::-;25486:25;;25525:20;25543:1;25525:20;:::i;:::-;25520:25;;25564:1;25554:35;;25569:18;;:::i;:::-;25554:35;25611:1;25608;25604:9;25599:14;;25434:185;;;;:::o;25625:177::-;25765:29;25761:1;25753:6;25749:14;25742:53;25625:177;:::o;25808:366::-;25950:3;25971:67;26035:2;26030:3;25971:67;:::i;:::-;25964:74;;26047:93;26136:3;26047:93;:::i;:::-;26165:2;26160:3;26156:12;26149:19;;25808:366;;;:::o;26180:419::-;26346:4;26384:2;26373:9;26369:18;26361:26;;26433:9;26427:4;26423:20;26419:1;26408:9;26404:17;26397:47;26461:131;26587:4;26461:131;:::i;:::-;26453:139;;26180:419;;;:::o;26605:410::-;26645:7;26668:20;26686:1;26668:20;:::i;:::-;26663:25;;26702:20;26720:1;26702:20;:::i;:::-;26697:25;;26757:1;26754;26750:9;26779:30;26797:11;26779:30;:::i;:::-;26768:41;;26958:1;26949:7;26945:15;26942:1;26939:22;26919:1;26912:9;26892:83;26869:139;;26988:18;;:::i;:::-;26869:139;26653:362;26605:410;;;;:::o;27021:220::-;27161:34;27157:1;27149:6;27145:14;27138:58;27230:3;27225:2;27217:6;27213:15;27206:28;27021:220;:::o;27247:366::-;27389:3;27410:67;27474:2;27469:3;27410:67;:::i;:::-;27403:74;;27486:93;27575:3;27486:93;:::i;:::-;27604:2;27599:3;27595:12;27588:19;;27247:366;;;:::o;27619:419::-;27785:4;27823:2;27812:9;27808:18;27800:26;;27872:9;27866:4;27862:20;27858:1;27847:9;27843:17;27836:47;27900:131;28026:4;27900:131;:::i;:::-;27892:139;;27619:419;;;:::o
Swarm Source
ipfs://d28756d78cb6570b419279156b5b70d37ace244c4698d2e101f7f2e4bb636b52
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.