ERC-20
Overview
Max Total Supply
1,000,000,000 GLEP
Holders
207
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0 GLEPValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
GLEP
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-06-27 */ /** * SPDX-License-Identifier: UNLICENSED * * website: https://www.gleptoken.com/ * tg: https://t.me/gleptoken * twitter: https://x.com/gleptoken */ pragma solidity ^0.8.24; library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } interface IERC20 { function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } 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); } } contract GLEP is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "Glep"; string private constant _symbol = "GLEP"; uint8 private constant _decimals = 9; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1e9 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _contractTokenSwapTrigger = 1000000 * 10**9; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcludedFromMaxWallet; mapping(uint256 => uint256) private _sellCount; uint256 private lastTaxSellBlock = 0; uint256 private blockTaxSellCount = 0; uint256 private _taxFee = 0; uint256 private _teamFee = 0; uint256 private _maxWalletSize = 2e7 * 10**9; uint256 private _buyFee = 90; uint256 private _sellFee = 5; uint256 private _previousTaxFee = _taxFee; uint256 private _previousteamFee = _teamFee; address payable private _feesWallet; IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; bool private tradingOpen = false; bool private _noFees = false; bool private _noTaxSellLimit = false; bool private _limitContractSwap = true; bool private inSwap = false; mapping(address => bool) private automatedMarketMakerPairs; event Response(bool success); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor () { _feesWallet = payable(0x1bC77b81E7BB75d57E3e46129A1E79bdAEFC22F7); _rOwned[_msgSender()] = _rTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_feesWallet] = true; _isExcludedFromMaxWallet[owner()] = true; _isExcludedFromMaxWallet[address(this)] = true; _isExcludedFromMaxWallet[_feesWallet] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if(from != owner() && to != owner()) { if(to != uniswapV2Pair && !_isExcludedFromMaxWallet[to] && _maxWalletSize != 0) { require(balanceOf(address(to)) + amount <= _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } if(from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) { require(tradingOpen, "Trading not yet enabled."); _teamFee = _buyFee; } uint256 contractTokenBalance = balanceOf(address(this)); if(!inSwap && from != uniswapV2Pair && tradingOpen) { _teamFee = _sellFee; if (automatedMarketMakerPairs[to]) { if(contractTokenBalance > _contractTokenSwapTrigger) { if (block.number > lastTaxSellBlock) { blockTaxSellCount = 0; } if (_noTaxSellLimit || blockTaxSellCount < 1) { if(_limitContractSwap) { contractTokenBalance = _contractTokenSwapTrigger; } swapTokensForEth(contractTokenBalance); blockTaxSellCount++; uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } } } } bool takeFee = true; if(_noFees || _isExcludedFromFee[from] || _isExcludedFromFee[to]) { takeFee = false; } else if(!automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to]) { takeFee = false; } _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 { (bool success, ) = _feesWallet.call{value: amount}(""); emit Response(success); } 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 _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _taxFee, _teamFee); 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 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) { uint256 tFee = tAmount.mul(taxFee).div(100); uint256 tTeam = tAmount.mul(TeamFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } 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 _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 _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); } function thisBalance() public view returns (uint) { return balanceOf(address(this)); } function amountInPool() public view returns (uint) { return balanceOf(uniswapV2Pair); } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } 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 transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function removeAllFee() private { _previousTaxFee = _taxFee; _previousteamFee = _teamFee; _taxFee = 0; _teamFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _teamFee = _previousteamFee; } function tokenFromReflection(uint256 rAmount) private view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function 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 _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } receive() external payable {} function openTrading() external onlyOwner() { require(!tradingOpen,"trading is already open"); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; _approve(address(this), address(uniswapV2Router), _tTotal); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); automatedMarketMakerPairs[uniswapV2Pair] = true; tradingOpen = true; } function setContractTokenSwapTrigger(uint256 numToken) external { require(_msgSender() == _feesWallet); _contractTokenSwapTrigger = numToken * 10**9; } function setMaxWallet(uint256 amt) external onlyOwner { _maxWalletSize = amt * 10**9; } function setFeesOff() external { require(_msgSender() == _feesWallet); _noFees = true; } function setTaxSellLimitOff() external { require(_msgSender() == _feesWallet); _noTaxSellLimit = true; } function setLimitContractSwap(bool onoff) external { require(_msgSender() == _feesWallet); _limitContractSwap = onoff; } function setFeesWallet (address payable fee) external onlyOwner { _isExcludedFromFee[_feesWallet] = false; _feesWallet = fee; _isExcludedFromFee[fee] = true; } function setFees(uint256 buy, uint256 sell, uint256 redist) external onlyOwner { _buyFee = buy; _sellFee = sell; _taxFee = redist; } function manualswap() external onlyOwner { uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external onlyOwner { uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; } function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) { require(_token != address(0), "_token address cannot be 0"); require(_token != address(this), "Can't withdraw native tokens"); uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); _sent = IERC20(_token).transfer(_to, _contractBalance); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"success","type":"bool"}],"name":"Response","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":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountInPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numToken","type":"uint256"}],"name":"setContractTokenSwapTrigger","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"redist","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setFeesOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"fee","type":"address"}],"name":"setFeesWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setLimitContractSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTaxSellLimitOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"thisBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052670de0b6b3a76400005f19610019919061057f565b5f1961002591906105dc565b60025566038d7ea4c680006004555f600b555f600c555f600d555f600e5566470de4df820000600f55605a6010556005601155600d54601255600e546013555f601660146101000a81548160ff0219169083151502179055505f601660156101000a81548160ff0219169083151502179055505f6016806101000a81548160ff0219169083151502179055506001601660176101000a81548160ff0219169083151502179055505f601660186101000a81548160ff0219169083151502179055503480156100f1575f80fd5b505f61010161051b60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350731bc77b81e7bb75d57e3e46129a1e79bdaefc22f760145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025460055f61020561051b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160085f61025561052260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f61038261052260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506104aa61051b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a764000060405161050e919061061e565b60405180910390a3610637565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61058982610549565b915061059483610549565b9250826105a4576105a3610552565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6105e682610549565b91506105f183610549565b9250828203905081811115610609576106086105af565b5b92915050565b61061881610549565b82525050565b5f6020820190506106315f83018461060f565b92915050565b613dbf806106445f395ff3fe608060405260043610610169575f3560e01c8063715018a6116100d0578063c110788f11610089578063cec10c1111610063578063cec10c11146104c0578063d043c044146104e8578063db92dbb614610510578063dd62ed3e1461053a57610170565b8063c110788f1461046c578063c3c8cd8014610494578063c9567bf9146104aa57610170565b8063715018a6146103625780638366e79a146103785780638da5cb5b146103b457806395d89b41146103de5780639a7a23d614610408578063a9059cbb1461043057610170565b8063313ce56711610122578063313ce5671461028057806343d4f92b146102aa57806345ffffa4146102d25780635d0044ca146102e85780636fc3eaec1461031057806370a082311461032657610170565b806306fdde0314610174578063095ea7b31461019e57806318160ddd146101da57806323b872dd14610204578063271e2f871461024057806327f3a72a1461025657610170565b3661017057005b5f80fd5b34801561017f575f80fd5b50610188610576565b6040516101959190612d02565b60405180910390f35b3480156101a9575f80fd5b506101c460048036038101906101bf9190612db3565b6105b3565b6040516101d19190612e0b565b60405180910390f35b3480156101e5575f80fd5b506101ee6105d0565b6040516101fb9190612e33565b60405180910390f35b34801561020f575f80fd5b5061022a60048036038101906102259190612e4c565b6105df565b6040516102379190612e0b565b60405180910390f35b34801561024b575f80fd5b506102546106b3565b005b348015610261575f80fd5b5061026a61072f565b6040516102779190612e33565b60405180910390f35b34801561028b575f80fd5b5061029461073e565b6040516102a19190612eb7565b60405180910390f35b3480156102b5575f80fd5b506102d060048036038101906102cb9190612f0b565b610746565b005b3480156102dd575f80fd5b506102e66108e7565b005b3480156102f3575f80fd5b5061030e60048036038101906103099190612f36565b610962565b005b34801561031b575f80fd5b50610324610a0f565b005b348015610331575f80fd5b5061034c60048036038101906103479190612f61565b610ab3565b6040516103599190612e33565b60405180910390f35b34801561036d575f80fd5b50610376610b01565b005b348015610383575f80fd5b5061039e60048036038101906103999190612f8c565b610c4f565b6040516103ab9190612e0b565b60405180910390f35b3480156103bf575f80fd5b506103c8610ebf565b6040516103d59190612fd9565b60405180910390f35b3480156103e9575f80fd5b506103f2610ee6565b6040516103ff9190612d02565b60405180910390f35b348015610413575f80fd5b5061042e6004803603810190610429919061301c565b610f23565b005b34801561043b575f80fd5b5061045660048036038101906104519190612db3565b611054565b6040516104639190612e0b565b60405180910390f35b348015610477575f80fd5b50610492600480360381019061048d919061305a565b611071565b005b34801561049f575f80fd5b506104a86110ed565b005b3480156104b5575f80fd5b506104be611199565b005b3480156104cb575f80fd5b506104e660048036038101906104e19190613085565b6116c5565b005b3480156104f3575f80fd5b5061050e60048036038101906105099190612f36565b611773565b005b34801561051b575f80fd5b506105246117eb565b6040516105319190612e33565b60405180910390f35b348015610545575f80fd5b50610560600480360381019061055b9190612f8c565b61181b565b60405161056d9190612e33565b60405180910390f35b60606040518060400160405280600481526020017f476c657000000000000000000000000000000000000000000000000000000000815250905090565b5f6105c66105bf61189d565b84846118a4565b6001905092915050565b5f670de0b6b3a7640000905090565b5f6105eb848484611a67565b6106a8846105f761189d565b6106a385604051806060016040528060288152602001613d626028913960075f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61065a61189d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121679092919063ffffffff16565b6118a4565b600190509392505050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106f361189d565b73ffffffffffffffffffffffffffffffffffffffff1614610712575f80fd5b6001601660156101000a81548160ff021916908315150217905550565b5f61073930610ab3565b905090565b5f6009905090565b61074e61189d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d19061311f565b60405180910390fd5b5f60085f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661092761189d565b73ffffffffffffffffffffffffffffffffffffffff1614610946575f80fd5b60016016806101000a81548160ff021916908315150217905550565b61096a61189d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ed9061311f565b60405180910390fd5b633b9aca0081610a06919061316a565b600f8190555050565b610a1761189d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9a9061311f565b60405180910390fd5b5f479050610ab0816121c9565b50565b5f610afa60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461228d565b9050919050565b610b0961189d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8c9061311f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f610c5861189d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdb9061311f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906131f5565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db79061325d565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610dfa9190612fd9565b602060405180830381865afa158015610e15573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e39919061328f565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401610e769291906132ba565b6020604051808303815f875af1158015610e92573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb691906132f5565b91505092915050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f474c455000000000000000000000000000000000000000000000000000000000815250905090565b610f2b61189d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fae9061311f565b60405180910390fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103d90613390565b60405180910390fd5b61105082826122f9565b5050565b5f61106761106061189d565b8484611a67565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110b161189d565b73ffffffffffffffffffffffffffffffffffffffff16146110d0575f80fd5b80601660176101000a81548160ff02191690831515021790555050565b6110f561189d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611181576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111789061311f565b60405180910390fd5b5f61118b30610ab3565b905061119681612351565b50565b6111a161189d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461122d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112249061311f565b60405180910390fd5b601660149054906101000a900460ff161561127d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611274906133f8565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506113093060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16670de0b6b3a76400006118a4565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611352573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611376919061342a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ff919061342a565b6040518363ffffffff1660e01b815260040161141c929190613455565b6020604051808303815f875af1158015611438573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061145c919061342a565b60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306114e330610ab3565b5f806114ed610ebf565b426040518863ffffffff1660e01b815260040161150f969594939291906134be565b60606040518083038185885af115801561152b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611550919061351d565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016115f09291906132ba565b6020604051808303815f875af115801561160c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061163091906132f5565b50600160175f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601660146101000a81548160ff02191690831515021790555050565b6116cd61189d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611759576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117509061311f565b60405180910390fd5b826010819055508160118190555080600d81905550505050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117b361189d565b73ffffffffffffffffffffffffffffffffffffffff16146117d2575f80fd5b633b9aca00816117e2919061316a565b60048190555050565b5f61181660165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ab3565b905090565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611912576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611909906135dd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611980576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119779061366b565b60405180910390fd5b8060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a5a9190612e33565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc906136f9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3a90613787565b60405180910390fd5b5f8111611b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7c90613815565b60405180910390fd5b611b8d610ebf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611bfb5750611bcb610ebf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611fe95760165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611ca4575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611cb257505f600f5414155b15611d1057600f5481611cc484610ab3565b611cce9190613833565b1115611d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d06906138d6565b60405180910390fd5b5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611db9575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611e0c575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e6a57601660149054906101000a900460ff16611e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e579061393e565b60405180910390fd5b601054600e819055505b5f611e7430610ab3565b9050601660189054906101000a900460ff16158015611ee0575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611ef85750601660149054906101000a900460ff165b15611fe757601154600e8190555060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611fe657600454811115611fe557600b54431115611f71575f600c819055505b60168054906101000a900460ff1680611f8c57506001600c54105b15611fe457601660179054906101000a900460ff1615611fac5760045490505b611fb581612351565b600c5f815480929190611fc79061395c565b91905055505f4790505f811115611fe257611fe1476121c9565b5b505b5b5b5b505b5f60019050601660159054906101000a900460ff168061204f575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806120a0575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156120ad575f9050612155565b60175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561214b575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612154575f90505b5b612161848484846125bc565b50505050565b5f8383111582906121ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a59190612d02565b60405180910390fd5b505f83856121bc91906139a3565b9050809150509392505050565b5f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161220f90613a03565b5f6040518083038185875af1925050503d805f8114612249576040519150601f19603f3d011682016040523d82523d5f602084013e61224e565b606091505b505090507fb6caad5b328a3de9a49b44605241a4b72f6f1aa955829d12e37decfd84a0b8ca816040516122819190612e0b565b60405180910390a15050565b5f6002548211156122d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ca90613a87565b60405180910390fd5b5f6122dc6125e9565b90506122f1818461261290919063ffffffff16565b915050919050565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6001601660186101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561238857612387613aa5565b5b6040519080825280602002602001820160405280156123b65781602001602082028036833780820191505090505b50905030815f815181106123cd576123cc613ad2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612471573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612495919061342a565b816001815181106124a9576124a8613ad2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061250f3060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118a4565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612571959493929190613bb6565b5f604051808303815f87803b158015612588575f80fd5b505af115801561259a573d5f803e3d5ffd5b50505050505f601660186101000a81548160ff02191690831515021790555050565b806125ca576125c961265b565b5b6125d584848461267d565b806125e3576125e261283d565b5b50505050565b5f805f6125f4612851565b9150915061260b818361261290919063ffffffff16565b9250505090565b5f61265383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506128ad565b905092915050565b600d54601281905550600e546013819055505f600d819055505f600e81905550565b5f805f805f8061268c8761290e565b9550955095509550955095506126e88660055f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461296e90919063ffffffff16565b60055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127798560055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129b790919063ffffffff16565b60055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127c381612a14565b6127cd8483612acb565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161282a9190612e33565b60405180910390a3505050505050505050565b601254600d81905550601354600e81905550565b5f805f60025490505f670de0b6b3a76400009050612882670de0b6b3a764000060025461261290919063ffffffff16565b8210156128a057600254670de0b6b3a76400009350935050506128a9565b81819350935050505b9091565b5f80831182906128f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ea9190612d02565b60405180910390fd5b505f83856129019190613c3b565b9050809150509392505050565b5f805f805f805f805f6129268a600d54600e54612b05565b9250925092505f6129356125e9565b90505f805f6129468e878787612b97565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f6129af83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612167565b905092915050565b5f8082846129c59190613833565b905083811015612a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0190613cb5565b60405180910390fd5b8091505092915050565b5f612a1d6125e9565b90505f612a338284612c1b90919063ffffffff16565b9050612a858160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129b790919063ffffffff16565b60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612ae08260025461296e90919063ffffffff16565b600281905550612afb816003546129b790919063ffffffff16565b6003819055505050565b5f805f80612b2f6064612b21888a612c1b90919063ffffffff16565b61261290919063ffffffff16565b90505f612b586064612b4a888b612c1b90919063ffffffff16565b61261290919063ffffffff16565b90505f612b8082612b72858c61296e90919063ffffffff16565b61296e90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612bae8589612c1b90919063ffffffff16565b90505f612bc48689612c1b90919063ffffffff16565b90505f612bda8789612c1b90919063ffffffff16565b90505f612c0282612bf4858761296e90919063ffffffff16565b61296e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612c2b575f9050612c8c565b5f8284612c38919061316a565b9050828482612c479190613c3b565b14612c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7e90613d43565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612cd482612c92565b612cde8185612c9c565b9350612cee818560208601612cac565b612cf781612cba565b840191505092915050565b5f6020820190508181035f830152612d1a8184612cca565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d4f82612d26565b9050919050565b612d5f81612d45565b8114612d69575f80fd5b50565b5f81359050612d7a81612d56565b92915050565b5f819050919050565b612d9281612d80565b8114612d9c575f80fd5b50565b5f81359050612dad81612d89565b92915050565b5f8060408385031215612dc957612dc8612d22565b5b5f612dd685828601612d6c565b9250506020612de785828601612d9f565b9150509250929050565b5f8115159050919050565b612e0581612df1565b82525050565b5f602082019050612e1e5f830184612dfc565b92915050565b612e2d81612d80565b82525050565b5f602082019050612e465f830184612e24565b92915050565b5f805f60608486031215612e6357612e62612d22565b5b5f612e7086828701612d6c565b9350506020612e8186828701612d6c565b9250506040612e9286828701612d9f565b9150509250925092565b5f60ff82169050919050565b612eb181612e9c565b82525050565b5f602082019050612eca5f830184612ea8565b92915050565b5f612eda82612d26565b9050919050565b612eea81612ed0565b8114612ef4575f80fd5b50565b5f81359050612f0581612ee1565b92915050565b5f60208284031215612f2057612f1f612d22565b5b5f612f2d84828501612ef7565b91505092915050565b5f60208284031215612f4b57612f4a612d22565b5b5f612f5884828501612d9f565b91505092915050565b5f60208284031215612f7657612f75612d22565b5b5f612f8384828501612d6c565b91505092915050565b5f8060408385031215612fa257612fa1612d22565b5b5f612faf85828601612d6c565b9250506020612fc085828601612d6c565b9150509250929050565b612fd381612d45565b82525050565b5f602082019050612fec5f830184612fca565b92915050565b612ffb81612df1565b8114613005575f80fd5b50565b5f8135905061301681612ff2565b92915050565b5f806040838503121561303257613031612d22565b5b5f61303f85828601612d6c565b925050602061305085828601613008565b9150509250929050565b5f6020828403121561306f5761306e612d22565b5b5f61307c84828501613008565b91505092915050565b5f805f6060848603121561309c5761309b612d22565b5b5f6130a986828701612d9f565b93505060206130ba86828701612d9f565b92505060406130cb86828701612d9f565b9150509250925092565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613109602083612c9c565b9150613114826130d5565b602082019050919050565b5f6020820190508181035f830152613136816130fd565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61317482612d80565b915061317f83612d80565b925082820261318d81612d80565b915082820484148315176131a4576131a361313d565b5b5092915050565b7f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000005f82015250565b5f6131df601a83612c9c565b91506131ea826131ab565b602082019050919050565b5f6020820190508181035f83015261320c816131d3565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e73000000005f82015250565b5f613247601c83612c9c565b915061325282613213565b602082019050919050565b5f6020820190508181035f8301526132748161323b565b9050919050565b5f8151905061328981612d89565b92915050565b5f602082840312156132a4576132a3612d22565b5b5f6132b18482850161327b565b91505092915050565b5f6040820190506132cd5f830185612fca565b6132da6020830184612e24565b9392505050565b5f815190506132ef81612ff2565b92915050565b5f6020828403121561330a57613309612d22565b5b5f613317848285016132e1565b91505092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f61337a603983612c9c565b915061338582613320565b604082019050919050565b5f6020820190508181035f8301526133a78161336e565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6133e2601783612c9c565b91506133ed826133ae565b602082019050919050565b5f6020820190508181035f83015261340f816133d6565b9050919050565b5f8151905061342481612d56565b92915050565b5f6020828403121561343f5761343e612d22565b5b5f61344c84828501613416565b91505092915050565b5f6040820190506134685f830185612fca565b6134756020830184612fca565b9392505050565b5f819050919050565b5f819050919050565b5f6134a86134a361349e8461347c565b613485565b612d80565b9050919050565b6134b88161348e565b82525050565b5f60c0820190506134d15f830189612fca565b6134de6020830188612e24565b6134eb60408301876134af565b6134f860608301866134af565b6135056080830185612fca565b61351260a0830184612e24565b979650505050505050565b5f805f6060848603121561353457613533612d22565b5b5f6135418682870161327b565b93505060206135528682870161327b565b92505060406135638682870161327b565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6135c7602483612c9c565b91506135d28261356d565b604082019050919050565b5f6020820190508181035f8301526135f4816135bb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613655602283612c9c565b9150613660826135fb565b604082019050919050565b5f6020820190508181035f83015261368281613649565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6136e3602583612c9c565b91506136ee82613689565b604082019050919050565b5f6020820190508181035f830152613710816136d7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613771602383612c9c565b915061377c82613717565b604082019050919050565b5f6020820190508181035f83015261379e81613765565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6137ff602983612c9c565b915061380a826137a5565b604082019050919050565b5f6020820190508181035f83015261382c816137f3565b9050919050565b5f61383d82612d80565b915061384883612d80565b92508282019050808211156138605761385f61313d565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6138c0602383612c9c565b91506138cb82613866565b604082019050919050565b5f6020820190508181035f8301526138ed816138b4565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65642e00000000000000005f82015250565b5f613928601883612c9c565b9150613933826138f4565b602082019050919050565b5f6020820190508181035f8301526139558161391c565b9050919050565b5f61396682612d80565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036139985761399761313d565b5b600182019050919050565b5f6139ad82612d80565b91506139b883612d80565b92508282039050818111156139d0576139cf61313d565b5b92915050565b5f81905092915050565b50565b5f6139ee5f836139d6565b91506139f9826139e0565b5f82019050919050565b5f613a0d826139e3565b9150819050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613a71602a83612c9c565b9150613a7c82613a17565b604082019050919050565b5f6020820190508181035f830152613a9e81613a65565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613b3181612d45565b82525050565b5f613b428383613b28565b60208301905092915050565b5f602082019050919050565b5f613b6482613aff565b613b6e8185613b09565b9350613b7983613b19565b805f5b83811015613ba9578151613b908882613b37565b9750613b9b83613b4e565b925050600181019050613b7c565b5085935050505092915050565b5f60a082019050613bc95f830188612e24565b613bd660208301876134af565b8181036040830152613be88186613b5a565b9050613bf76060830185612fca565b613c046080830184612e24565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613c4582612d80565b9150613c5083612d80565b925082613c6057613c5f613c0e565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613c9f601b83612c9c565b9150613caa82613c6b565b602082019050919050565b5f6020820190508181035f830152613ccc81613c93565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d2d602183612c9c565b9150613d3882613cd3565b604082019050919050565b5f6020820190508181035f830152613d5a81613d21565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122084bcc69fe4d3d15984e947c76f79f0a64a9cd1c503add172cd4b420878ce329564736f6c634300081a0033
Deployed Bytecode
0x608060405260043610610169575f3560e01c8063715018a6116100d0578063c110788f11610089578063cec10c1111610063578063cec10c11146104c0578063d043c044146104e8578063db92dbb614610510578063dd62ed3e1461053a57610170565b8063c110788f1461046c578063c3c8cd8014610494578063c9567bf9146104aa57610170565b8063715018a6146103625780638366e79a146103785780638da5cb5b146103b457806395d89b41146103de5780639a7a23d614610408578063a9059cbb1461043057610170565b8063313ce56711610122578063313ce5671461028057806343d4f92b146102aa57806345ffffa4146102d25780635d0044ca146102e85780636fc3eaec1461031057806370a082311461032657610170565b806306fdde0314610174578063095ea7b31461019e57806318160ddd146101da57806323b872dd14610204578063271e2f871461024057806327f3a72a1461025657610170565b3661017057005b5f80fd5b34801561017f575f80fd5b50610188610576565b6040516101959190612d02565b60405180910390f35b3480156101a9575f80fd5b506101c460048036038101906101bf9190612db3565b6105b3565b6040516101d19190612e0b565b60405180910390f35b3480156101e5575f80fd5b506101ee6105d0565b6040516101fb9190612e33565b60405180910390f35b34801561020f575f80fd5b5061022a60048036038101906102259190612e4c565b6105df565b6040516102379190612e0b565b60405180910390f35b34801561024b575f80fd5b506102546106b3565b005b348015610261575f80fd5b5061026a61072f565b6040516102779190612e33565b60405180910390f35b34801561028b575f80fd5b5061029461073e565b6040516102a19190612eb7565b60405180910390f35b3480156102b5575f80fd5b506102d060048036038101906102cb9190612f0b565b610746565b005b3480156102dd575f80fd5b506102e66108e7565b005b3480156102f3575f80fd5b5061030e60048036038101906103099190612f36565b610962565b005b34801561031b575f80fd5b50610324610a0f565b005b348015610331575f80fd5b5061034c60048036038101906103479190612f61565b610ab3565b6040516103599190612e33565b60405180910390f35b34801561036d575f80fd5b50610376610b01565b005b348015610383575f80fd5b5061039e60048036038101906103999190612f8c565b610c4f565b6040516103ab9190612e0b565b60405180910390f35b3480156103bf575f80fd5b506103c8610ebf565b6040516103d59190612fd9565b60405180910390f35b3480156103e9575f80fd5b506103f2610ee6565b6040516103ff9190612d02565b60405180910390f35b348015610413575f80fd5b5061042e6004803603810190610429919061301c565b610f23565b005b34801561043b575f80fd5b5061045660048036038101906104519190612db3565b611054565b6040516104639190612e0b565b60405180910390f35b348015610477575f80fd5b50610492600480360381019061048d919061305a565b611071565b005b34801561049f575f80fd5b506104a86110ed565b005b3480156104b5575f80fd5b506104be611199565b005b3480156104cb575f80fd5b506104e660048036038101906104e19190613085565b6116c5565b005b3480156104f3575f80fd5b5061050e60048036038101906105099190612f36565b611773565b005b34801561051b575f80fd5b506105246117eb565b6040516105319190612e33565b60405180910390f35b348015610545575f80fd5b50610560600480360381019061055b9190612f8c565b61181b565b60405161056d9190612e33565b60405180910390f35b60606040518060400160405280600481526020017f476c657000000000000000000000000000000000000000000000000000000000815250905090565b5f6105c66105bf61189d565b84846118a4565b6001905092915050565b5f670de0b6b3a7640000905090565b5f6105eb848484611a67565b6106a8846105f761189d565b6106a385604051806060016040528060288152602001613d626028913960075f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61065a61189d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121679092919063ffffffff16565b6118a4565b600190509392505050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106f361189d565b73ffffffffffffffffffffffffffffffffffffffff1614610712575f80fd5b6001601660156101000a81548160ff021916908315150217905550565b5f61073930610ab3565b905090565b5f6009905090565b61074e61189d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d19061311f565b60405180910390fd5b5f60085f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661092761189d565b73ffffffffffffffffffffffffffffffffffffffff1614610946575f80fd5b60016016806101000a81548160ff021916908315150217905550565b61096a61189d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ed9061311f565b60405180910390fd5b633b9aca0081610a06919061316a565b600f8190555050565b610a1761189d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9a9061311f565b60405180910390fd5b5f479050610ab0816121c9565b50565b5f610afa60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461228d565b9050919050565b610b0961189d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8c9061311f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f610c5861189d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdb9061311f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906131f5565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db79061325d565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610dfa9190612fd9565b602060405180830381865afa158015610e15573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e39919061328f565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401610e769291906132ba565b6020604051808303815f875af1158015610e92573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb691906132f5565b91505092915050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f474c455000000000000000000000000000000000000000000000000000000000815250905090565b610f2b61189d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fae9061311f565b60405180910390fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103d90613390565b60405180910390fd5b61105082826122f9565b5050565b5f61106761106061189d565b8484611a67565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110b161189d565b73ffffffffffffffffffffffffffffffffffffffff16146110d0575f80fd5b80601660176101000a81548160ff02191690831515021790555050565b6110f561189d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611181576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111789061311f565b60405180910390fd5b5f61118b30610ab3565b905061119681612351565b50565b6111a161189d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461122d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112249061311f565b60405180910390fd5b601660149054906101000a900460ff161561127d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611274906133f8565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506113093060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16670de0b6b3a76400006118a4565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611352573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611376919061342a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ff919061342a565b6040518363ffffffff1660e01b815260040161141c929190613455565b6020604051808303815f875af1158015611438573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061145c919061342a565b60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306114e330610ab3565b5f806114ed610ebf565b426040518863ffffffff1660e01b815260040161150f969594939291906134be565b60606040518083038185885af115801561152b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611550919061351d565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016115f09291906132ba565b6020604051808303815f875af115801561160c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061163091906132f5565b50600160175f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601660146101000a81548160ff02191690831515021790555050565b6116cd61189d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611759576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117509061311f565b60405180910390fd5b826010819055508160118190555080600d81905550505050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117b361189d565b73ffffffffffffffffffffffffffffffffffffffff16146117d2575f80fd5b633b9aca00816117e2919061316a565b60048190555050565b5f61181660165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ab3565b905090565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611912576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611909906135dd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611980576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119779061366b565b60405180910390fd5b8060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a5a9190612e33565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc906136f9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3a90613787565b60405180910390fd5b5f8111611b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7c90613815565b60405180910390fd5b611b8d610ebf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611bfb5750611bcb610ebf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611fe95760165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611ca4575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611cb257505f600f5414155b15611d1057600f5481611cc484610ab3565b611cce9190613833565b1115611d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d06906138d6565b60405180910390fd5b5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611db9575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611e0c575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e6a57601660149054906101000a900460ff16611e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e579061393e565b60405180910390fd5b601054600e819055505b5f611e7430610ab3565b9050601660189054906101000a900460ff16158015611ee0575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611ef85750601660149054906101000a900460ff165b15611fe757601154600e8190555060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611fe657600454811115611fe557600b54431115611f71575f600c819055505b60168054906101000a900460ff1680611f8c57506001600c54105b15611fe457601660179054906101000a900460ff1615611fac5760045490505b611fb581612351565b600c5f815480929190611fc79061395c565b91905055505f4790505f811115611fe257611fe1476121c9565b5b505b5b5b5b505b5f60019050601660159054906101000a900460ff168061204f575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806120a0575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156120ad575f9050612155565b60175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561214b575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612154575f90505b5b612161848484846125bc565b50505050565b5f8383111582906121ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a59190612d02565b60405180910390fd5b505f83856121bc91906139a3565b9050809150509392505050565b5f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161220f90613a03565b5f6040518083038185875af1925050503d805f8114612249576040519150601f19603f3d011682016040523d82523d5f602084013e61224e565b606091505b505090507fb6caad5b328a3de9a49b44605241a4b72f6f1aa955829d12e37decfd84a0b8ca816040516122819190612e0b565b60405180910390a15050565b5f6002548211156122d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ca90613a87565b60405180910390fd5b5f6122dc6125e9565b90506122f1818461261290919063ffffffff16565b915050919050565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6001601660186101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561238857612387613aa5565b5b6040519080825280602002602001820160405280156123b65781602001602082028036833780820191505090505b50905030815f815181106123cd576123cc613ad2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612471573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612495919061342a565b816001815181106124a9576124a8613ad2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061250f3060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118a4565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612571959493929190613bb6565b5f604051808303815f87803b158015612588575f80fd5b505af115801561259a573d5f803e3d5ffd5b50505050505f601660186101000a81548160ff02191690831515021790555050565b806125ca576125c961265b565b5b6125d584848461267d565b806125e3576125e261283d565b5b50505050565b5f805f6125f4612851565b9150915061260b818361261290919063ffffffff16565b9250505090565b5f61265383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506128ad565b905092915050565b600d54601281905550600e546013819055505f600d819055505f600e81905550565b5f805f805f8061268c8761290e565b9550955095509550955095506126e88660055f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461296e90919063ffffffff16565b60055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127798560055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129b790919063ffffffff16565b60055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127c381612a14565b6127cd8483612acb565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161282a9190612e33565b60405180910390a3505050505050505050565b601254600d81905550601354600e81905550565b5f805f60025490505f670de0b6b3a76400009050612882670de0b6b3a764000060025461261290919063ffffffff16565b8210156128a057600254670de0b6b3a76400009350935050506128a9565b81819350935050505b9091565b5f80831182906128f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ea9190612d02565b60405180910390fd5b505f83856129019190613c3b565b9050809150509392505050565b5f805f805f805f805f6129268a600d54600e54612b05565b9250925092505f6129356125e9565b90505f805f6129468e878787612b97565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f6129af83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612167565b905092915050565b5f8082846129c59190613833565b905083811015612a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0190613cb5565b60405180910390fd5b8091505092915050565b5f612a1d6125e9565b90505f612a338284612c1b90919063ffffffff16565b9050612a858160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129b790919063ffffffff16565b60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612ae08260025461296e90919063ffffffff16565b600281905550612afb816003546129b790919063ffffffff16565b6003819055505050565b5f805f80612b2f6064612b21888a612c1b90919063ffffffff16565b61261290919063ffffffff16565b90505f612b586064612b4a888b612c1b90919063ffffffff16565b61261290919063ffffffff16565b90505f612b8082612b72858c61296e90919063ffffffff16565b61296e90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612bae8589612c1b90919063ffffffff16565b90505f612bc48689612c1b90919063ffffffff16565b90505f612bda8789612c1b90919063ffffffff16565b90505f612c0282612bf4858761296e90919063ffffffff16565b61296e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612c2b575f9050612c8c565b5f8284612c38919061316a565b9050828482612c479190613c3b565b14612c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7e90613d43565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612cd482612c92565b612cde8185612c9c565b9350612cee818560208601612cac565b612cf781612cba565b840191505092915050565b5f6020820190508181035f830152612d1a8184612cca565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d4f82612d26565b9050919050565b612d5f81612d45565b8114612d69575f80fd5b50565b5f81359050612d7a81612d56565b92915050565b5f819050919050565b612d9281612d80565b8114612d9c575f80fd5b50565b5f81359050612dad81612d89565b92915050565b5f8060408385031215612dc957612dc8612d22565b5b5f612dd685828601612d6c565b9250506020612de785828601612d9f565b9150509250929050565b5f8115159050919050565b612e0581612df1565b82525050565b5f602082019050612e1e5f830184612dfc565b92915050565b612e2d81612d80565b82525050565b5f602082019050612e465f830184612e24565b92915050565b5f805f60608486031215612e6357612e62612d22565b5b5f612e7086828701612d6c565b9350506020612e8186828701612d6c565b9250506040612e9286828701612d9f565b9150509250925092565b5f60ff82169050919050565b612eb181612e9c565b82525050565b5f602082019050612eca5f830184612ea8565b92915050565b5f612eda82612d26565b9050919050565b612eea81612ed0565b8114612ef4575f80fd5b50565b5f81359050612f0581612ee1565b92915050565b5f60208284031215612f2057612f1f612d22565b5b5f612f2d84828501612ef7565b91505092915050565b5f60208284031215612f4b57612f4a612d22565b5b5f612f5884828501612d9f565b91505092915050565b5f60208284031215612f7657612f75612d22565b5b5f612f8384828501612d6c565b91505092915050565b5f8060408385031215612fa257612fa1612d22565b5b5f612faf85828601612d6c565b9250506020612fc085828601612d6c565b9150509250929050565b612fd381612d45565b82525050565b5f602082019050612fec5f830184612fca565b92915050565b612ffb81612df1565b8114613005575f80fd5b50565b5f8135905061301681612ff2565b92915050565b5f806040838503121561303257613031612d22565b5b5f61303f85828601612d6c565b925050602061305085828601613008565b9150509250929050565b5f6020828403121561306f5761306e612d22565b5b5f61307c84828501613008565b91505092915050565b5f805f6060848603121561309c5761309b612d22565b5b5f6130a986828701612d9f565b93505060206130ba86828701612d9f565b92505060406130cb86828701612d9f565b9150509250925092565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613109602083612c9c565b9150613114826130d5565b602082019050919050565b5f6020820190508181035f830152613136816130fd565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61317482612d80565b915061317f83612d80565b925082820261318d81612d80565b915082820484148315176131a4576131a361313d565b5b5092915050565b7f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000005f82015250565b5f6131df601a83612c9c565b91506131ea826131ab565b602082019050919050565b5f6020820190508181035f83015261320c816131d3565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e73000000005f82015250565b5f613247601c83612c9c565b915061325282613213565b602082019050919050565b5f6020820190508181035f8301526132748161323b565b9050919050565b5f8151905061328981612d89565b92915050565b5f602082840312156132a4576132a3612d22565b5b5f6132b18482850161327b565b91505092915050565b5f6040820190506132cd5f830185612fca565b6132da6020830184612e24565b9392505050565b5f815190506132ef81612ff2565b92915050565b5f6020828403121561330a57613309612d22565b5b5f613317848285016132e1565b91505092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f61337a603983612c9c565b915061338582613320565b604082019050919050565b5f6020820190508181035f8301526133a78161336e565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6133e2601783612c9c565b91506133ed826133ae565b602082019050919050565b5f6020820190508181035f83015261340f816133d6565b9050919050565b5f8151905061342481612d56565b92915050565b5f6020828403121561343f5761343e612d22565b5b5f61344c84828501613416565b91505092915050565b5f6040820190506134685f830185612fca565b6134756020830184612fca565b9392505050565b5f819050919050565b5f819050919050565b5f6134a86134a361349e8461347c565b613485565b612d80565b9050919050565b6134b88161348e565b82525050565b5f60c0820190506134d15f830189612fca565b6134de6020830188612e24565b6134eb60408301876134af565b6134f860608301866134af565b6135056080830185612fca565b61351260a0830184612e24565b979650505050505050565b5f805f6060848603121561353457613533612d22565b5b5f6135418682870161327b565b93505060206135528682870161327b565b92505060406135638682870161327b565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6135c7602483612c9c565b91506135d28261356d565b604082019050919050565b5f6020820190508181035f8301526135f4816135bb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613655602283612c9c565b9150613660826135fb565b604082019050919050565b5f6020820190508181035f83015261368281613649565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6136e3602583612c9c565b91506136ee82613689565b604082019050919050565b5f6020820190508181035f830152613710816136d7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613771602383612c9c565b915061377c82613717565b604082019050919050565b5f6020820190508181035f83015261379e81613765565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6137ff602983612c9c565b915061380a826137a5565b604082019050919050565b5f6020820190508181035f83015261382c816137f3565b9050919050565b5f61383d82612d80565b915061384883612d80565b92508282019050808211156138605761385f61313d565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6138c0602383612c9c565b91506138cb82613866565b604082019050919050565b5f6020820190508181035f8301526138ed816138b4565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65642e00000000000000005f82015250565b5f613928601883612c9c565b9150613933826138f4565b602082019050919050565b5f6020820190508181035f8301526139558161391c565b9050919050565b5f61396682612d80565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036139985761399761313d565b5b600182019050919050565b5f6139ad82612d80565b91506139b883612d80565b92508282039050818111156139d0576139cf61313d565b5b92915050565b5f81905092915050565b50565b5f6139ee5f836139d6565b91506139f9826139e0565b5f82019050919050565b5f613a0d826139e3565b9150819050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613a71602a83612c9c565b9150613a7c82613a17565b604082019050919050565b5f6020820190508181035f830152613a9e81613a65565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613b3181612d45565b82525050565b5f613b428383613b28565b60208301905092915050565b5f602082019050919050565b5f613b6482613aff565b613b6e8185613b09565b9350613b7983613b19565b805f5b83811015613ba9578151613b908882613b37565b9750613b9b83613b4e565b925050600181019050613b7c565b5085935050505092915050565b5f60a082019050613bc95f830188612e24565b613bd660208301876134af565b8181036040830152613be88186613b5a565b9050613bf76060830185612fca565b613c046080830184612e24565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613c4582612d80565b9150613c5083612d80565b925082613c6057613c5f613c0e565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613c9f601b83612c9c565b9150613caa82613c6b565b602082019050919050565b5f6020820190508181035f830152613ccc81613c93565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d2d602183612c9c565b9150613d3882613cd3565b604082019050919050565b5f6020820190508181035f830152613d5a81613d21565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122084bcc69fe4d3d15984e947c76f79f0a64a9cd1c503add172cd4b420878ce329564736f6c634300081a0033
Deployed Bytecode Sourcemap
9108:13567:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18929:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17708:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19206:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18052:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20775:111;;;;;;;;;;;;;:::i;:::-;;17194:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19115:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21184:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20894:127;;;;;;;;;;;;;:::i;:::-;;20666:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21721:153;;;;;;;;;;;;;:::i;:::-;;17411:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8951:148;;;;;;;;;;;;;:::i;:::-;;22272:394;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8737:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19020:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21882:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17877:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21029:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21555:154;;;;;;;;;;;;;:::i;:::-;;19693:779;;;;;;;;;;;;;:::i;:::-;;21383:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20484:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17302:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17557:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18929:83;18966:13;18999:5;;;;;;;;;;;;;;;;;18992:12;;18929:83;:::o;17708:161::-;17783:4;17800:39;17809:12;:10;:12::i;:::-;17823:7;17832:6;17800:8;:39::i;:::-;17857:4;17850:11;;17708:161;;;;:::o;19206:95::-;19259:7;9417:11;19279:14;;19206:95;:::o;18052:313::-;18150:4;18167:36;18177:6;18185:9;18196:6;18167:9;:36::i;:::-;18214:121;18223:6;18231:12;:10;:12::i;:::-;18245:89;18283:6;18245:89;;;;;;;;;;;;;;;;;:11;:19;18257:6;18245:19;;;;;;;;;;;;;;;:33;18265:12;:10;:12::i;:::-;18245:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;18214:8;:121::i;:::-;18353:4;18346:11;;18052:313;;;;;:::o;20775:111::-;20841:11;;;;;;;;;;;20825:27;;:12;:10;:12::i;:::-;:27;;;20817:36;;;;;;20874:4;20864:7;;:14;;;;;;;;;;;;;;;;;;20775:111::o;17194:100::-;17238:4;17262:24;17280:4;17262:9;:24::i;:::-;17255:31;;17194:100;:::o;19115:83::-;19156:5;9319:1;19174:16;;19115:83;:::o;21184:191::-;8874:12;:10;:12::i;:::-;8864:22;;:6;;;;;;;;;;:22;;;8856:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21293:5:::1;21259:18;:31;21278:11;;;;;;;;;;;21259:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21323:3;21309:11;;:17;;;;;;;;;;;;;;;;;;21363:4;21337:18;:23;21356:3;21337:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;21184:191:::0;:::o;20894:127::-;20968:11;;;;;;;;;;;20952:27;;:12;:10;:12::i;:::-;:27;;;20944:36;;;;;;21009:4;20991:15;;:22;;;;;;;;;;;;;;;;;;20894:127::o;20666:101::-;8874:12;:10;:12::i;:::-;8864:22;;:6;;;;;;;;;;:22;;;8856:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20754:5:::1;20748:3;:11;;;;:::i;:::-;20731:14;:28;;;;20666:101:::0;:::o;21721:153::-;8874:12;:10;:12::i;:::-;8864:22;;:6;;;;;;;;;;:22;;;8856:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21773:26:::1;21802:21;21773:50;;21834:32;21847:18;21834:12;:32::i;:::-;21762:112;21721:153::o:0;17411:138::-;17477:7;17504:37;17524:7;:16;17532:7;17524:16;;;;;;;;;;;;;;;;17504:19;:37::i;:::-;17497:44;;17411:138;;;:::o;8951:148::-;8874:12;:10;:12::i;:::-;8864:22;;:6;;;;;;;;;;:22;;;8856:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9058:1:::1;9021:40;;9042:6;::::0;::::1;;;;;;;;9021:40;;;;;;;;;;;;9089:1;9072:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;8951:148::o:0;22272:394::-;22359:10;8874:12;:10;:12::i;:::-;8864:22;;:6;;;;;;;;;;:22;;;8856:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22408:1:::1;22390:20;;:6;:20;;::::0;22382:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22478:4;22460:23;;:6;:23;;::::0;22452:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22527:24;22561:6;22554:24;;;22587:4;22554:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22527:66;;22619:6;22612:23;;;22636:3;22641:16;22612:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22604:54;;22371:295;22272:394:::0;;;;:::o;8737:79::-;8775:7;8802:6;;;;;;;;;;;8795:13;;8737:79;:::o;19020:87::-;19059:13;19092:7;;;;;;;;;;;;;;;;;19085:14;;19020:87;:::o;21882:244::-;8874:12;:10;:12::i;:::-;8864:22;;:6;;;;;;;;;;:22;;;8856:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21991:13:::1;;;;;;;;;;;21983:21;;:4;:21;;::::0;21975:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22077:41;22106:4;22112:5;22077:28;:41::i;:::-;21882:244:::0;;:::o;17877:167::-;17955:4;17972:42;17982:12;:10;:12::i;:::-;17996:9;18007:6;17972:9;:42::i;:::-;18032:4;18025:11;;17877:167;;;;:::o;21029:143::-;21115:11;;;;;;;;;;;21099:27;;:12;:10;:12::i;:::-;:27;;;21091:36;;;;;;21159:5;21138:18;;:26;;;;;;;;;;;;;;;;;;21029:143;:::o;21555:154::-;8874:12;:10;:12::i;:::-;8864:22;;:6;;;;;;;;;;:22;;;8856:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21607:23:::1;21633:24;21651:4;21633:9;:24::i;:::-;21607:50;;21668:33;21685:15;21668:16;:33::i;:::-;21596:113;21555:154::o:0;19693:779::-;8874:12;:10;:12::i;:::-;8864:22;;:6;;;;;;;;;;:22;;;8856:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19757:11:::1;;;;;;;;;;;19756:12;19748:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;19808:35;19865:42;19808:100;;19947:16;19929:15;;:34;;;;;;;;;;;;;;;;;;19974:58;19991:4;20006:15;;;;;;;;;;;9417:11;19974:8;:58::i;:::-;20077:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20059:56;;;20124:4;20131:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20059:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20043:13;;:112;;;;;;;;;;;;;;;;;;20166:15;;;;;;;;;;;:31;;;20205:21;20236:4;20242:24;20260:4;20242:9;:24::i;:::-;20267:1;20269::::0;20271:7:::1;:5;:7::i;:::-;20279:15;20166:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20313:13;;;;;;;;;;;20306:29;;;20344:15;;;;;;;;;;;20362:14;20306:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20431:4;20388:25;:40;20414:13;;;;;;;;;;;20388:40;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;20460:4;20446:11;;:18;;;;;;;;;;;;;;;;;;19737:735;19693:779::o:0;21383:164::-;8874:12;:10;:12::i;:::-;8864:22;;:6;;;;;;;;;;:22;;;8856:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21483:3:::1;21473:7;:13;;;;21508:4;21497:8;:15;;;;21533:6;21523:7;:16;;;;21383:164:::0;;;:::o;20484:174::-;20583:11;;;;;;;;;;;20567:27;;:12;:10;:12::i;:::-;:27;;;20559:36;;;;;;20645:5;20634:8;:16;;;;:::i;:::-;20606:25;:44;;;;20484:174;:::o;17302:101::-;17347:4;17371:24;17381:13;;;;;;;;;;;17371:9;:24::i;:::-;17364:31;;17302:101;:::o;17557:143::-;17638:7;17665:11;:18;17677:5;17665:18;;;;;;;;;;;;;;;:27;17684:7;17665:27;;;;;;;;;;;;;;;;17658:34;;17557:143;;;;:::o;8277:98::-;8330:7;8357:10;8350:17;;8277:98;:::o;19309:335::-;19419:1;19402:19;;:5;:19;;;19394:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19500:1;19481:21;;:7;:21;;;19473:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19582:6;19552:11;:18;19564:5;19552:18;;;;;;;;;;;;;;;:27;19571:7;19552:27;;;;;;;;;;;;;;;:36;;;;19620:7;19604:32;;19613:5;19604:32;;;19629:6;19604:32;;;;;;:::i;:::-;;;;;;;;19309:335;;;:::o;11387:2302::-;11491:1;11475:18;;:4;:18;;;11467:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11568:1;11554:16;;:2;:16;;;11546:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11638:1;11629:6;:10;11621:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11709:7;:5;:7::i;:::-;11701:15;;:4;:15;;;;:32;;;;;11726:7;:5;:7::i;:::-;11720:13;;:2;:13;;;;11701:32;11698:1656;;;11761:13;;;;;;;;;;;11755:19;;:2;:19;;;;:52;;;;;11779:24;:28;11804:2;11779:28;;;;;;;;;;;;;;;;;;;;;;;;;11778:29;11755:52;:75;;;;;11829:1;11811:14;;:19;;11755:75;11752:212;;;11894:14;;11884:6;11859:22;11877:2;11859:9;:22::i;:::-;:31;;;;:::i;:::-;:49;;11851:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;11752:212;12003:13;;;;;;;;;;;11995:21;;:4;:21;;;:55;;;;;12034:15;;;;;;;;;;;12020:30;;:2;:30;;;;11995:55;:82;;;;;12055:18;:22;12074:2;12055:22;;;;;;;;;;;;;;;;;;;;;;;;;12054:23;11995:82;11992:207;;;12106:11;;;;;;;;;;;12098:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12176:7;;12165:8;:18;;;;11992:207;12213:28;12244:24;12262:4;12244:9;:24::i;:::-;12213:55;;12289:6;;;;;;;;;;;12288:7;:32;;;;;12307:13;;;;;;;;;;;12299:21;;:4;:21;;;;12288:32;:47;;;;;12324:11;;;;;;;;;;;12288:47;12285:1058;;;12369:8;;12358;:19;;;;12402:25;:29;12428:2;12402:29;;;;;;;;;;;;;;;;;;;;;;;;;12398:930;;;12482:25;;12459:20;:48;12456:853;;;12555:16;;12540:12;:31;12536:117;;;12624:1;12604:17;:21;;;;12536:117;12685:15;;;;;;;;;;:40;;;;12724:1;12704:17;;:21;12685:40;12681:605;;;12761:18;;;;;;;;;;;12758:138;;;12839:25;;12816:48;;12758:138;12928:38;12945:20;12928:16;:38::i;:::-;12997:17;;:19;;;;;;;;;:::i;:::-;;;;;;13049:26;13078:21;13049:50;;13154:1;13133:18;:22;13130:129;;;13192:35;13205:21;13192:12;:35::i;:::-;13130:129;12727:559;12681:605;12456:853;12398:930;12285:1058;11735:1619;11698:1656;13364:12;13379:4;13364:19;;13399:7;;;;;;;;;;;:35;;;;13410:18;:24;13429:4;13410:24;;;;;;;;;;;;;;;;;;;;;;;;;13399:35;:61;;;;13438:18;:22;13457:2;13438:22;;;;;;;;;;;;;;;;;;;;;;;;;13399:61;13396:227;;;13487:5;13477:15;;13396:227;;;13514:25;:31;13540:4;13514:31;;;;;;;;;;;;;;;;;;;;;;;;;13513:32;:66;;;;;13550:25;:29;13576:2;13550:29;;;;;;;;;;;;;;;;;;;;;;;;;13549:30;13513:66;13510:113;;;13606:5;13596:15;;13510:113;13396:227;13643:38;13658:4;13663:2;13666:6;13673:7;13643:14;:38::i;:::-;11456:2233;11387:2302;;;:::o;1358:192::-;1444:7;1477:1;1472;:6;;1480:12;1464:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1504:9;1520:1;1516;:5;;;;:::i;:::-;1504:17;;1541:1;1534:8;;;1358:192;;;;;:::o;14196:154::-;14254:12;14272:11;;;;;;;;;;;:16;;14296:6;14272:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14253:54;;;14325:17;14334:7;14325:17;;;;;;:::i;:::-;;;;;;;;14242:108;14196:154;:::o;18667:254::-;18734:7;18773;;18762;:18;;18754:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;18838:19;18861:10;:8;:10::i;:::-;18838:33;;18889:24;18901:11;18889:7;:11;;:24;;;;:::i;:::-;18882:31;;;18667:254;;;:::o;22134:130::-;22251:5;22217:25;:31;22243:4;22217:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22134:130;;:::o;13697:483::-;10794:4;10785:6;;:13;;;;;;;;;;;;;;;;;;13775:21:::1;13813:1;13799:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13775:40;;13844:4;13826;13831:1;13826:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13870:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13860:4;13865:1;13860:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;13903:62;13920:4;13935:15;;;;;;;;;;;13953:11;13903:8;:62::i;:::-;13976:15;;;;;;;;;;;:66;;;14057:11;14083:1;14099:4;14126;14146:15;13976:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13764:416;10830:5:::0;10821:6;;:14;;;;;;;;;;;;;;;;;;13697:483;:::o;14362:263::-;14474:7;14470:40;;14496:14;:12;:14::i;:::-;14470:40;14521:44;14539:6;14547:9;14558:6;14521:17;:44::i;:::-;14580:7;14576:41;;14602:15;:13;:15::i;:::-;14576:41;14362:263;;;;:::o;15966:163::-;16007:7;16028:15;16045;16064:19;:17;:19::i;:::-;16027:56;;;;16101:20;16113:7;16101;:11;;:20;;;;:::i;:::-;16094:27;;;;15966:163;:::o;2756:132::-;2814:7;2841:39;2845:1;2848;2841:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2834:46;;2756:132;;;;:::o;18373:159::-;18434:7;;18416:15;:25;;;;18471:8;;18452:16;:27;;;;18500:1;18490:7;:11;;;;18523:1;18512:8;:12;;;;18373:159::o;14633:490::-;14732:15;14749:23;14774:12;14788:23;14813:12;14827:13;14844:19;14855:7;14844:10;:19::i;:::-;14731:132;;;;;;;;;;;;14892:28;14912:7;14892;:15;14900:6;14892:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14874:7;:15;14882:6;14874:15;;;;;;;;;;;;;;;:46;;;;14952:39;14975:15;14952:7;:18;14960:9;14952:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14931:7;:18;14939:9;14931:18;;;;;;;;;;;;;;;:60;;;;15005:16;15015:5;15005:9;:16::i;:::-;15032:23;15044:4;15050;15032:11;:23::i;:::-;15088:9;15071:44;;15080:6;15071:44;;;15099:15;15071:44;;;;;;:::i;:::-;;;;;;;;14720:403;;;;;;14633:490;;;:::o;18544:115::-;18598:15;;18588:7;:25;;;;18635:16;;18624:8;:27;;;;18544:115::o;16137:255::-;16187:7;16196;16216:15;16234:7;;16216:25;;16252:15;9417:11;16252:25;;16301:20;9417:11;16301:7;;:11;;:20;;;;:::i;:::-;16291:7;:30;16288:60;;;16331:7;;9417:11;16323:25;;;;;;;;16288:60;16367:7;16376;16359:25;;;;;;16137:255;;;:::o;3384:278::-;3470:7;3502:1;3498;:5;3505:12;3490:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3529:9;3545:1;3541;:5;;;;:::i;:::-;3529:17;;3653:1;3646:8;;;3384:278;;;;;:::o;15131:468::-;15190:7;15199;15208;15217;15226;15235;15256:23;15281:12;15295:13;15312:39;15324:7;15333;;15342:8;;15312:11;:39::i;:::-;15255:96;;;;;;15362:19;15385:10;:8;:10::i;:::-;15362:33;;15407:15;15424:23;15449:12;15465:46;15477:7;15486:4;15492:5;15499:11;15465;:46::i;:::-;15406:105;;;;;;15530:7;15539:15;15556:4;15562:15;15579:4;15585:5;15522:69;;;;;;;;;;;;;;;;;;;15131:468;;;;;;;:::o;919:136::-;977:7;1004:43;1008:1;1011;1004:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;997:50;;919:136;;;;:::o;455:181::-;513:7;533:9;549:1;545;:5;;;;:::i;:::-;533:17;;574:1;569;:6;;561:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;627:1;620:8;;;455:181;;;;:::o;16817:214::-;16870:19;16893:10;:8;:10::i;:::-;16870:33;;16914:13;16930:22;16940:11;16930:5;:9;;:22;;;;:::i;:::-;16914:38;;16990:33;17017:5;16990:7;:22;17006:4;16990:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;16965:7;:22;16981:4;16965:22;;;;;;;;;;;;;;;:58;;;;16859:172;;16817:214;:::o;17039:147::-;17117:17;17129:4;17117:7;;:11;;:17;;;;:::i;:::-;17107:7;:27;;;;17158:20;17173:4;17158:10;;:14;;:20;;;;:::i;:::-;17145:10;:33;;;;17039:147;;:::o;15607:351::-;15700:7;15709;15718;15738:12;15753:28;15777:3;15753:19;15765:6;15753:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15738:43;;15792:13;15808:29;15833:3;15808:20;15820:7;15808;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;15792:45;;15848:23;15874:28;15896:5;15874:17;15886:4;15874:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15848:54;;15921:15;15938:4;15944:5;15913:37;;;;;;;;;15607:351;;;;;;;:::o;16400:409::-;16510:7;16519;16528;16548:15;16566:24;16578:11;16566:7;:11;;:24;;;;:::i;:::-;16548:42;;16601:12;16616:21;16625:11;16616:4;:8;;:21;;;;:::i;:::-;16601:36;;16648:13;16664:22;16674:11;16664:5;:9;;:22;;;;:::i;:::-;16648:38;;16697:23;16723:28;16745:5;16723:17;16735:4;16723:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16697:54;;16770:7;16779:15;16796:4;16762:39;;;;;;;;;;16400:409;;;;;;;;:::o;1809:471::-;1867:7;2117:1;2112;:6;2108:47;;2142:1;2135:8;;;;2108:47;2167:9;2183:1;2179;:5;;;;:::i;:::-;2167:17;;2212:1;2207;2203;:5;;;;:::i;:::-;:10;2195:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2271:1;2264:8;;;1809:471;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:104::-;4791:7;4820:24;4838:5;4820:24;:::i;:::-;4809:35;;4746:104;;;:::o;4856:138::-;4937:32;4963:5;4937:32;:::i;:::-;4930:5;4927:43;4917:71;;4984:1;4981;4974:12;4917:71;4856:138;:::o;5000:155::-;5054:5;5092:6;5079:20;5070:29;;5108:41;5143:5;5108:41;:::i;:::-;5000:155;;;;:::o;5161:345::-;5228:6;5277:2;5265:9;5256:7;5252:23;5248:32;5245:119;;;5283:79;;:::i;:::-;5245:119;5403:1;5428:61;5481:7;5472:6;5461:9;5457:22;5428:61;:::i;:::-;5418:71;;5374:125;5161:345;;;;:::o;5512:329::-;5571:6;5620:2;5608:9;5599:7;5595:23;5591:32;5588:119;;;5626:79;;:::i;:::-;5588:119;5746:1;5771:53;5816:7;5807:6;5796:9;5792:22;5771:53;:::i;:::-;5761:63;;5717:117;5512:329;;;;:::o;5847:::-;5906:6;5955:2;5943:9;5934:7;5930:23;5926:32;5923:119;;;5961:79;;:::i;:::-;5923:119;6081:1;6106:53;6151:7;6142:6;6131:9;6127:22;6106:53;:::i;:::-;6096:63;;6052:117;5847:329;;;;:::o;6182:474::-;6250:6;6258;6307:2;6295:9;6286:7;6282:23;6278:32;6275:119;;;6313:79;;:::i;:::-;6275:119;6433:1;6458:53;6503:7;6494:6;6483:9;6479:22;6458:53;:::i;:::-;6448:63;;6404:117;6560:2;6586:53;6631:7;6622:6;6611:9;6607:22;6586:53;:::i;:::-;6576:63;;6531:118;6182:474;;;;;:::o;6662:118::-;6749:24;6767:5;6749:24;:::i;:::-;6744:3;6737:37;6662:118;;:::o;6786:222::-;6879:4;6917:2;6906:9;6902:18;6894:26;;6930:71;6998:1;6987:9;6983:17;6974:6;6930:71;:::i;:::-;6786:222;;;;:::o;7014:116::-;7084:21;7099:5;7084:21;:::i;:::-;7077:5;7074:32;7064:60;;7120:1;7117;7110:12;7064:60;7014:116;:::o;7136:133::-;7179:5;7217:6;7204:20;7195:29;;7233:30;7257:5;7233:30;:::i;:::-;7136:133;;;;:::o;7275:468::-;7340:6;7348;7397:2;7385:9;7376:7;7372:23;7368:32;7365:119;;;7403:79;;:::i;:::-;7365:119;7523:1;7548:53;7593:7;7584:6;7573:9;7569:22;7548:53;:::i;:::-;7538:63;;7494:117;7650:2;7676:50;7718:7;7709:6;7698:9;7694:22;7676:50;:::i;:::-;7666:60;;7621:115;7275:468;;;;;:::o;7749:323::-;7805:6;7854:2;7842:9;7833:7;7829:23;7825:32;7822:119;;;7860:79;;:::i;:::-;7822:119;7980:1;8005:50;8047:7;8038:6;8027:9;8023:22;8005:50;:::i;:::-;7995:60;;7951:114;7749:323;;;;:::o;8078:619::-;8155:6;8163;8171;8220:2;8208:9;8199:7;8195:23;8191:32;8188:119;;;8226:79;;:::i;:::-;8188:119;8346:1;8371:53;8416:7;8407:6;8396:9;8392:22;8371:53;:::i;:::-;8361:63;;8317:117;8473:2;8499:53;8544:7;8535:6;8524:9;8520:22;8499:53;:::i;:::-;8489:63;;8444:118;8601:2;8627:53;8672:7;8663:6;8652:9;8648:22;8627:53;:::i;:::-;8617:63;;8572:118;8078:619;;;;;:::o;8703:182::-;8843:34;8839:1;8831:6;8827:14;8820:58;8703:182;:::o;8891:366::-;9033:3;9054:67;9118:2;9113:3;9054:67;:::i;:::-;9047:74;;9130:93;9219:3;9130:93;:::i;:::-;9248:2;9243:3;9239:12;9232:19;;8891:366;;;:::o;9263:419::-;9429:4;9467:2;9456:9;9452:18;9444:26;;9516:9;9510:4;9506:20;9502:1;9491:9;9487:17;9480:47;9544:131;9670:4;9544:131;:::i;:::-;9536:139;;9263:419;;;:::o;9688:180::-;9736:77;9733:1;9726:88;9833:4;9830:1;9823:15;9857:4;9854:1;9847:15;9874:410;9914:7;9937:20;9955:1;9937:20;:::i;:::-;9932:25;;9971:20;9989:1;9971:20;:::i;:::-;9966:25;;10026:1;10023;10019:9;10048:30;10066:11;10048:30;:::i;:::-;10037:41;;10227:1;10218:7;10214:15;10211:1;10208:22;10188:1;10181:9;10161:83;10138:139;;10257:18;;:::i;:::-;10138:139;9922:362;9874:410;;;;:::o;10290:176::-;10430:28;10426:1;10418:6;10414:14;10407:52;10290:176;:::o;10472:366::-;10614:3;10635:67;10699:2;10694:3;10635:67;:::i;:::-;10628:74;;10711:93;10800:3;10711:93;:::i;:::-;10829:2;10824:3;10820:12;10813:19;;10472:366;;;:::o;10844:419::-;11010:4;11048:2;11037:9;11033:18;11025:26;;11097:9;11091:4;11087:20;11083:1;11072:9;11068:17;11061:47;11125:131;11251:4;11125:131;:::i;:::-;11117:139;;10844:419;;;:::o;11269:178::-;11409:30;11405:1;11397:6;11393:14;11386:54;11269:178;:::o;11453:366::-;11595:3;11616:67;11680:2;11675:3;11616:67;:::i;:::-;11609:74;;11692:93;11781:3;11692:93;:::i;:::-;11810:2;11805:3;11801:12;11794:19;;11453:366;;;:::o;11825:419::-;11991:4;12029:2;12018:9;12014:18;12006:26;;12078:9;12072:4;12068:20;12064:1;12053:9;12049:17;12042:47;12106:131;12232:4;12106:131;:::i;:::-;12098:139;;11825:419;;;:::o;12250:143::-;12307:5;12338:6;12332:13;12323:22;;12354:33;12381:5;12354:33;:::i;:::-;12250:143;;;;:::o;12399:351::-;12469:6;12518:2;12506:9;12497:7;12493:23;12489:32;12486:119;;;12524:79;;:::i;:::-;12486:119;12644:1;12669:64;12725:7;12716:6;12705:9;12701:22;12669:64;:::i;:::-;12659:74;;12615:128;12399:351;;;;:::o;12756:332::-;12877:4;12915:2;12904:9;12900:18;12892:26;;12928:71;12996:1;12985:9;12981:17;12972:6;12928:71;:::i;:::-;13009:72;13077:2;13066:9;13062:18;13053:6;13009:72;:::i;:::-;12756:332;;;;;:::o;13094:137::-;13148:5;13179:6;13173:13;13164:22;;13195:30;13219:5;13195:30;:::i;:::-;13094:137;;;;:::o;13237:345::-;13304:6;13353:2;13341:9;13332:7;13328:23;13324:32;13321:119;;;13359:79;;:::i;:::-;13321:119;13479:1;13504:61;13557:7;13548:6;13537:9;13533:22;13504:61;:::i;:::-;13494:71;;13450:125;13237:345;;;;:::o;13588:244::-;13728:34;13724:1;13716:6;13712:14;13705:58;13797:27;13792:2;13784:6;13780:15;13773:52;13588:244;:::o;13838:366::-;13980:3;14001:67;14065:2;14060:3;14001:67;:::i;:::-;13994:74;;14077:93;14166:3;14077:93;:::i;:::-;14195:2;14190:3;14186:12;14179:19;;13838:366;;;:::o;14210:419::-;14376:4;14414:2;14403:9;14399:18;14391:26;;14463:9;14457:4;14453:20;14449:1;14438:9;14434:17;14427:47;14491:131;14617:4;14491:131;:::i;:::-;14483:139;;14210:419;;;:::o;14635:173::-;14775:25;14771:1;14763:6;14759:14;14752:49;14635:173;:::o;14814:366::-;14956:3;14977:67;15041:2;15036:3;14977:67;:::i;:::-;14970:74;;15053:93;15142:3;15053:93;:::i;:::-;15171:2;15166:3;15162:12;15155:19;;14814:366;;;:::o;15186:419::-;15352:4;15390:2;15379:9;15375:18;15367:26;;15439:9;15433:4;15429:20;15425:1;15414:9;15410:17;15403:47;15467:131;15593:4;15467:131;:::i;:::-;15459:139;;15186:419;;;:::o;15611:143::-;15668:5;15699:6;15693:13;15684:22;;15715:33;15742:5;15715:33;:::i;:::-;15611:143;;;;:::o;15760:351::-;15830:6;15879:2;15867:9;15858:7;15854:23;15850:32;15847:119;;;15885:79;;:::i;:::-;15847:119;16005:1;16030:64;16086:7;16077:6;16066:9;16062:22;16030:64;:::i;:::-;16020:74;;15976:128;15760:351;;;;:::o;16117:332::-;16238:4;16276:2;16265:9;16261:18;16253:26;;16289:71;16357:1;16346:9;16342:17;16333:6;16289:71;:::i;:::-;16370:72;16438:2;16427:9;16423:18;16414:6;16370:72;:::i;:::-;16117:332;;;;;:::o;16455:85::-;16500:7;16529:5;16518:16;;16455:85;;;:::o;16546:60::-;16574:3;16595:5;16588:12;;16546:60;;;:::o;16612:158::-;16670:9;16703:61;16721:42;16730:32;16756:5;16730:32;:::i;:::-;16721:42;:::i;:::-;16703:61;:::i;:::-;16690:74;;16612:158;;;:::o;16776:147::-;16871:45;16910:5;16871:45;:::i;:::-;16866:3;16859:58;16776:147;;:::o;16929:807::-;17178:4;17216:3;17205:9;17201:19;17193:27;;17230:71;17298:1;17287:9;17283:17;17274:6;17230:71;:::i;:::-;17311:72;17379:2;17368:9;17364:18;17355:6;17311:72;:::i;:::-;17393:80;17469:2;17458:9;17454:18;17445:6;17393:80;:::i;:::-;17483;17559:2;17548:9;17544:18;17535:6;17483:80;:::i;:::-;17573:73;17641:3;17630:9;17626:19;17617:6;17573:73;:::i;:::-;17656;17724:3;17713:9;17709:19;17700:6;17656:73;:::i;:::-;16929:807;;;;;;;;;:::o;17742:663::-;17830:6;17838;17846;17895:2;17883:9;17874:7;17870:23;17866:32;17863:119;;;17901:79;;:::i;:::-;17863:119;18021:1;18046:64;18102:7;18093:6;18082:9;18078:22;18046:64;:::i;:::-;18036:74;;17992:128;18159:2;18185:64;18241:7;18232:6;18221:9;18217:22;18185:64;:::i;:::-;18175:74;;18130:129;18298:2;18324:64;18380:7;18371:6;18360:9;18356:22;18324:64;:::i;:::-;18314:74;;18269:129;17742:663;;;;;:::o;18411:223::-;18551:34;18547:1;18539:6;18535:14;18528:58;18620:6;18615:2;18607:6;18603:15;18596:31;18411:223;:::o;18640:366::-;18782:3;18803:67;18867:2;18862:3;18803:67;:::i;:::-;18796:74;;18879:93;18968:3;18879:93;:::i;:::-;18997:2;18992:3;18988:12;18981:19;;18640:366;;;:::o;19012:419::-;19178:4;19216:2;19205:9;19201:18;19193:26;;19265:9;19259:4;19255:20;19251:1;19240:9;19236:17;19229:47;19293:131;19419:4;19293:131;:::i;:::-;19285:139;;19012:419;;;:::o;19437:221::-;19577:34;19573:1;19565:6;19561:14;19554:58;19646:4;19641:2;19633:6;19629:15;19622:29;19437:221;:::o;19664:366::-;19806:3;19827:67;19891:2;19886:3;19827:67;:::i;:::-;19820:74;;19903:93;19992:3;19903:93;:::i;:::-;20021:2;20016:3;20012:12;20005:19;;19664:366;;;:::o;20036:419::-;20202:4;20240:2;20229:9;20225:18;20217:26;;20289:9;20283:4;20279:20;20275:1;20264:9;20260:17;20253:47;20317:131;20443:4;20317:131;:::i;:::-;20309:139;;20036:419;;;:::o;20461:224::-;20601:34;20597:1;20589:6;20585:14;20578:58;20670:7;20665:2;20657:6;20653:15;20646:32;20461:224;:::o;20691:366::-;20833:3;20854:67;20918:2;20913:3;20854:67;:::i;:::-;20847:74;;20930:93;21019:3;20930:93;:::i;:::-;21048:2;21043:3;21039:12;21032:19;;20691:366;;;:::o;21063:419::-;21229:4;21267:2;21256:9;21252:18;21244:26;;21316:9;21310:4;21306:20;21302:1;21291:9;21287:17;21280:47;21344:131;21470:4;21344:131;:::i;:::-;21336:139;;21063:419;;;:::o;21488:222::-;21628:34;21624:1;21616:6;21612:14;21605:58;21697:5;21692:2;21684:6;21680:15;21673:30;21488:222;:::o;21716:366::-;21858:3;21879:67;21943:2;21938:3;21879:67;:::i;:::-;21872:74;;21955:93;22044:3;21955:93;:::i;:::-;22073:2;22068:3;22064:12;22057:19;;21716:366;;;:::o;22088:419::-;22254:4;22292:2;22281:9;22277:18;22269:26;;22341:9;22335:4;22331:20;22327:1;22316:9;22312:17;22305:47;22369:131;22495:4;22369:131;:::i;:::-;22361:139;;22088:419;;;:::o;22513:228::-;22653:34;22649:1;22641:6;22637:14;22630:58;22722:11;22717:2;22709:6;22705:15;22698:36;22513:228;:::o;22747:366::-;22889:3;22910:67;22974:2;22969:3;22910:67;:::i;:::-;22903:74;;22986:93;23075:3;22986:93;:::i;:::-;23104:2;23099:3;23095:12;23088:19;;22747:366;;;:::o;23119:419::-;23285:4;23323:2;23312:9;23308:18;23300:26;;23372:9;23366:4;23362:20;23358:1;23347:9;23343:17;23336:47;23400:131;23526:4;23400:131;:::i;:::-;23392:139;;23119:419;;;:::o;23544:191::-;23584:3;23603:20;23621:1;23603:20;:::i;:::-;23598:25;;23637:20;23655:1;23637:20;:::i;:::-;23632:25;;23680:1;23677;23673:9;23666:16;;23701:3;23698:1;23695:10;23692:36;;;23708:18;;:::i;:::-;23692:36;23544:191;;;;:::o;23741:222::-;23881:34;23877:1;23869:6;23865:14;23858:58;23950:5;23945:2;23937:6;23933:15;23926:30;23741:222;:::o;23969:366::-;24111:3;24132:67;24196:2;24191:3;24132:67;:::i;:::-;24125:74;;24208:93;24297:3;24208:93;:::i;:::-;24326:2;24321:3;24317:12;24310:19;;23969:366;;;:::o;24341:419::-;24507:4;24545:2;24534:9;24530:18;24522:26;;24594:9;24588:4;24584:20;24580:1;24569:9;24565:17;24558:47;24622:131;24748:4;24622:131;:::i;:::-;24614:139;;24341:419;;;:::o;24766:174::-;24906:26;24902:1;24894:6;24890:14;24883:50;24766:174;:::o;24946:366::-;25088:3;25109:67;25173:2;25168:3;25109:67;:::i;:::-;25102:74;;25185:93;25274:3;25185:93;:::i;:::-;25303:2;25298:3;25294:12;25287:19;;24946:366;;;:::o;25318:419::-;25484:4;25522:2;25511:9;25507:18;25499:26;;25571:9;25565:4;25561:20;25557:1;25546:9;25542:17;25535:47;25599:131;25725:4;25599:131;:::i;:::-;25591:139;;25318:419;;;:::o;25743:233::-;25782:3;25805:24;25823:5;25805:24;:::i;:::-;25796:33;;25851:66;25844:5;25841:77;25838:103;;25921:18;;:::i;:::-;25838:103;25968:1;25961:5;25957:13;25950:20;;25743:233;;;:::o;25982:194::-;26022:4;26042:20;26060:1;26042:20;:::i;:::-;26037:25;;26076:20;26094:1;26076:20;:::i;:::-;26071:25;;26120:1;26117;26113:9;26105:17;;26144:1;26138:4;26135:11;26132:37;;;26149:18;;:::i;:::-;26132:37;25982:194;;;;:::o;26182:147::-;26283:11;26320:3;26305:18;;26182:147;;;;:::o;26335:114::-;;:::o;26455:398::-;26614:3;26635:83;26716:1;26711:3;26635:83;:::i;:::-;26628:90;;26727:93;26816:3;26727:93;:::i;:::-;26845:1;26840:3;26836:11;26829:18;;26455:398;;;:::o;26859:379::-;27043:3;27065:147;27208:3;27065:147;:::i;:::-;27058:154;;27229:3;27222:10;;26859:379;;;:::o;27244:229::-;27384:34;27380:1;27372:6;27368:14;27361:58;27453:12;27448:2;27440:6;27436:15;27429:37;27244:229;:::o;27479:366::-;27621:3;27642:67;27706:2;27701:3;27642:67;:::i;:::-;27635:74;;27718:93;27807:3;27718:93;:::i;:::-;27836:2;27831:3;27827:12;27820:19;;27479:366;;;:::o;27851:419::-;28017:4;28055:2;28044:9;28040:18;28032:26;;28104:9;28098:4;28094:20;28090:1;28079:9;28075:17;28068:47;28132:131;28258:4;28132:131;:::i;:::-;28124:139;;27851:419;;;:::o;28276:180::-;28324:77;28321:1;28314:88;28421:4;28418:1;28411:15;28445:4;28442:1;28435:15;28462:180;28510:77;28507:1;28500:88;28607:4;28604:1;28597:15;28631:4;28628:1;28621:15;28648:114;28715:6;28749:5;28743:12;28733:22;;28648:114;;;:::o;28768:184::-;28867:11;28901:6;28896:3;28889:19;28941:4;28936:3;28932:14;28917:29;;28768:184;;;;:::o;28958:132::-;29025:4;29048:3;29040:11;;29078:4;29073:3;29069:14;29061:22;;28958:132;;;:::o;29096:108::-;29173:24;29191:5;29173:24;:::i;:::-;29168:3;29161:37;29096:108;;:::o;29210:179::-;29279:10;29300:46;29342:3;29334:6;29300:46;:::i;:::-;29378:4;29373:3;29369:14;29355:28;;29210:179;;;;:::o;29395:113::-;29465:4;29497;29492:3;29488:14;29480:22;;29395:113;;;:::o;29544:732::-;29663:3;29692:54;29740:5;29692:54;:::i;:::-;29762:86;29841:6;29836:3;29762:86;:::i;:::-;29755:93;;29872:56;29922:5;29872:56;:::i;:::-;29951:7;29982:1;29967:284;29992:6;29989:1;29986:13;29967:284;;;30068:6;30062:13;30095:63;30154:3;30139:13;30095:63;:::i;:::-;30088:70;;30181:60;30234:6;30181:60;:::i;:::-;30171:70;;30027:224;30014:1;30011;30007:9;30002:14;;29967:284;;;29971:14;30267:3;30260:10;;29668:608;;;29544:732;;;;:::o;30282:831::-;30545:4;30583:3;30572:9;30568:19;30560:27;;30597:71;30665:1;30654:9;30650:17;30641:6;30597:71;:::i;:::-;30678:80;30754:2;30743:9;30739:18;30730:6;30678:80;:::i;:::-;30805:9;30799:4;30795:20;30790:2;30779:9;30775:18;30768:48;30833:108;30936:4;30927:6;30833:108;:::i;:::-;30825:116;;30951:72;31019:2;31008:9;31004:18;30995:6;30951:72;:::i;:::-;31033:73;31101:3;31090:9;31086:19;31077:6;31033:73;:::i;:::-;30282:831;;;;;;;;:::o;31119:180::-;31167:77;31164:1;31157:88;31264:4;31261:1;31254:15;31288:4;31285:1;31278:15;31305:185;31345:1;31362:20;31380:1;31362:20;:::i;:::-;31357:25;;31396:20;31414:1;31396:20;:::i;:::-;31391:25;;31435:1;31425:35;;31440:18;;:::i;:::-;31425:35;31482:1;31479;31475:9;31470:14;;31305:185;;;;:::o;31496:177::-;31636:29;31632:1;31624:6;31620:14;31613:53;31496:177;:::o;31679:366::-;31821:3;31842:67;31906:2;31901:3;31842:67;:::i;:::-;31835:74;;31918:93;32007:3;31918:93;:::i;:::-;32036:2;32031:3;32027:12;32020:19;;31679:366;;;:::o;32051:419::-;32217:4;32255:2;32244:9;32240:18;32232:26;;32304:9;32298:4;32294:20;32290:1;32279:9;32275:17;32268:47;32332:131;32458:4;32332:131;:::i;:::-;32324:139;;32051:419;;;:::o;32476:220::-;32616:34;32612:1;32604:6;32600:14;32593:58;32685:3;32680:2;32672:6;32668:15;32661:28;32476:220;:::o;32702:366::-;32844:3;32865:67;32929:2;32924:3;32865:67;:::i;:::-;32858:74;;32941:93;33030:3;32941:93;:::i;:::-;33059:2;33054:3;33050:12;33043:19;;32702:366;;;:::o;33074:419::-;33240:4;33278:2;33267:9;33263:18;33255:26;;33327:9;33321:4;33317:20;33313:1;33302:9;33298:17;33291:47;33355:131;33481:4;33355:131;:::i;:::-;33347:139;;33074:419;;;:::o
Swarm Source
ipfs://84bcc69fe4d3d15984e947c76f79f0a64a9cd1c503add172cd4b420878ce3295
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.