ERC-20
Overview
Max Total Supply
20,000,000 PrediAI
Holders
44
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
706,002.510648304 PrediAIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
PredictoAI
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-02-21 */ // SPDX-License-Identifier: Unlicensed /** @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@////////@@@@@@@@@@@@@ @@@@@@@@@@@@@///@@@@@@@@@@@@@ @@@@/////////////////////@@@@ @@@///@@@@@@@@@@@@@@@@@///@@@ @@@///@@@@//@@@@@//@@@@///@@@ @/////@@@@//@@@@@//@@@@/////@ @@@///@@@@@@@@@@@@@@@@@///@@@ @@@///@@@@@@@@@@@@@@@@@///@@@ @@@@/////////////////////@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Website: https://www.predictoai.xyz/ Twitter: https://twitter.com/predictoai Telegram: https://t.me/predictoaieth WhitePaper: https://predictoai.gitbook.io/ **/ pragma solidity ^0.8.18; 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 PredictoAI is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "PredictoAI"; string private constant _symbol = "PrediAI"; 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 = 20000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _redisFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 5; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 5; //Original Fee uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; address payable private _developmentAddress = payable(0xFC7cc7C8d08AF808167aB1Bb4bC51DEF306F9Ef0); address payable private _marketingAddress = payable(0xFC7cc7C8d08AF808167aB1Bb4bC51DEF306F9Ef0); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = 400000 * 10**9; uint256 public _maxWalletSize = 400000 * 10**9; uint256 public _swapTokensAtAmount =200 * 10**9; bool private _maxTxn = false; bool private _maxWallet = false; bool private _maxTxnCan = false; bool private _maxWalletCan = false; 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[_developmentAddress] = true; _isExcludedFromFee[_marketingAddress] = 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, "the transfer amount exceeds allowance" ) ); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount has to 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), "Can't approve from zero address"); require(spender != address(0), "Can't approve to zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "Cant transfer from address zero"); require(to != address(0), "Cant transfer to address zero"); require(amount > 0, "Amount should be above zero"); if (from != owner() && to != owner()) { //Trade start check if (!tradingOpen) { require(from == owner(), "Only owner can trade before trading activation"); } require(amount <= _maxTxAmount, "Exceeded max transaction limit"); require(!bots[from] && !bots[to], "This account is on the blacklist"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "Exceeds max wallet balance"); } 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 = _redisFeeOnBuy; _taxFee = _taxFeeOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _redisFeeOnSell; _taxFee = _taxFeeOnSell; } } _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 { _marketingAddress.transfer(amount); } function setTrading(bool _tradingOpen) public onlyOwner { tradingOpen = _tradingOpen; } function manualswap() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function blockBots(address[] memory bots_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function unblockBot(address notbot) public onlyOwner { bots[notbot] = false; } 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 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner { require(taxFeeOnBuy >= 0 && taxFeeOnBuy <= 20, "Buy tax must be between 0% and 20%"); require(taxFeeOnSell >= 0 && taxFeeOnSell <= 40, "Sell tax must be between 0% and 40%"); _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; } //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; } //Set maximum transaction function setMaxTxnAmount(uint256 maxTxAmount, bool maxTxn, bool maxTxnCan) public onlyOwner { _maxTxAmount = maxTxAmount; _maxTxn = maxTxn; _maxTxnCan = maxTxnCan; } function setMaxWalletSize(uint256 maxWalletSize, bool maxWallet, bool maxWalletCan) public onlyOwner { _maxWalletSize = maxWalletSize; _maxWallet = maxWallet; _maxWalletCan = maxWalletCan; } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } }
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":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"bool","name":"maxTxn","type":"bool"},{"internalType":"bool","name":"maxTxnCan","type":"bool"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"},{"internalType":"bool","name":"maxWallet","type":"bool"},{"internalType":"bool","name":"maxWalletCan","type":"bool"}],"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":"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":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","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
608060405266470de4df8200005f196200001a919062000746565b5f19620000289190620007aa565b6006555f60085560056009555f600a556005600b55600a54600c55600b54600d55600c54600e55600d54600f5573fc7cc7c8d08af808167ab1bb4bc51def306f9ef060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fc7cc7c8d08af808167ab1bb4bc51def306f9ef060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066016bcc41e9000060165566016bcc41e90000601755642e90edd0006018555f60195f6101000a81548160ff0219169083151502179055505f601960016101000a81548160ff0219169083151502179055505f601960026101000a81548160ff0219169083151502179055505f601960036101000a81548160ff021916908315150217905550348015620001c3575f80fd5b505f620001d5620006e260201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f62000287620006e260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000366573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200038c919062000849565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003f2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000418919062000849565b6040518363ffffffff1660e01b8152600401620004379291906200088a565b6020604051808303815f875af115801562000454573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200047a919062000849565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f620004ce620006e960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200066e620006e260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66470de4df820000604051620006d39190620008c6565b60405180910390a350620008e1565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620007528262000710565b91506200075f8362000710565b92508262000772576200077162000719565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620007b68262000710565b9150620007c38362000710565b9250828203905081811115620007de57620007dd6200077d565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200081382620007e8565b9050919050565b620008258162000807565b811462000830575f80fd5b50565b5f8151905062000843816200081a565b92915050565b5f60208284031215620008615762000860620007e4565b5b5f620008708482850162000833565b91505092915050565b620008848162000807565b82525050565b5f6040820190506200089f5f83018562000879565b620008ae602083018462000879565b9392505050565b620008c08162000710565b82525050565b5f602082019050620008db5f830184620008b5565b92915050565b613cf680620008ef5f395ff3fe6080604052600436106101cf575f3560e01c80637d1db4a5116100f6578063a9059cbb11610094578063c492f04611610063578063c492f04614610640578063dd62ed3e14610668578063f2fde38b146106a4578063fc7d9469146106cc576101d6565b8063a9059cbb1461058a578063bd6bba91146105c6578063bfd79284146105ee578063c3c8cd801461062a576101d6565b80638f70ccf7116100d05780638f70ccf7146104e65780638f9a55c01461050e57806395d89b411461053857806398a5c31514610562576101d6565b80637d1db4a5146104565780637f2feddc146104805780638da5cb5b146104bc576101d6565b8063313ce5671161016e5780636d8aa8f81161013d5780636d8aa8f8146103c65780636fc3eaec146103ee57806370a0823114610404578063715018a614610440576101d6565b8063313ce5671461032257806349bd5a5e1461034c57806352f7c988146103765780636b9990531461039e576101d6565b80631694505e116101aa5780631694505e1461026857806318160ddd1461029257806323b872dd146102bc5780632fd689e3146102f8576101d6565b8062b8cf2a146101da57806306fdde0314610202578063095ea7b31461022c576101d6565b366101d657005b5f80fd5b3480156101e5575f80fd5b5061020060048036038101906101fb9190612d58565b6106f4565b005b34801561020d575f80fd5b50610216610813565b6040516102239190612e19565b60405180910390f35b348015610237575f80fd5b50610252600480360381019061024d9190612e6c565b610850565b60405161025f9190612ec4565b60405180910390f35b348015610273575f80fd5b5061027c61086d565b6040516102899190612f38565b60405180910390f35b34801561029d575f80fd5b506102a6610892565b6040516102b39190612f60565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd9190612f79565b6108a0565b6040516102ef9190612ec4565b60405180910390f35b348015610303575f80fd5b5061030c610974565b6040516103199190612f60565b60405180910390f35b34801561032d575f80fd5b5061033661097a565b6040516103439190612fe4565b60405180910390f35b348015610357575f80fd5b50610360610982565b60405161036d919061300c565b60405180910390f35b348015610381575f80fd5b5061039c60048036038101906103979190613025565b6109a7565b005b3480156103a9575f80fd5b506103c460048036038101906103bf9190613063565b610aed565b005b3480156103d1575f80fd5b506103ec60048036038101906103e791906130b8565b610bd8565b005b3480156103f9575f80fd5b50610402610c89565b005b34801561040f575f80fd5b5061042a60048036038101906104259190613063565b610d56565b6040516104379190612f60565b60405180910390f35b34801561044b575f80fd5b50610454610da4565b005b348015610461575f80fd5b5061046a610ef2565b6040516104779190612f60565b60405180910390f35b34801561048b575f80fd5b506104a660048036038101906104a19190613063565b610ef8565b6040516104b39190612f60565b60405180910390f35b3480156104c7575f80fd5b506104d0610f0d565b6040516104dd919061300c565b60405180910390f35b3480156104f1575f80fd5b5061050c600480360381019061050791906130b8565b610f34565b005b348015610519575f80fd5b50610522610fe5565b60405161052f9190612f60565b60405180910390f35b348015610543575f80fd5b5061054c610feb565b6040516105599190612e19565b60405180910390f35b34801561056d575f80fd5b50610588600480360381019061058391906130e3565b611028565b005b348015610595575f80fd5b506105b060048036038101906105ab9190612e6c565b6110c6565b6040516105bd9190612ec4565b60405180910390f35b3480156105d1575f80fd5b506105ec60048036038101906105e7919061310e565b6110e3565b005b3480156105f9575f80fd5b50610614600480360381019061060f9190613063565b6111b6565b6040516106219190612ec4565b60405180910390f35b348015610635575f80fd5b5061063e6111d3565b005b34801561064b575f80fd5b50610666600480360381019061066191906131b7565b6112a8565b005b348015610673575f80fd5b5061068e60048036038101906106899190613214565b6113d7565b60405161069b9190612f60565b60405180910390f35b3480156106af575f80fd5b506106ca60048036038101906106c59190613063565b611459565b005b3480156106d7575f80fd5b506106f260048036038101906106ed919061310e565b611616565b005b6106fc6116ea565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f9061329c565b60405180910390fd5b5f5b815181101561080f57600160105f8484815181106107ab576107aa6132ba565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061078a565b5050565b60606040518060400160405280600a81526020017f507265646963746f414900000000000000000000000000000000000000000000815250905090565b5f61086361085c6116ea565b84846116f1565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f66470de4df820000905090565b5f6108ac8484846118b4565b610969846108b86116ea565b61096485604051806060016040528060258152602001613c9c6025913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61091b6116ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121149092919063ffffffff16565b6116f1565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109af6116ea565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a329061329c565b60405180910390fd5b5f8210158015610a4c575060148211155b610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8290613357565b60405180910390fd5b5f8110158015610a9c575060288111155b610adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad2906133e5565b60405180910390fd5b8160098190555080600b819055505050565b610af56116ea565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b789061329c565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610be06116ea565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c639061329c565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cc96116ea565b73ffffffffffffffffffffffffffffffffffffffff161480610d3e575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d266116ea565b73ffffffffffffffffffffffffffffffffffffffff16145b610d46575f80fd5b5f479050610d5381612176565b50565b5f610d9d60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121de565b9050919050565b610dac6116ea565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2f9061329c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610f3c6116ea565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf9061329c565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600781526020017f5072656469414900000000000000000000000000000000000000000000000000815250905090565b6110306116ea565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b39061329c565b60405180910390fd5b8060188190555050565b5f6110d96110d26116ea565b84846118b4565b6001905092915050565b6110eb6116ea565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116e9061329c565b60405180910390fd5b826016819055508160195f6101000a81548160ff02191690831515021790555080601960026101000a81548160ff021916908315150217905550505050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112136116ea565b73ffffffffffffffffffffffffffffffffffffffff161480611288575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112706116ea565b73ffffffffffffffffffffffffffffffffffffffff16145b611290575f80fd5b5f61129a30610d56565b90506112a58161224a565b50565b6112b06116ea565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461133c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113339061329c565b60405180910390fd5b5f5b838390508110156113d1578160055f8686858181106113605761135f6132ba565b5b90506020020160208101906113759190613063565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061133e565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6114616116ea565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e49061329c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361155b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155290613473565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61161e6116ea565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a19061329c565b60405180910390fd5b8260178190555081601960016101000a81548160ff02191690831515021790555080601960036101000a81548160ff021916908315150217905550505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361175f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611756906134db565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c490613543565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118a79190612f60565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611922576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611919906135ab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198790613613565b60405180910390fd5b5f81116119d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c99061367b565b60405180910390fd5b6119da610f0d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a485750611a18610f0d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e2157601560149054906101000a900460ff16611ad757611a69610f0d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acd90613709565b60405180910390fd5b5b601654811115611b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1390613771565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611bba575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf0906137d9565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ca55760175481611c5a84610d56565b611c649190613824565b10611ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9b906138a1565b60405180910390fd5b5b5f611caf30610d56565b90505f60185482101590506016548210611cc95760165491505b808015611ce1575060158054906101000a900460ff16155b8015611d3a575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d525750601560169054906101000a900460ff165b8015611da5575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611df8575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e1e57611e068261224a565b5f4790505f811115611e1c57611e1b47612176565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611ec1575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611f72575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f71575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611f7f575f9050612102565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612028575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561204057600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120e9575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561210157600a54600c81905550600b54600d819055505b5b61210e848484846124b3565b50505050565b5f83831115829061215b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121529190612e19565b60405180910390fd5b505f838561216991906138bf565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156121da573d5f803e3d5ffd5b5050565b5f600654821115612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221b90613962565b60405180910390fd5b5f61222d6124e0565b9050612242818461250990919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156122805761227f612bc2565b5b6040519080825280602002602001820160405280156122ae5781602001602082028036833780820191505090505b50905030815f815181106122c5576122c46132ba565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612369573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061238d9190613994565b816001815181106123a1576123a06132ba565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124073060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846116f1565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612469959493929190613aaf565b5f604051808303815f87803b158015612480575f80fd5b505af1158015612492573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b806124c1576124c0612552565b5b6124cc84848461258b565b806124da576124d961274b565b5b50505050565b5f805f6124eb61275f565b91509150612502818361250990919063ffffffff16565b9250505090565b5f61254a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127b8565b905092915050565b5f600c5414801561256457505f600d54145b61258957600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061259a87612819565b9550955095509550955095506125f68660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461287990919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126878560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128c290919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126d18161291f565b6126db84836129d6565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127389190612f60565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f66470de4df820000905061278e66470de4df82000060065461250990919063ffffffff16565b8210156127ab5760065466470de4df8200009350935050506127b4565b81819350935050505b9091565b5f80831182906127fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f59190612e19565b60405180910390fd5b505f838561280c9190613b34565b9050809150509392505050565b5f805f805f805f805f6128318a600c54600d54612a10565b9250925092505f6128406124e0565b90505f805f6128518e878787612aa2565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f6128ba83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612114565b905092915050565b5f8082846128d09190613824565b905083811015612915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290c90613bae565b60405180910390fd5b8091505092915050565b5f6129286124e0565b90505f61293e8284612b2690919063ffffffff16565b90506129908160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128c290919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6129eb8260065461287990919063ffffffff16565b600681905550612a06816007546128c290919063ffffffff16565b6007819055505050565b5f805f80612a3a6064612a2c888a612b2690919063ffffffff16565b61250990919063ffffffff16565b90505f612a636064612a55888b612b2690919063ffffffff16565b61250990919063ffffffff16565b90505f612a8b82612a7d858c61287990919063ffffffff16565b61287990919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612ab98589612b2690919063ffffffff16565b90505f612acf8689612b2690919063ffffffff16565b90505f612ae58789612b2690919063ffffffff16565b90505f612b0d82612aff858761287990919063ffffffff16565b61287990919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612b36575f9050612b97565b5f8284612b439190613bcc565b9050828482612b529190613b34565b14612b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8990613c7d565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612bf882612bb2565b810181811067ffffffffffffffff82111715612c1757612c16612bc2565b5b80604052505050565b5f612c29612b9d565b9050612c358282612bef565b919050565b5f67ffffffffffffffff821115612c5457612c53612bc2565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c9282612c69565b9050919050565b612ca281612c88565b8114612cac575f80fd5b50565b5f81359050612cbd81612c99565b92915050565b5f612cd5612cd084612c3a565b612c20565b90508083825260208201905060208402830185811115612cf857612cf7612c65565b5b835b81811015612d215780612d0d8882612caf565b845260208401935050602081019050612cfa565b5050509392505050565b5f82601f830112612d3f57612d3e612bae565b5b8135612d4f848260208601612cc3565b91505092915050565b5f60208284031215612d6d57612d6c612ba6565b5b5f82013567ffffffffffffffff811115612d8a57612d89612baa565b5b612d9684828501612d2b565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612dd6578082015181840152602081019050612dbb565b5f8484015250505050565b5f612deb82612d9f565b612df58185612da9565b9350612e05818560208601612db9565b612e0e81612bb2565b840191505092915050565b5f6020820190508181035f830152612e318184612de1565b905092915050565b5f819050919050565b612e4b81612e39565b8114612e55575f80fd5b50565b5f81359050612e6681612e42565b92915050565b5f8060408385031215612e8257612e81612ba6565b5b5f612e8f85828601612caf565b9250506020612ea085828601612e58565b9150509250929050565b5f8115159050919050565b612ebe81612eaa565b82525050565b5f602082019050612ed75f830184612eb5565b92915050565b5f819050919050565b5f612f00612efb612ef684612c69565b612edd565b612c69565b9050919050565b5f612f1182612ee6565b9050919050565b5f612f2282612f07565b9050919050565b612f3281612f18565b82525050565b5f602082019050612f4b5f830184612f29565b92915050565b612f5a81612e39565b82525050565b5f602082019050612f735f830184612f51565b92915050565b5f805f60608486031215612f9057612f8f612ba6565b5b5f612f9d86828701612caf565b9350506020612fae86828701612caf565b9250506040612fbf86828701612e58565b9150509250925092565b5f60ff82169050919050565b612fde81612fc9565b82525050565b5f602082019050612ff75f830184612fd5565b92915050565b61300681612c88565b82525050565b5f60208201905061301f5f830184612ffd565b92915050565b5f806040838503121561303b5761303a612ba6565b5b5f61304885828601612e58565b925050602061305985828601612e58565b9150509250929050565b5f6020828403121561307857613077612ba6565b5b5f61308584828501612caf565b91505092915050565b61309781612eaa565b81146130a1575f80fd5b50565b5f813590506130b28161308e565b92915050565b5f602082840312156130cd576130cc612ba6565b5b5f6130da848285016130a4565b91505092915050565b5f602082840312156130f8576130f7612ba6565b5b5f61310584828501612e58565b91505092915050565b5f805f6060848603121561312557613124612ba6565b5b5f61313286828701612e58565b9350506020613143868287016130a4565b9250506040613154868287016130a4565b9150509250925092565b5f80fd5b5f8083601f84011261317757613176612bae565b5b8235905067ffffffffffffffff8111156131945761319361315e565b5b6020830191508360208202830111156131b0576131af612c65565b5b9250929050565b5f805f604084860312156131ce576131cd612ba6565b5b5f84013567ffffffffffffffff8111156131eb576131ea612baa565b5b6131f786828701613162565b9350935050602061320a868287016130a4565b9150509250925092565b5f806040838503121561322a57613229612ba6565b5b5f61323785828601612caf565b925050602061324885828601612caf565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613286602083612da9565b915061329182613252565b602082019050919050565b5f6020820190508181035f8301526132b38161327a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f42757920746178206d757374206265206265747765656e20302520616e6420325f8201527f3025000000000000000000000000000000000000000000000000000000000000602082015250565b5f613341602283612da9565b915061334c826132e7565b604082019050919050565b5f6020820190508181035f83015261336e81613335565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e64205f8201527f3430250000000000000000000000000000000000000000000000000000000000602082015250565b5f6133cf602383612da9565b91506133da82613375565b604082019050919050565b5f6020820190508181035f8301526133fc816133c3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61345d602683612da9565b915061346882613403565b604082019050919050565b5f6020820190508181035f83015261348a81613451565b9050919050565b7f43616e277420617070726f76652066726f6d207a65726f2061646472657373005f82015250565b5f6134c5601f83612da9565b91506134d082613491565b602082019050919050565b5f6020820190508181035f8301526134f2816134b9565b9050919050565b7f43616e277420617070726f766520746f207a65726f20616464726573730000005f82015250565b5f61352d601d83612da9565b9150613538826134f9565b602082019050919050565b5f6020820190508181035f83015261355a81613521565b9050919050565b7f43616e74207472616e736665722066726f6d2061646472657373207a65726f005f82015250565b5f613595601f83612da9565b91506135a082613561565b602082019050919050565b5f6020820190508181035f8301526135c281613589565b9050919050565b7f43616e74207472616e7366657220746f2061646472657373207a65726f0000005f82015250565b5f6135fd601d83612da9565b9150613608826135c9565b602082019050919050565b5f6020820190508181035f83015261362a816135f1565b9050919050565b7f416d6f756e742073686f756c642062652061626f7665207a65726f00000000005f82015250565b5f613665601b83612da9565b915061367082613631565b602082019050919050565b5f6020820190508181035f83015261369281613659565b9050919050565b7f4f6e6c79206f776e65722063616e207472616465206265666f726520747261645f8201527f696e672061637469766174696f6e000000000000000000000000000000000000602082015250565b5f6136f3602e83612da9565b91506136fe82613699565b604082019050919050565b5f6020820190508181035f830152613720816136e7565b9050919050565b7f4578636565646564206d6178207472616e73616374696f6e206c696d697400005f82015250565b5f61375b601e83612da9565b915061376682613727565b602082019050919050565b5f6020820190508181035f8301526137888161374f565b9050919050565b7f54686973206163636f756e74206973206f6e2074686520626c61636b6c6973745f82015250565b5f6137c3602083612da9565b91506137ce8261378f565b602082019050919050565b5f6020820190508181035f8301526137f0816137b7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61382e82612e39565b915061383983612e39565b9250828201905080821115613851576138506137f7565b5b92915050565b7f45786365656473206d61782077616c6c65742062616c616e63650000000000005f82015250565b5f61388b601a83612da9565b915061389682613857565b602082019050919050565b5f6020820190508181035f8301526138b88161387f565b9050919050565b5f6138c982612e39565b91506138d483612e39565b92508282039050818111156138ec576138eb6137f7565b5b92915050565b7f416d6f756e742068617320746f206265206c657373207468616e20746f74616c5f8201527f207265666c656374696f6e730000000000000000000000000000000000000000602082015250565b5f61394c602c83612da9565b9150613957826138f2565b604082019050919050565b5f6020820190508181035f83015261397981613940565b9050919050565b5f8151905061398e81612c99565b92915050565b5f602082840312156139a9576139a8612ba6565b5b5f6139b684828501613980565b91505092915050565b5f819050919050565b5f6139e26139dd6139d8846139bf565b612edd565b612e39565b9050919050565b6139f2816139c8565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613a2a81612c88565b82525050565b5f613a3b8383613a21565b60208301905092915050565b5f602082019050919050565b5f613a5d826139f8565b613a678185613a02565b9350613a7283613a12565b805f5b83811015613aa2578151613a898882613a30565b9750613a9483613a47565b925050600181019050613a75565b5085935050505092915050565b5f60a082019050613ac25f830188612f51565b613acf60208301876139e9565b8181036040830152613ae18186613a53565b9050613af06060830185612ffd565b613afd6080830184612f51565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b3e82612e39565b9150613b4983612e39565b925082613b5957613b58613b07565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613b98601b83612da9565b9150613ba382613b64565b602082019050919050565b5f6020820190508181035f830152613bc581613b8c565b9050919050565b5f613bd682612e39565b9150613be183612e39565b9250828202613bef81612e39565b91508282048414831517613c0657613c056137f7565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c67602183612da9565b9150613c7282613c0d565b604082019050919050565b5f6020820190508181035f830152613c9481613c5b565b905091905056fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d950028afb35c37ae70be167a10d445a9c4c40729c58dab53bdf40c07d2c8c1964736f6c63430008180033
Deployed Bytecode
0x6080604052600436106101cf575f3560e01c80637d1db4a5116100f6578063a9059cbb11610094578063c492f04611610063578063c492f04614610640578063dd62ed3e14610668578063f2fde38b146106a4578063fc7d9469146106cc576101d6565b8063a9059cbb1461058a578063bd6bba91146105c6578063bfd79284146105ee578063c3c8cd801461062a576101d6565b80638f70ccf7116100d05780638f70ccf7146104e65780638f9a55c01461050e57806395d89b411461053857806398a5c31514610562576101d6565b80637d1db4a5146104565780637f2feddc146104805780638da5cb5b146104bc576101d6565b8063313ce5671161016e5780636d8aa8f81161013d5780636d8aa8f8146103c65780636fc3eaec146103ee57806370a0823114610404578063715018a614610440576101d6565b8063313ce5671461032257806349bd5a5e1461034c57806352f7c988146103765780636b9990531461039e576101d6565b80631694505e116101aa5780631694505e1461026857806318160ddd1461029257806323b872dd146102bc5780632fd689e3146102f8576101d6565b8062b8cf2a146101da57806306fdde0314610202578063095ea7b31461022c576101d6565b366101d657005b5f80fd5b3480156101e5575f80fd5b5061020060048036038101906101fb9190612d58565b6106f4565b005b34801561020d575f80fd5b50610216610813565b6040516102239190612e19565b60405180910390f35b348015610237575f80fd5b50610252600480360381019061024d9190612e6c565b610850565b60405161025f9190612ec4565b60405180910390f35b348015610273575f80fd5b5061027c61086d565b6040516102899190612f38565b60405180910390f35b34801561029d575f80fd5b506102a6610892565b6040516102b39190612f60565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd9190612f79565b6108a0565b6040516102ef9190612ec4565b60405180910390f35b348015610303575f80fd5b5061030c610974565b6040516103199190612f60565b60405180910390f35b34801561032d575f80fd5b5061033661097a565b6040516103439190612fe4565b60405180910390f35b348015610357575f80fd5b50610360610982565b60405161036d919061300c565b60405180910390f35b348015610381575f80fd5b5061039c60048036038101906103979190613025565b6109a7565b005b3480156103a9575f80fd5b506103c460048036038101906103bf9190613063565b610aed565b005b3480156103d1575f80fd5b506103ec60048036038101906103e791906130b8565b610bd8565b005b3480156103f9575f80fd5b50610402610c89565b005b34801561040f575f80fd5b5061042a60048036038101906104259190613063565b610d56565b6040516104379190612f60565b60405180910390f35b34801561044b575f80fd5b50610454610da4565b005b348015610461575f80fd5b5061046a610ef2565b6040516104779190612f60565b60405180910390f35b34801561048b575f80fd5b506104a660048036038101906104a19190613063565b610ef8565b6040516104b39190612f60565b60405180910390f35b3480156104c7575f80fd5b506104d0610f0d565b6040516104dd919061300c565b60405180910390f35b3480156104f1575f80fd5b5061050c600480360381019061050791906130b8565b610f34565b005b348015610519575f80fd5b50610522610fe5565b60405161052f9190612f60565b60405180910390f35b348015610543575f80fd5b5061054c610feb565b6040516105599190612e19565b60405180910390f35b34801561056d575f80fd5b50610588600480360381019061058391906130e3565b611028565b005b348015610595575f80fd5b506105b060048036038101906105ab9190612e6c565b6110c6565b6040516105bd9190612ec4565b60405180910390f35b3480156105d1575f80fd5b506105ec60048036038101906105e7919061310e565b6110e3565b005b3480156105f9575f80fd5b50610614600480360381019061060f9190613063565b6111b6565b6040516106219190612ec4565b60405180910390f35b348015610635575f80fd5b5061063e6111d3565b005b34801561064b575f80fd5b50610666600480360381019061066191906131b7565b6112a8565b005b348015610673575f80fd5b5061068e60048036038101906106899190613214565b6113d7565b60405161069b9190612f60565b60405180910390f35b3480156106af575f80fd5b506106ca60048036038101906106c59190613063565b611459565b005b3480156106d7575f80fd5b506106f260048036038101906106ed919061310e565b611616565b005b6106fc6116ea565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f9061329c565b60405180910390fd5b5f5b815181101561080f57600160105f8484815181106107ab576107aa6132ba565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061078a565b5050565b60606040518060400160405280600a81526020017f507265646963746f414900000000000000000000000000000000000000000000815250905090565b5f61086361085c6116ea565b84846116f1565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f66470de4df820000905090565b5f6108ac8484846118b4565b610969846108b86116ea565b61096485604051806060016040528060258152602001613c9c6025913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61091b6116ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121149092919063ffffffff16565b6116f1565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109af6116ea565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a329061329c565b60405180910390fd5b5f8210158015610a4c575060148211155b610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8290613357565b60405180910390fd5b5f8110158015610a9c575060288111155b610adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad2906133e5565b60405180910390fd5b8160098190555080600b819055505050565b610af56116ea565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b789061329c565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610be06116ea565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c639061329c565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cc96116ea565b73ffffffffffffffffffffffffffffffffffffffff161480610d3e575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d266116ea565b73ffffffffffffffffffffffffffffffffffffffff16145b610d46575f80fd5b5f479050610d5381612176565b50565b5f610d9d60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121de565b9050919050565b610dac6116ea565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2f9061329c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610f3c6116ea565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf9061329c565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600781526020017f5072656469414900000000000000000000000000000000000000000000000000815250905090565b6110306116ea565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b39061329c565b60405180910390fd5b8060188190555050565b5f6110d96110d26116ea565b84846118b4565b6001905092915050565b6110eb6116ea565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116e9061329c565b60405180910390fd5b826016819055508160195f6101000a81548160ff02191690831515021790555080601960026101000a81548160ff021916908315150217905550505050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112136116ea565b73ffffffffffffffffffffffffffffffffffffffff161480611288575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112706116ea565b73ffffffffffffffffffffffffffffffffffffffff16145b611290575f80fd5b5f61129a30610d56565b90506112a58161224a565b50565b6112b06116ea565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461133c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113339061329c565b60405180910390fd5b5f5b838390508110156113d1578160055f8686858181106113605761135f6132ba565b5b90506020020160208101906113759190613063565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061133e565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6114616116ea565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e49061329c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361155b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155290613473565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61161e6116ea565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a19061329c565b60405180910390fd5b8260178190555081601960016101000a81548160ff02191690831515021790555080601960036101000a81548160ff021916908315150217905550505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361175f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611756906134db565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c490613543565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118a79190612f60565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611922576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611919906135ab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198790613613565b60405180910390fd5b5f81116119d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c99061367b565b60405180910390fd5b6119da610f0d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a485750611a18610f0d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e2157601560149054906101000a900460ff16611ad757611a69610f0d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acd90613709565b60405180910390fd5b5b601654811115611b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1390613771565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611bba575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf0906137d9565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ca55760175481611c5a84610d56565b611c649190613824565b10611ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9b906138a1565b60405180910390fd5b5b5f611caf30610d56565b90505f60185482101590506016548210611cc95760165491505b808015611ce1575060158054906101000a900460ff16155b8015611d3a575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d525750601560169054906101000a900460ff165b8015611da5575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611df8575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e1e57611e068261224a565b5f4790505f811115611e1c57611e1b47612176565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611ec1575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611f72575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f71575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611f7f575f9050612102565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612028575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561204057600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120e9575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561210157600a54600c81905550600b54600d819055505b5b61210e848484846124b3565b50505050565b5f83831115829061215b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121529190612e19565b60405180910390fd5b505f838561216991906138bf565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156121da573d5f803e3d5ffd5b5050565b5f600654821115612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221b90613962565b60405180910390fd5b5f61222d6124e0565b9050612242818461250990919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156122805761227f612bc2565b5b6040519080825280602002602001820160405280156122ae5781602001602082028036833780820191505090505b50905030815f815181106122c5576122c46132ba565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612369573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061238d9190613994565b816001815181106123a1576123a06132ba565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124073060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846116f1565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612469959493929190613aaf565b5f604051808303815f87803b158015612480575f80fd5b505af1158015612492573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b806124c1576124c0612552565b5b6124cc84848461258b565b806124da576124d961274b565b5b50505050565b5f805f6124eb61275f565b91509150612502818361250990919063ffffffff16565b9250505090565b5f61254a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127b8565b905092915050565b5f600c5414801561256457505f600d54145b61258957600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061259a87612819565b9550955095509550955095506125f68660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461287990919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126878560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128c290919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126d18161291f565b6126db84836129d6565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127389190612f60565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f66470de4df820000905061278e66470de4df82000060065461250990919063ffffffff16565b8210156127ab5760065466470de4df8200009350935050506127b4565b81819350935050505b9091565b5f80831182906127fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f59190612e19565b60405180910390fd5b505f838561280c9190613b34565b9050809150509392505050565b5f805f805f805f805f6128318a600c54600d54612a10565b9250925092505f6128406124e0565b90505f805f6128518e878787612aa2565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f6128ba83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612114565b905092915050565b5f8082846128d09190613824565b905083811015612915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290c90613bae565b60405180910390fd5b8091505092915050565b5f6129286124e0565b90505f61293e8284612b2690919063ffffffff16565b90506129908160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128c290919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6129eb8260065461287990919063ffffffff16565b600681905550612a06816007546128c290919063ffffffff16565b6007819055505050565b5f805f80612a3a6064612a2c888a612b2690919063ffffffff16565b61250990919063ffffffff16565b90505f612a636064612a55888b612b2690919063ffffffff16565b61250990919063ffffffff16565b90505f612a8b82612a7d858c61287990919063ffffffff16565b61287990919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612ab98589612b2690919063ffffffff16565b90505f612acf8689612b2690919063ffffffff16565b90505f612ae58789612b2690919063ffffffff16565b90505f612b0d82612aff858761287990919063ffffffff16565b61287990919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612b36575f9050612b97565b5f8284612b439190613bcc565b9050828482612b529190613b34565b14612b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8990613c7d565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612bf882612bb2565b810181811067ffffffffffffffff82111715612c1757612c16612bc2565b5b80604052505050565b5f612c29612b9d565b9050612c358282612bef565b919050565b5f67ffffffffffffffff821115612c5457612c53612bc2565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c9282612c69565b9050919050565b612ca281612c88565b8114612cac575f80fd5b50565b5f81359050612cbd81612c99565b92915050565b5f612cd5612cd084612c3a565b612c20565b90508083825260208201905060208402830185811115612cf857612cf7612c65565b5b835b81811015612d215780612d0d8882612caf565b845260208401935050602081019050612cfa565b5050509392505050565b5f82601f830112612d3f57612d3e612bae565b5b8135612d4f848260208601612cc3565b91505092915050565b5f60208284031215612d6d57612d6c612ba6565b5b5f82013567ffffffffffffffff811115612d8a57612d89612baa565b5b612d9684828501612d2b565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612dd6578082015181840152602081019050612dbb565b5f8484015250505050565b5f612deb82612d9f565b612df58185612da9565b9350612e05818560208601612db9565b612e0e81612bb2565b840191505092915050565b5f6020820190508181035f830152612e318184612de1565b905092915050565b5f819050919050565b612e4b81612e39565b8114612e55575f80fd5b50565b5f81359050612e6681612e42565b92915050565b5f8060408385031215612e8257612e81612ba6565b5b5f612e8f85828601612caf565b9250506020612ea085828601612e58565b9150509250929050565b5f8115159050919050565b612ebe81612eaa565b82525050565b5f602082019050612ed75f830184612eb5565b92915050565b5f819050919050565b5f612f00612efb612ef684612c69565b612edd565b612c69565b9050919050565b5f612f1182612ee6565b9050919050565b5f612f2282612f07565b9050919050565b612f3281612f18565b82525050565b5f602082019050612f4b5f830184612f29565b92915050565b612f5a81612e39565b82525050565b5f602082019050612f735f830184612f51565b92915050565b5f805f60608486031215612f9057612f8f612ba6565b5b5f612f9d86828701612caf565b9350506020612fae86828701612caf565b9250506040612fbf86828701612e58565b9150509250925092565b5f60ff82169050919050565b612fde81612fc9565b82525050565b5f602082019050612ff75f830184612fd5565b92915050565b61300681612c88565b82525050565b5f60208201905061301f5f830184612ffd565b92915050565b5f806040838503121561303b5761303a612ba6565b5b5f61304885828601612e58565b925050602061305985828601612e58565b9150509250929050565b5f6020828403121561307857613077612ba6565b5b5f61308584828501612caf565b91505092915050565b61309781612eaa565b81146130a1575f80fd5b50565b5f813590506130b28161308e565b92915050565b5f602082840312156130cd576130cc612ba6565b5b5f6130da848285016130a4565b91505092915050565b5f602082840312156130f8576130f7612ba6565b5b5f61310584828501612e58565b91505092915050565b5f805f6060848603121561312557613124612ba6565b5b5f61313286828701612e58565b9350506020613143868287016130a4565b9250506040613154868287016130a4565b9150509250925092565b5f80fd5b5f8083601f84011261317757613176612bae565b5b8235905067ffffffffffffffff8111156131945761319361315e565b5b6020830191508360208202830111156131b0576131af612c65565b5b9250929050565b5f805f604084860312156131ce576131cd612ba6565b5b5f84013567ffffffffffffffff8111156131eb576131ea612baa565b5b6131f786828701613162565b9350935050602061320a868287016130a4565b9150509250925092565b5f806040838503121561322a57613229612ba6565b5b5f61323785828601612caf565b925050602061324885828601612caf565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613286602083612da9565b915061329182613252565b602082019050919050565b5f6020820190508181035f8301526132b38161327a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f42757920746178206d757374206265206265747765656e20302520616e6420325f8201527f3025000000000000000000000000000000000000000000000000000000000000602082015250565b5f613341602283612da9565b915061334c826132e7565b604082019050919050565b5f6020820190508181035f83015261336e81613335565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e64205f8201527f3430250000000000000000000000000000000000000000000000000000000000602082015250565b5f6133cf602383612da9565b91506133da82613375565b604082019050919050565b5f6020820190508181035f8301526133fc816133c3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61345d602683612da9565b915061346882613403565b604082019050919050565b5f6020820190508181035f83015261348a81613451565b9050919050565b7f43616e277420617070726f76652066726f6d207a65726f2061646472657373005f82015250565b5f6134c5601f83612da9565b91506134d082613491565b602082019050919050565b5f6020820190508181035f8301526134f2816134b9565b9050919050565b7f43616e277420617070726f766520746f207a65726f20616464726573730000005f82015250565b5f61352d601d83612da9565b9150613538826134f9565b602082019050919050565b5f6020820190508181035f83015261355a81613521565b9050919050565b7f43616e74207472616e736665722066726f6d2061646472657373207a65726f005f82015250565b5f613595601f83612da9565b91506135a082613561565b602082019050919050565b5f6020820190508181035f8301526135c281613589565b9050919050565b7f43616e74207472616e7366657220746f2061646472657373207a65726f0000005f82015250565b5f6135fd601d83612da9565b9150613608826135c9565b602082019050919050565b5f6020820190508181035f83015261362a816135f1565b9050919050565b7f416d6f756e742073686f756c642062652061626f7665207a65726f00000000005f82015250565b5f613665601b83612da9565b915061367082613631565b602082019050919050565b5f6020820190508181035f83015261369281613659565b9050919050565b7f4f6e6c79206f776e65722063616e207472616465206265666f726520747261645f8201527f696e672061637469766174696f6e000000000000000000000000000000000000602082015250565b5f6136f3602e83612da9565b91506136fe82613699565b604082019050919050565b5f6020820190508181035f830152613720816136e7565b9050919050565b7f4578636565646564206d6178207472616e73616374696f6e206c696d697400005f82015250565b5f61375b601e83612da9565b915061376682613727565b602082019050919050565b5f6020820190508181035f8301526137888161374f565b9050919050565b7f54686973206163636f756e74206973206f6e2074686520626c61636b6c6973745f82015250565b5f6137c3602083612da9565b91506137ce8261378f565b602082019050919050565b5f6020820190508181035f8301526137f0816137b7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61382e82612e39565b915061383983612e39565b9250828201905080821115613851576138506137f7565b5b92915050565b7f45786365656473206d61782077616c6c65742062616c616e63650000000000005f82015250565b5f61388b601a83612da9565b915061389682613857565b602082019050919050565b5f6020820190508181035f8301526138b88161387f565b9050919050565b5f6138c982612e39565b91506138d483612e39565b92508282039050818111156138ec576138eb6137f7565b5b92915050565b7f416d6f756e742068617320746f206265206c657373207468616e20746f74616c5f8201527f207265666c656374696f6e730000000000000000000000000000000000000000602082015250565b5f61394c602c83612da9565b9150613957826138f2565b604082019050919050565b5f6020820190508181035f83015261397981613940565b9050919050565b5f8151905061398e81612c99565b92915050565b5f602082840312156139a9576139a8612ba6565b5b5f6139b684828501613980565b91505092915050565b5f819050919050565b5f6139e26139dd6139d8846139bf565b612edd565b612e39565b9050919050565b6139f2816139c8565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613a2a81612c88565b82525050565b5f613a3b8383613a21565b60208301905092915050565b5f602082019050919050565b5f613a5d826139f8565b613a678185613a02565b9350613a7283613a12565b805f5b83811015613aa2578151613a898882613a30565b9750613a9483613a47565b925050600181019050613a75565b5085935050505092915050565b5f60a082019050613ac25f830188612f51565b613acf60208301876139e9565b8181036040830152613ae18186613a53565b9050613af06060830185612ffd565b613afd6080830184612f51565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b3e82612e39565b9150613b4983612e39565b925082613b5957613b58613b07565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613b98601b83612da9565b9150613ba382613b64565b602082019050919050565b5f6020820190508181035f830152613bc581613b8c565b9050919050565b5f613bd682612e39565b9150613be183612e39565b9250828202613bef81612e39565b91508282048414831517613c0657613c056137f7565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c67602183612da9565b9150613c7282613c0d565b604082019050919050565b5f6020820190508181035f830152613c9481613c5b565b905091905056fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d950028afb35c37ae70be167a10d445a9c4c40729c58dab53bdf40c07d2c8c1964736f6c63430008180033
Deployed Bytecode Sourcemap
4614:13935:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13424:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7280:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8212:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5975:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7560:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8414:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6273:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7468:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6023:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17111:357;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13602:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17713:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13180:235;;;;;;;;;;;;;:::i;:::-;;7664:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2087:148;;;;;;;;;;;;;:::i;:::-;;6167:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5714:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1871:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12825:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6219:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7372:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17521:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7811:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17854:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5676:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12935:236;;;;;;;;;;;;;:::i;:::-;;18310:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8019:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2244:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18079:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13424:169;2009:12;:10;:12::i;:::-;1999:22;;:6;;;;;;;;;;:22;;;1991:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13500:9:::1;13495:91;13519:5;:12;13515:1;:16;13495:91;;;13570:4;13553;:14;13558:5;13564:1;13558:8;;;;;;;;:::i;:::-;;;;;;;;13553:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13533:3;;;;;;;13495:91;;;;13424:169:::0;:::o;7280:83::-;7317:13;7350:5;;;;;;;;;;;;;;;;;7343:12;;7280:83;:::o;8212:193::-;8314:4;8336:39;8345:12;:10;:12::i;:::-;8359:7;8368:6;8336:8;:39::i;:::-;8393:4;8386:11;;8212:193;;;;:::o;5975:41::-;;;;;;;;;;;;;:::o;7560:95::-;7613:7;5171:16;7633:14;;7560:95;:::o;8414:443::-;8546:4;8563:36;8573:6;8581:9;8592:6;8563:9;:36::i;:::-;8610:217;8633:6;8654:12;:10;:12::i;:::-;8681:135;8737:6;8681:135;;;;;;;;;;;;;;;;;:11;:19;8693:6;8681:19;;;;;;;;;;;;;;;:33;8701:12;:10;:12::i;:::-;8681:33;;;;;;;;;;;;;;;;:37;;:135;;;;;:::i;:::-;8610:8;:217::i;:::-;8845:4;8838:11;;8414:443;;;;;:::o;6273:47::-;;;;:::o;7468:83::-;7509:5;4844:1;7527:16;;7468:83;:::o;6023:28::-;;;;;;;;;;;;;:::o;17111:357::-;2009:12;:10;:12::i;:::-;1999:22;;:6;;;;;;;;;;:22;;;1991:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17221:1:::1;17206:11;:16;;:37;;;;;17241:2;17226:11;:17;;17206:37;17198:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;17317:1;17301:12;:17;;:39;;;;;17338:2;17322:12;:18;;17301:39;17293:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;17408:11;17393:12;:26;;;;17446:12;17430:13;:28;;;;17111:357:::0;;:::o;13602:92::-;2009:12;:10;:12::i;:::-;1999:22;;:6;;;;;;;;;;:22;;;1991:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13681:5:::1;13666:4;:12;13671:6;13666:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13602:92:::0;:::o;17713:101::-;2009:12;:10;:12::i;:::-;1999:22;;:6;;;;;;;;;;:22;;;1991:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17794:12:::1;17780:11;;:26;;;;;;;;;;;;;;;;;;17713:101:::0;:::o;13180:235::-;13246:19;;;;;;;;;;;13230:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13285:17;;;;;;;;;;;13269:33;;:12;:10;:12::i;:::-;:33;;;13230:72;13222:81;;;;;;13314:26;13343:21;13314:50;;13375:32;13388:18;13375:12;:32::i;:::-;13211:204;13180:235::o;7664:138::-;7730:7;7757:37;7777:7;:16;7785:7;7777:16;;;;;;;;;;;;;;;;7757:19;:37::i;:::-;7750:44;;7664:138;;;:::o;2087:148::-;2009:12;:10;:12::i;:::-;1999:22;;:6;;;;;;;;;;:22;;;1991:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2194:1:::1;2157:40;;2178:6;::::0;::::1;;;;;;;;2157:40;;;;;;;;;;;;2225:1;2208:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2087:148::o:0;6167:44::-;;;;:::o;5714:43::-;;;;;;;;;;;;;;;;;:::o;1871:79::-;1909:7;1936:6;;;;;;;;;;;1929:13;;1871:79;:::o;12825:101::-;2009:12;:10;:12::i;:::-;1999:22;;:6;;;;;;;;;;:22;;;1991:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12906:12:::1;12892:11;;:26;;;;;;;;;;;;;;;;;;12825:101:::0;:::o;6219:46::-;;;;:::o;7372:87::-;7411:13;7444:7;;;;;;;;;;;;;;;;;7437:14;;7372:87;:::o;17521:139::-;2009:12;:10;:12::i;:::-;1999:22;;:6;;;;;;;;;;:22;;;1991:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17634:18:::1;17612:19;:40;;;;17521:139:::0;:::o;7811:199::-;7916:4;7938:42;7948:12;:10;:12::i;:::-;7962:9;7973:6;7938:9;:42::i;:::-;7998:4;7991:11;;7811:199;;;;:::o;17854:216::-;2009:12;:10;:12::i;:::-;1999:22;;:6;;;;;;;;;;:22;;;1991:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17975:11:::1;17960:12;:26;;;;18010:6;18000:7;;:16;;;;;;;;;;;;;;;;;;18043:9;18030:10;;:22;;;;;;;;;;;;;;;;;;17854:216:::0;;;:::o;5676:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12935:236::-;13001:19;;;;;;;;;;;12985:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13040:17;;;;;;;;;;;13024:33;;:12;:10;:12::i;:::-;:33;;;12985:72;12977:81;;;;;;13069:23;13095:24;13113:4;13095:9;:24::i;:::-;13069:50;;13130:33;13147:15;13130:16;:33::i;:::-;12966:205;12935:236::o;18310:234::-;2009:12;:10;:12::i;:::-;1999:22;;:6;;;;;;;;;;:22;;;1991:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18427:9:::1;18423:114;18446:8;;:15;;18442:1;:19;18423:114;;;18517:8;18483:18;:31;18502:8;;18511:1;18502:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18483:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18463:3;;;;;;;18423:114;;;;18310:234:::0;;;:::o;8019:184::-;8136:7;8168:11;:18;8180:5;8168:18;;;;;;;;;;;;;;;:27;8187:7;8168:27;;;;;;;;;;;;;;;;8161:34;;8019:184;;;;:::o;2244:244::-;2009:12;:10;:12::i;:::-;1999:22;;:6;;;;;;;;;;:22;;;1991:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2353:1:::1;2333:22;;:8;:22;;::::0;2325:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2443:8;2414:38;;2435:6;::::0;::::1;;;;;;;;2414:38;;;;;;;;;;;;2472:8;2463:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2244:244:::0;:::o;18079:222::-;2009:12;:10;:12::i;:::-;1999:22;;:6;;;;;;;;;;:22;;;1991:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18208:13:::1;18191:14;:30;;;;18245:9;18232:10;;:22;;;;;;;;;;;;;;;;;;18281:12;18265:13;;:28;;;;;;;;;;;;;;;;;;18079:222:::0;;;:::o;620:98::-;673:7;700:10;693:17;;620:98;:::o;9556:361::-;9700:1;9683:19;;:5;:19;;;9675:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9776:1;9757:21;;:7;:21;;;9749:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9855:6;9825:11;:18;9837:5;9825:18;;;;;;;;;;;;;;;:27;9844:7;9825:27;;;;;;;;;;;;;;;:36;;;;9893:7;9877:32;;9886:5;9877:32;;;9902:6;9877:32;;;;;;:::i;:::-;;;;;;;;9556:361;;;:::o;9926:2290::-;10064:1;10048:18;;:4;:18;;;10040:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10135:1;10121:16;;:2;:16;;;10113:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;10199:1;10190:6;:10;10182:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;10258:7;:5;:7::i;:::-;10250:15;;:4;:15;;;;:32;;;;;10275:7;:5;:7::i;:::-;10269:13;;:2;:13;;;;10250:32;10246:1238;;;10340:11;;;;;;;;;;;10335:127;;10388:7;:5;:7::i;:::-;10380:15;;:4;:15;;;10372:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;10335:127;10497:12;;10487:6;:22;;10479:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10568:4;:10;10573:4;10568:10;;;;;;;;;;;;;;;;;;;;;;;;;10567:11;:24;;;;;10583:4;:8;10588:2;10583:8;;;;;;;;;;;;;;;;;;;;;;;;;10582:9;10567:24;10559:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10655:13;;;;;;;;;;;10649:19;;:2;:19;;;10646:137;;10722:14;;10713:6;10697:13;10707:2;10697:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10689:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;10646:137;10800:28;10831:24;10849:4;10831:9;:24::i;:::-;10800:55;;10870:12;10909:19;;10885:20;:43;;10870:58;;10973:12;;10949:20;:36;10946:124;;11042:12;;11019:35;;10946:124;11091:7;:18;;;;;11103:6;;;;;;;;;;11102:7;11091:18;:43;;;;;11121:13;;;;;;;;;;;11113:21;;:4;:21;;;;11091:43;:58;;;;;11138:11;;;;;;;;;;;11091:58;:87;;;;;11154:18;:24;11173:4;11154:24;;;;;;;;;;;;;;;;;;;;;;;;;11153:25;11091:87;:114;;;;;11183:18;:22;11202:2;11183:22;;;;;;;;;;;;;;;;;;;;;;;;;11182:23;11091:114;11087:386;;;11226:38;11243:20;11226:16;:38::i;:::-;11283:26;11312:21;11283:50;;11377:1;11356:18;:22;11352:106;;;11403:35;11416:21;11403:12;:35::i;:::-;11352:106;11207:266;11087:386;10284:1200;;10246:1238;11497:12;11512:4;11497:19;;11562:18;:24;11581:4;11562:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11590:18;:22;11609:2;11590:22;;;;;;;;;;;;;;;;;;;;;;;;;11562:50;11561:102;;;;11626:13;;;;;;;;;;;11618:21;;:4;:21;;;;:44;;;;;11649:13;;;;;;;;;;;11643:19;;:2;:19;;;;11618:44;11561:102;11557:597;;;11690:5;11680:15;;11557:597;;;11774:13;;;;;;;;;;;11766:21;;:4;:21;;;:55;;;;;11805:15;;;;;;;;;;;11791:30;;:2;:30;;;;11766:55;11763:162;;;11854:14;;11842:9;:26;;;;11897:12;;11887:7;:22;;;;11763:162;11985:13;;;;;;;;;;;11979:19;;:2;:19;;;:55;;;;;12018:15;;;;;;;;;;;12002:32;;:4;:32;;;;11979:55;11975:165;;;12067:15;;12055:9;:27;;;;12111:13;;12101:7;:23;;;;11975:165;11557:597;12167:41;12182:4;12188:2;12192:6;12200:7;12167:14;:41::i;:::-;10029:2187;9926:2290;;;:::o;2856:224::-;2976:7;3009:1;3004;:6;;3012:12;2996:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3036:9;3052:1;3048;:5;;;;:::i;:::-;3036:17;;3071:1;3064:8;;;2856:224;;;;;:::o;12717:99::-;12774:17;;;;;;;;;;;:26;;:34;12801:6;12774:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12717:99;:::o;8866:325::-;8961:7;9019;;9008;:18;;8986:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;9109:19;9131:10;:8;:10::i;:::-;9109:32;;9159:24;9171:11;9159:7;:11;;:24;;;;:::i;:::-;9152:31;;;8866:325;;;:::o;12225:483::-;6577:4;6568:6;;:13;;;;;;;;;;;;;;;;;;12303:21:::1;12341:1;12327:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12303:40;;12372:4;12354;12359:1;12354:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12398:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12388:4;12393:1;12388:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12431:62;12448:4;12463:15;;;;;;;;;;;12481:11;12431:8;:62::i;:::-;12504:15;;;;;;;;;;;:66;;;12585:11;12611:1;12627:4;12654;12674:15;12504:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12292:416;6613:5:::0;6604:6;;:14;;;;;;;;;;;;;;;;;;12225:483;:::o;13703:282::-;13859:7;13854:28;;13868:14;:12;:14::i;:::-;13854:28;13893:44;13911:6;13919:9;13930:6;13893:17;:44::i;:::-;13953:7;13948:29;;13962:15;:13;:15::i;:::-;13948:29;13703:282;;;;:::o;16672:164::-;16714:7;16735:15;16752;16771:19;:17;:19::i;:::-;16734:56;;;;16808:20;16820:7;16808;:11;;:20;;;;:::i;:::-;16801:27;;;;16672:164;:::o;3344:132::-;3402:7;3429:39;3433:1;3436;3429:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3422:46;;3344:132;;;;:::o;9200:221::-;9260:1;9247:9;;:14;:30;;;;;9276:1;9265:7;;:12;9247:30;9279:7;9243:43;9319:9;;9299:17;:29;;;;9357:7;;9339:15;:25;;;;9390:1;9378:9;:13;;;;9412:1;9402:7;:11;;;;9200:221;:::o;13994:610::-;14141:15;14171:23;14209:12;14236:23;14274:12;14301:13;14328:19;14339:7;14328:10;:19::i;:::-;14126:221;;;;;;;;;;;;14376:28;14396:7;14376;:15;14384:6;14376:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14358:7;:15;14366:6;14358:15;;;;;;;;;;;;;;;:46;;;;14436:39;14459:15;14436:7;:18;14444:9;14436:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14415:7;:18;14423:9;14415:18;;;;;;;;;;;;;;;:60;;;;14486:16;14496:5;14486:9;:16::i;:::-;14513:23;14525:4;14531;14513:11;:23::i;:::-;14569:9;14552:44;;14561:6;14552:44;;;14580:15;14552:44;;;;;;:::i;:::-;;;;;;;;14115:489;;;;;;13994:610;;;:::o;9430:117::-;9486:17;;9474:9;:29;;;;9524:15;;9514:7;:25;;;;9430:117::o;16845:257::-;16896:7;16905;16925:15;16943:7;;16925:25;;16961:15;5171:16;16961:25;;17011:20;5171:16;17011:7;;:11;;:20;;;;:::i;:::-;17001:7;:30;16997:61;;;17041:7;;5171:16;17033:25;;;;;;;;16997:61;17077:7;17086;17069:25;;;;;;16845:257;;;:::o;3485:223::-;3605:7;3637:1;3633;:5;3640:12;3625:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3664:9;3680:1;3676;:5;;;;:::i;:::-;3664:17;;3699:1;3692:8;;;3485:223;;;;;:::o;15027:615::-;15127:7;15149;15171;15193;15215;15237;15273:23;15298:12;15312:13;15342:40;15354:7;15363:9;;15374:7;;15342:11;:40::i;:::-;15272:110;;;;;;15393:19;15415:10;:8;:10::i;:::-;15393:32;;15437:15;15454:23;15479:12;15508:46;15520:7;15529:4;15535:5;15542:11;15508;:46::i;:::-;15436:118;;;;;;15573:7;15582:15;15599:4;15605:15;15622:4;15628:5;15565:69;;;;;;;;;;;;;;;;;;;15027:615;;;;;;;:::o;2711:136::-;2769:7;2796:43;2800:1;2803;2796:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2789:50;;2711:136;;;;:::o;2523:179::-;2581:7;2601:9;2617:1;2613;:5;;;;:::i;:::-;2601:17;;2642:1;2637;:6;;2629:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2693:1;2686:8;;;2523:179;;;;:::o;14613:211::-;14666:19;14688:10;:8;:10::i;:::-;14666:32;;14709:13;14725:22;14735:11;14725:5;:9;;:22;;;;:::i;:::-;14709:38;;14783:33;14810:5;14783:7;:22;14799:4;14783:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14758:7;:22;14774:4;14758:22;;;;;;;;;;;;;;;:58;;;;14655:169;;14613:211;:::o;14833:147::-;14911:17;14923:4;14911:7;;:11;;:17;;;;:::i;:::-;14901:7;:27;;;;14952:20;14967:4;14952:10;;:14;;:20;;;;:::i;:::-;14939:10;:33;;;;14833:147;;:::o;15651:469::-;15820:7;15842;15864;15899:12;15914:30;15940:3;15914:21;15926:8;15914:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15899:45;;15955:13;15971:28;15995:3;15971:19;15983:6;15971:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15955:44;;16010:23;16036:28;16058:5;16036:17;16048:4;16036:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16010:54;;16083:15;16100:4;16106:5;16075:37;;;;;;;;;15651:469;;;;;;;:::o;16129:534::-;16323:7;16345;16367;16402:15;16420:24;16432:11;16420:7;:11;;:24;;;;:::i;:::-;16402:42;;16455:12;16470:21;16479:11;16470:4;:8;;:21;;;;:::i;:::-;16455:36;;16502:13;16518:22;16528:11;16518:5;:9;;:22;;;;:::i;:::-;16502:38;;16551:23;16577:28;16599:5;16577:17;16589:4;16577:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16551:54;;16624:7;16633:15;16650:4;16616:39;;;;;;;;;;16129:534;;;;;;;;:::o;3089:246::-;3147:7;3176:1;3171;:6;3167:47;;3201:1;3194:8;;;;3167:47;3224:9;3240:1;3236;:5;;;;:::i;:::-;3224:17;;3269:1;3264;3260;:5;;;;:::i;:::-;:10;3252:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3326:1;3319:8;;;3089:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::o;6288:60::-;6316:3;6337:5;6330:12;;6288:60;;;:::o;6354:142::-;6404:9;6437:53;6455:34;6464:24;6482:5;6464:24;:::i;:::-;6455:34;:::i;:::-;6437:53;:::i;:::-;6424:66;;6354:142;;;:::o;6502:126::-;6552:9;6585:37;6616:5;6585:37;:::i;:::-;6572:50;;6502:126;;;:::o;6634:152::-;6710:9;6743:37;6774:5;6743:37;:::i;:::-;6730:50;;6634:152;;;:::o;6792:183::-;6905:63;6962:5;6905:63;:::i;:::-;6900:3;6893:76;6792:183;;:::o;6981:274::-;7100:4;7138:2;7127:9;7123:18;7115:26;;7151:97;7245:1;7234:9;7230:17;7221:6;7151:97;:::i;:::-;6981:274;;;;:::o;7261:118::-;7348:24;7366:5;7348:24;:::i;:::-;7343:3;7336:37;7261:118;;:::o;7385:222::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:71;7597:1;7586:9;7582:17;7573:6;7529:71;:::i;:::-;7385:222;;;;:::o;7613:619::-;7690:6;7698;7706;7755:2;7743:9;7734:7;7730:23;7726:32;7723:119;;;7761:79;;:::i;:::-;7723:119;7881:1;7906:53;7951:7;7942:6;7931:9;7927:22;7906:53;:::i;:::-;7896:63;;7852:117;8008:2;8034:53;8079:7;8070:6;8059:9;8055:22;8034:53;:::i;:::-;8024:63;;7979:118;8136:2;8162:53;8207:7;8198:6;8187:9;8183:22;8162:53;:::i;:::-;8152:63;;8107:118;7613:619;;;;;:::o;8238:86::-;8273:7;8313:4;8306:5;8302:16;8291:27;;8238:86;;;:::o;8330:112::-;8413:22;8429:5;8413:22;:::i;:::-;8408:3;8401:35;8330:112;;:::o;8448:214::-;8537:4;8575:2;8564:9;8560:18;8552:26;;8588:67;8652:1;8641:9;8637:17;8628:6;8588:67;:::i;:::-;8448:214;;;;:::o;8668:118::-;8755:24;8773:5;8755:24;:::i;:::-;8750:3;8743:37;8668:118;;:::o;8792:222::-;8885:4;8923:2;8912:9;8908:18;8900:26;;8936:71;9004:1;8993:9;8989:17;8980:6;8936:71;:::i;:::-;8792:222;;;;:::o;9020:474::-;9088:6;9096;9145:2;9133:9;9124:7;9120:23;9116:32;9113:119;;;9151:79;;:::i;:::-;9113:119;9271:1;9296:53;9341:7;9332:6;9321:9;9317:22;9296:53;:::i;:::-;9286:63;;9242:117;9398:2;9424:53;9469:7;9460:6;9449:9;9445:22;9424:53;:::i;:::-;9414:63;;9369:118;9020:474;;;;;:::o;9500:329::-;9559:6;9608:2;9596:9;9587:7;9583:23;9579:32;9576:119;;;9614:79;;:::i;:::-;9576:119;9734:1;9759:53;9804:7;9795:6;9784:9;9780:22;9759:53;:::i;:::-;9749:63;;9705:117;9500:329;;;;:::o;9835:116::-;9905:21;9920:5;9905:21;:::i;:::-;9898:5;9895:32;9885:60;;9941:1;9938;9931:12;9885:60;9835:116;:::o;9957:133::-;10000:5;10038:6;10025:20;10016:29;;10054:30;10078:5;10054:30;:::i;:::-;9957:133;;;;:::o;10096:323::-;10152:6;10201:2;10189:9;10180:7;10176:23;10172:32;10169:119;;;10207:79;;:::i;:::-;10169:119;10327:1;10352:50;10394:7;10385:6;10374:9;10370:22;10352:50;:::i;:::-;10342:60;;10298:114;10096:323;;;;:::o;10425:329::-;10484:6;10533:2;10521:9;10512:7;10508:23;10504:32;10501:119;;;10539:79;;:::i;:::-;10501:119;10659:1;10684:53;10729:7;10720:6;10709:9;10705:22;10684:53;:::i;:::-;10674:63;;10630:117;10425:329;;;;:::o;10760:607::-;10831:6;10839;10847;10896:2;10884:9;10875:7;10871:23;10867:32;10864:119;;;10902:79;;:::i;:::-;10864:119;11022:1;11047:53;11092:7;11083:6;11072:9;11068:22;11047:53;:::i;:::-;11037:63;;10993:117;11149:2;11175:50;11217:7;11208:6;11197:9;11193:22;11175:50;:::i;:::-;11165:60;;11120:115;11274:2;11300:50;11342:7;11333:6;11322:9;11318:22;11300:50;:::i;:::-;11290:60;;11245:115;10760:607;;;;;:::o;11373:117::-;11482:1;11479;11472:12;11513:568;11586:8;11596:6;11646:3;11639:4;11631:6;11627:17;11623:27;11613:122;;11654:79;;:::i;:::-;11613:122;11767:6;11754:20;11744:30;;11797:18;11789:6;11786:30;11783:117;;;11819:79;;:::i;:::-;11783:117;11933:4;11925:6;11921:17;11909:29;;11987:3;11979:4;11971:6;11967:17;11957:8;11953:32;11950:41;11947:128;;;11994:79;;:::i;:::-;11947:128;11513:568;;;;;:::o;12087:698::-;12179:6;12187;12195;12244:2;12232:9;12223:7;12219:23;12215:32;12212:119;;;12250:79;;:::i;:::-;12212:119;12398:1;12387:9;12383:17;12370:31;12428:18;12420:6;12417:30;12414:117;;;12450:79;;:::i;:::-;12414:117;12563:80;12635:7;12626:6;12615:9;12611:22;12563:80;:::i;:::-;12545:98;;;;12341:312;12692:2;12718:50;12760:7;12751:6;12740:9;12736:22;12718:50;:::i;:::-;12708:60;;12663:115;12087:698;;;;;:::o;12791:474::-;12859:6;12867;12916:2;12904:9;12895:7;12891:23;12887:32;12884:119;;;12922:79;;:::i;:::-;12884:119;13042:1;13067:53;13112:7;13103:6;13092:9;13088:22;13067:53;:::i;:::-;13057:63;;13013:117;13169:2;13195:53;13240:7;13231:6;13220:9;13216:22;13195:53;:::i;:::-;13185:63;;13140:118;12791:474;;;;;:::o;13271:182::-;13411:34;13407:1;13399:6;13395:14;13388:58;13271:182;:::o;13459:366::-;13601:3;13622:67;13686:2;13681:3;13622:67;:::i;:::-;13615:74;;13698:93;13787:3;13698:93;:::i;:::-;13816:2;13811:3;13807:12;13800:19;;13459:366;;;:::o;13831:419::-;13997:4;14035:2;14024:9;14020:18;14012:26;;14084:9;14078:4;14074:20;14070:1;14059:9;14055:17;14048:47;14112:131;14238:4;14112:131;:::i;:::-;14104:139;;13831:419;;;:::o;14256:180::-;14304:77;14301:1;14294:88;14401:4;14398:1;14391:15;14425:4;14422:1;14415:15;14442:221;14582:34;14578:1;14570:6;14566:14;14559:58;14651:4;14646:2;14638:6;14634:15;14627:29;14442:221;:::o;14669:366::-;14811:3;14832:67;14896:2;14891:3;14832:67;:::i;:::-;14825:74;;14908:93;14997:3;14908:93;:::i;:::-;15026:2;15021:3;15017:12;15010:19;;14669:366;;;:::o;15041:419::-;15207:4;15245:2;15234:9;15230:18;15222:26;;15294:9;15288:4;15284:20;15280:1;15269:9;15265:17;15258:47;15322:131;15448:4;15322:131;:::i;:::-;15314:139;;15041:419;;;:::o;15466:222::-;15606:34;15602:1;15594:6;15590:14;15583:58;15675:5;15670:2;15662:6;15658:15;15651:30;15466:222;:::o;15694:366::-;15836:3;15857:67;15921:2;15916:3;15857:67;:::i;:::-;15850:74;;15933:93;16022:3;15933:93;:::i;:::-;16051:2;16046:3;16042:12;16035:19;;15694:366;;;:::o;16066:419::-;16232:4;16270:2;16259:9;16255:18;16247:26;;16319:9;16313:4;16309:20;16305:1;16294:9;16290:17;16283:47;16347:131;16473:4;16347:131;:::i;:::-;16339:139;;16066:419;;;:::o;16491:225::-;16631:34;16627:1;16619:6;16615:14;16608:58;16700:8;16695:2;16687:6;16683:15;16676:33;16491:225;:::o;16722:366::-;16864:3;16885:67;16949:2;16944:3;16885:67;:::i;:::-;16878:74;;16961:93;17050:3;16961:93;:::i;:::-;17079:2;17074:3;17070:12;17063:19;;16722:366;;;:::o;17094:419::-;17260:4;17298:2;17287:9;17283:18;17275:26;;17347:9;17341:4;17337:20;17333:1;17322:9;17318:17;17311:47;17375:131;17501:4;17375:131;:::i;:::-;17367:139;;17094:419;;;:::o;17519:181::-;17659:33;17655:1;17647:6;17643:14;17636:57;17519:181;:::o;17706:366::-;17848:3;17869:67;17933:2;17928:3;17869:67;:::i;:::-;17862:74;;17945:93;18034:3;17945:93;:::i;:::-;18063:2;18058:3;18054:12;18047:19;;17706:366;;;:::o;18078:419::-;18244:4;18282:2;18271:9;18267:18;18259:26;;18331:9;18325:4;18321:20;18317:1;18306:9;18302:17;18295:47;18359:131;18485:4;18359:131;:::i;:::-;18351:139;;18078:419;;;:::o;18503:179::-;18643:31;18639:1;18631:6;18627:14;18620:55;18503:179;:::o;18688:366::-;18830:3;18851:67;18915:2;18910:3;18851:67;:::i;:::-;18844:74;;18927:93;19016:3;18927:93;:::i;:::-;19045:2;19040:3;19036:12;19029:19;;18688:366;;;:::o;19060:419::-;19226:4;19264:2;19253:9;19249:18;19241:26;;19313:9;19307:4;19303:20;19299:1;19288:9;19284:17;19277:47;19341:131;19467:4;19341:131;:::i;:::-;19333:139;;19060:419;;;:::o;19485:181::-;19625:33;19621:1;19613:6;19609:14;19602:57;19485:181;:::o;19672:366::-;19814:3;19835:67;19899:2;19894:3;19835:67;:::i;:::-;19828:74;;19911:93;20000:3;19911:93;:::i;:::-;20029:2;20024:3;20020:12;20013:19;;19672:366;;;:::o;20044:419::-;20210:4;20248:2;20237:9;20233:18;20225:26;;20297:9;20291:4;20287:20;20283:1;20272:9;20268:17;20261:47;20325:131;20451:4;20325:131;:::i;:::-;20317:139;;20044:419;;;:::o;20469:179::-;20609:31;20605:1;20597:6;20593:14;20586:55;20469:179;:::o;20654:366::-;20796:3;20817:67;20881:2;20876:3;20817:67;:::i;:::-;20810:74;;20893:93;20982:3;20893:93;:::i;:::-;21011:2;21006:3;21002:12;20995:19;;20654:366;;;:::o;21026:419::-;21192:4;21230:2;21219:9;21215:18;21207:26;;21279:9;21273:4;21269:20;21265:1;21254:9;21250:17;21243:47;21307:131;21433:4;21307:131;:::i;:::-;21299:139;;21026:419;;;:::o;21451:177::-;21591:29;21587:1;21579:6;21575:14;21568:53;21451:177;:::o;21634:366::-;21776:3;21797:67;21861:2;21856:3;21797:67;:::i;:::-;21790:74;;21873:93;21962:3;21873:93;:::i;:::-;21991:2;21986:3;21982:12;21975:19;;21634:366;;;:::o;22006:419::-;22172:4;22210:2;22199:9;22195:18;22187:26;;22259:9;22253:4;22249:20;22245:1;22234:9;22230:17;22223:47;22287:131;22413:4;22287:131;:::i;:::-;22279:139;;22006:419;;;:::o;22431:233::-;22571:34;22567:1;22559:6;22555:14;22548:58;22640:16;22635:2;22627:6;22623:15;22616:41;22431:233;:::o;22670:366::-;22812:3;22833:67;22897:2;22892:3;22833:67;:::i;:::-;22826:74;;22909:93;22998:3;22909:93;:::i;:::-;23027:2;23022:3;23018:12;23011:19;;22670:366;;;:::o;23042:419::-;23208:4;23246:2;23235:9;23231:18;23223:26;;23295:9;23289:4;23285:20;23281:1;23270:9;23266:17;23259:47;23323:131;23449:4;23323:131;:::i;:::-;23315:139;;23042:419;;;:::o;23467:180::-;23607:32;23603:1;23595:6;23591:14;23584:56;23467:180;:::o;23653:366::-;23795:3;23816:67;23880:2;23875:3;23816:67;:::i;:::-;23809:74;;23892:93;23981:3;23892:93;:::i;:::-;24010:2;24005:3;24001:12;23994:19;;23653:366;;;:::o;24025:419::-;24191:4;24229:2;24218:9;24214:18;24206:26;;24278:9;24272:4;24268:20;24264:1;24253:9;24249:17;24242:47;24306:131;24432:4;24306:131;:::i;:::-;24298:139;;24025:419;;;:::o;24450:182::-;24590:34;24586:1;24578:6;24574:14;24567:58;24450:182;:::o;24638:366::-;24780:3;24801:67;24865:2;24860:3;24801:67;:::i;:::-;24794:74;;24877:93;24966:3;24877:93;:::i;:::-;24995:2;24990:3;24986:12;24979:19;;24638:366;;;:::o;25010:419::-;25176:4;25214:2;25203:9;25199:18;25191:26;;25263:9;25257:4;25253:20;25249:1;25238:9;25234:17;25227:47;25291:131;25417:4;25291:131;:::i;:::-;25283:139;;25010:419;;;:::o;25435:180::-;25483:77;25480:1;25473:88;25580:4;25577:1;25570:15;25604:4;25601:1;25594:15;25621:191;25661:3;25680:20;25698:1;25680:20;:::i;:::-;25675:25;;25714:20;25732:1;25714:20;:::i;:::-;25709:25;;25757:1;25754;25750:9;25743:16;;25778:3;25775:1;25772:10;25769:36;;;25785:18;;:::i;:::-;25769:36;25621:191;;;;:::o;25818:176::-;25958:28;25954:1;25946:6;25942:14;25935:52;25818:176;:::o;26000:366::-;26142:3;26163:67;26227:2;26222:3;26163:67;:::i;:::-;26156:74;;26239:93;26328:3;26239:93;:::i;:::-;26357:2;26352:3;26348:12;26341:19;;26000:366;;;:::o;26372:419::-;26538:4;26576:2;26565:9;26561:18;26553:26;;26625:9;26619:4;26615:20;26611:1;26600:9;26596:17;26589:47;26653:131;26779:4;26653:131;:::i;:::-;26645:139;;26372:419;;;:::o;26797:194::-;26837:4;26857:20;26875:1;26857:20;:::i;:::-;26852:25;;26891:20;26909:1;26891:20;:::i;:::-;26886:25;;26935:1;26932;26928:9;26920:17;;26959:1;26953:4;26950:11;26947:37;;;26964:18;;:::i;:::-;26947:37;26797:194;;;;:::o;26997:231::-;27137:34;27133:1;27125:6;27121:14;27114:58;27206:14;27201:2;27193:6;27189:15;27182:39;26997:231;:::o;27234:366::-;27376:3;27397:67;27461:2;27456:3;27397:67;:::i;:::-;27390:74;;27473:93;27562:3;27473:93;:::i;:::-;27591:2;27586:3;27582:12;27575:19;;27234:366;;;:::o;27606:419::-;27772:4;27810:2;27799:9;27795:18;27787:26;;27859:9;27853:4;27849:20;27845:1;27834:9;27830:17;27823:47;27887:131;28013:4;27887:131;:::i;:::-;27879:139;;27606:419;;;:::o;28031:143::-;28088:5;28119:6;28113:13;28104:22;;28135:33;28162:5;28135:33;:::i;:::-;28031:143;;;;:::o;28180:351::-;28250:6;28299:2;28287:9;28278:7;28274:23;28270:32;28267:119;;;28305:79;;:::i;:::-;28267:119;28425:1;28450:64;28506:7;28497:6;28486:9;28482:22;28450:64;:::i;:::-;28440:74;;28396:128;28180:351;;;;:::o;28537:85::-;28582:7;28611:5;28600:16;;28537:85;;;:::o;28628:158::-;28686:9;28719:61;28737:42;28746:32;28772:5;28746:32;:::i;:::-;28737:42;:::i;:::-;28719:61;:::i;:::-;28706:74;;28628:158;;;:::o;28792:147::-;28887:45;28926:5;28887:45;:::i;:::-;28882:3;28875:58;28792:147;;:::o;28945:114::-;29012:6;29046:5;29040:12;29030:22;;28945:114;;;:::o;29065:184::-;29164:11;29198:6;29193:3;29186:19;29238:4;29233:3;29229:14;29214:29;;29065:184;;;;:::o;29255:132::-;29322:4;29345:3;29337:11;;29375:4;29370:3;29366:14;29358:22;;29255:132;;;:::o;29393:108::-;29470:24;29488:5;29470:24;:::i;:::-;29465:3;29458:37;29393:108;;:::o;29507:179::-;29576:10;29597:46;29639:3;29631:6;29597:46;:::i;:::-;29675:4;29670:3;29666:14;29652:28;;29507:179;;;;:::o;29692:113::-;29762:4;29794;29789:3;29785:14;29777:22;;29692:113;;;:::o;29841:732::-;29960:3;29989:54;30037:5;29989:54;:::i;:::-;30059:86;30138:6;30133:3;30059:86;:::i;:::-;30052:93;;30169:56;30219:5;30169:56;:::i;:::-;30248:7;30279:1;30264:284;30289:6;30286:1;30283:13;30264:284;;;30365:6;30359:13;30392:63;30451:3;30436:13;30392:63;:::i;:::-;30385:70;;30478:60;30531:6;30478:60;:::i;:::-;30468:70;;30324:224;30311:1;30308;30304:9;30299:14;;30264:284;;;30268:14;30564:3;30557:10;;29965:608;;;29841:732;;;;:::o;30579:831::-;30842:4;30880:3;30869:9;30865:19;30857:27;;30894:71;30962:1;30951:9;30947:17;30938:6;30894:71;:::i;:::-;30975:80;31051:2;31040:9;31036:18;31027:6;30975:80;:::i;:::-;31102:9;31096:4;31092:20;31087:2;31076:9;31072:18;31065:48;31130:108;31233:4;31224:6;31130:108;:::i;:::-;31122:116;;31248:72;31316:2;31305:9;31301:18;31292:6;31248:72;:::i;:::-;31330:73;31398:3;31387:9;31383:19;31374:6;31330:73;:::i;:::-;30579:831;;;;;;;;:::o;31416:180::-;31464:77;31461:1;31454:88;31561:4;31558:1;31551:15;31585:4;31582:1;31575:15;31602:185;31642:1;31659:20;31677:1;31659:20;:::i;:::-;31654:25;;31693:20;31711:1;31693:20;:::i;:::-;31688:25;;31732:1;31722:35;;31737:18;;:::i;:::-;31722:35;31779:1;31776;31772:9;31767:14;;31602:185;;;;:::o;31793:177::-;31933:29;31929:1;31921:6;31917:14;31910:53;31793:177;:::o;31976:366::-;32118:3;32139:67;32203:2;32198:3;32139:67;:::i;:::-;32132:74;;32215:93;32304:3;32215:93;:::i;:::-;32333:2;32328:3;32324:12;32317:19;;31976:366;;;:::o;32348:419::-;32514:4;32552:2;32541:9;32537:18;32529:26;;32601:9;32595:4;32591:20;32587:1;32576:9;32572:17;32565:47;32629:131;32755:4;32629:131;:::i;:::-;32621:139;;32348:419;;;:::o;32773:410::-;32813:7;32836:20;32854:1;32836:20;:::i;:::-;32831:25;;32870:20;32888:1;32870:20;:::i;:::-;32865:25;;32925:1;32922;32918:9;32947:30;32965:11;32947:30;:::i;:::-;32936:41;;33126:1;33117:7;33113:15;33110:1;33107:22;33087:1;33080:9;33060:83;33037:139;;33156:18;;:::i;:::-;33037:139;32821:362;32773:410;;;;:::o;33189:220::-;33329:34;33325:1;33317:6;33313:14;33306:58;33398:3;33393:2;33385:6;33381:15;33374:28;33189:220;:::o;33415:366::-;33557:3;33578:67;33642:2;33637:3;33578:67;:::i;:::-;33571:74;;33654:93;33743:3;33654:93;:::i;:::-;33772:2;33767:3;33763:12;33756:19;;33415:366;;;:::o;33787:419::-;33953:4;33991:2;33980:9;33976:18;33968:26;;34040:9;34034:4;34030:20;34026:1;34015:9;34011:17;34004:47;34068:131;34194:4;34068:131;:::i;:::-;34060:139;;33787:419;;;:::o
Swarm Source
ipfs://d950028afb35c37ae70be167a10d445a9c4c40729c58dab53bdf40c07d2c8c19
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.