ERC-20
Overview
Max Total Supply
10,000 pCORE
Holders
51
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Protocore
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-10-22 */ pragma solidity 0.5.17; /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a * b; assert(a == 0 || c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) onlyOwner public { require(newOwner != address(0)); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } } /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/179 */ contract ERC20Basic { uint256 public totalSupply; function balanceOf(address who) public view returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } /** * @title Basic token * @dev Basic version of StandardToken, with no allowances. */ contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping(address => uint256) internal balances; /** * @dev transfer token for a specified address * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint256 _value) public returns (bool) { require(_to != address(0)); // SafeMath.sub will throw if there is not enough balance. balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(msg.sender, _to, _value); return true; } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) public view returns (uint256 balance) { return balances[_owner]; } } /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 is ERC20Basic { function allowance(address owner, address spender) public view returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @title Standard ERC20 token * * @dev Implementation of the basic standard token. * @dev https://github.com/ethereum/EIPs/issues/20 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol */ contract StandardToken is ERC20, BasicToken { mapping (address => mapping (address => uint256)) internal allowed; /** * @dev Transfer tokens from one address to another * @param _from address The address which you want to send tokens from * @param _to address The address which you want to transfer to * @param _value uint256 the amount of tokens to be transferred */ function transferFrom(address _from, address _to, uint256 _value) public returns (bool) { require(_to != address(0)); uint256 _allowance = allowed[_from][msg.sender]; // Check is not needed because sub(_allowance, _value) will already throw if this condition is not met // require (_value <= _allowance); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = _allowance.sub(_value); emit Transfer(_from, _to, _value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * * 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 * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. */ function approve(address _spender, uint256 _value) public returns (bool) { allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param _owner address The address which owns the funds. * @param _spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance(address _owner, address _spender) public view returns (uint256 remaining) { return allowed[_owner][_spender]; } /** * approve should be called when allowed[_spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol */ function increaseApproval (address _spender, uint _addedValue) public returns (bool success) { allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue); emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } function decreaseApproval (address _spender, uint _subtractedValue) public returns (bool success) { uint oldValue = allowed[msg.sender][_spender]; if (_subtractedValue > oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } } interface tokenRecipient { function receiveTokens(address _from, uint256 _value, bytes calldata _extraData) external; } /** * @title Burnable Token * @dev Token that can be irreversibly burned (destroyed). */ contract BurnableToken is StandardToken { event Burn(address indexed burner, uint256 value); /** * @dev Burns a specific amount of tokens. * @param _value The amount of token to be burned. */ function _burn(address burner, uint256 _value) internal { require(_value > 0); require(_value <= balances[burner]); // no need to require value <= totalSupply, since that would imply the // sender's balance is greater than the totalSupply, which *should* be an assertion failure balances[burner] = balances[burner].sub(_value); totalSupply = totalSupply.sub(_value); emit Transfer(burner, address(0), _value); emit Burn(burner, _value); } function burn(uint _value) public { _burn(msg.sender, _value); } } contract IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function migrator() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; function setMigrator(address) external; } contract IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } contract IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IWETH { function deposit() external payable; function transfer(address to, uint value) external returns (bool); function withdraw(uint) external; } contract Protocore is BurnableToken, Ownable { event LiquidityAddition(address indexed dst, uint value); event LPTokenClaimed(address dst, uint value); uint256 public contractStartTimestamp; address public feeDistributorAddress; address public reserveAddress; address public devAddress; uint public reserveFeePercentX100 = 20; uint public devFeePercentX100 = 10; uint public disburseFeePercentX100 = 100; uint public liquidityGenerationDuration = 3 days; uint public adminCanDrainContractAfter = 4 days; IUniswapV2Router02 public uniswapRouterV2; IUniswapV2Factory public uniswapFactory; uint256 public lastTotalSupplyOfLPTokens; address public tokenUniswapPair; mapping (address => bool) public voidFeeList; mapping (address => bool) public voidFeeRecipientList; uint256 public totalLPTokensMinted; uint256 public totalETHContributed; uint256 public LPperETHUnit; string public constant name = "Protocore"; string public constant symbol = "pCORE"; uint public constant decimals = 18; // there is no problem in using * here instead of .mul() uint256 public constant initialSupply = 10000 * (10 ** uint256(decimals)); uint public limitBuyAmount = 50e18; bool public isLimitBuyOn = true; function setLimitBuyAmount(uint _limitBuyAmount) public onlyOwner { limitBuyAmount = _limitBuyAmount; } function turnLimitBuyOff() public onlyOwner { isLimitBuyOn = false; } function turnLimitBuyOn() public onlyOwner { isLimitBuyOn = true; } function canTransfer(address sender, address recipient, uint amount) public view returns(bool) { // if pair is sending (buys are happening) if ((isLimitBuyOn) && (sender == tokenUniswapPair) && (amount > limitBuyAmount)) { return false; } return true; } function setFeeDistributor(address _feeDistributorAddress) public onlyOwner { feeDistributorAddress = _feeDistributorAddress; } function setReserveAddress(address _reserveAddress) public onlyOwner { reserveAddress = _reserveAddress; } function setDevAddress(address _devAddress) public onlyOwner { devAddress = _devAddress; } function setDisburseFeePercentX100(uint _disburseFeePercentX100) public onlyOwner { disburseFeePercentX100 = _disburseFeePercentX100; } function setReserveFeePercentX100(uint _reserveFeePercentX100) public onlyOwner { reserveFeePercentX100 = _reserveFeePercentX100; } function setDevFeePercentX100(uint _devFeePercentX100) public onlyOwner { devFeePercentX100 = _devFeePercentX100; } function editVoidFeeList(address _address, bool _noFee) public onlyOwner { voidFeeList[_address] = _noFee; } function editVoidFeeRecipientList(address _address, bool _noFee) public onlyOwner { voidFeeRecipientList[_address] = _noFee; } // -------------- fee approver functions --------------- function sync() public { uint256 _LPSupplyOfPairTotal = ERC20(tokenUniswapPair).totalSupply(); lastTotalSupplyOfLPTokens = _LPSupplyOfPairTotal; } function calculateAmountsAfterFee( address sender, // unusused maby used future address recipient, // unusued maybe use din future uint256 amount ) private returns (uint256 _amountToReserve, uint256 _amountToDisburse, uint256 _amountToDev) { uint256 _LPSupplyOfPairTotal = ERC20(tokenUniswapPair).totalSupply(); if(sender == tokenUniswapPair) require(lastTotalSupplyOfLPTokens <= _LPSupplyOfPairTotal, "Liquidity withdrawals forbidden"); if(sender == feeDistributorAddress || sender == tokenUniswapPair || voidFeeList[sender] || voidFeeRecipientList[recipient] || sender == address(this) ) { // Dont have a fee when corevault is sending, or infinite loop // And when pair is sending ( buys are happening, no tax on it) _amountToReserve = 0; _amountToDisburse = 0; _amountToDev = 0; } else { _amountToReserve = amount.mul(reserveFeePercentX100).div(10000); _amountToDisburse = amount.mul(disburseFeePercentX100).div(10000); _amountToDev = amount.mul(devFeePercentX100).div(10000); } lastTotalSupplyOfLPTokens = _LPSupplyOfPairTotal; } // --------------- end fee approver functions --------------- function createUniswapPairMainnet() public returns (address) { require(tokenUniswapPair == address(0), "Token: pool already created"); tokenUniswapPair = uniswapFactory.createPair( address(uniswapRouterV2.WETH()), address(this) ); return tokenUniswapPair; } // Constructors constructor (address router, address factory) public { totalSupply = initialSupply; balances[address(this)] = initialSupply; // Send all tokens to owner emit Transfer(address(0), address(this), initialSupply); contractStartTimestamp = now; uniswapRouterV2 = IUniswapV2Router02(router != address(0) ? router : 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // For testing uniswapFactory = IUniswapV2Factory(factory != address(0) ? factory : 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f); // For testing createUniswapPairMainnet(); } function transfer(address to, uint amount) public returns (bool) { // uint _amountToReserve = amount.mul(reserveFeePercentX100).div(10000); // uint _amountToDisburse = amount.mul(disburseFeePercentX100).div(10000); // uint _amountToDev = amount.mul(devFeePercentX100).div(10000); require(canTransfer(msg.sender, to, amount), "Limit buys are on!"); (uint _amountToReserve, uint _amountToDisburse, uint _amountToDev) = calculateAmountsAfterFee(msg.sender, to, amount); uint _amountAfterFee = amount.sub(_amountToReserve).sub(_amountToDisburse).sub(_amountToDev); require(super.transfer(feeDistributorAddress, _amountToDisburse), "Cannot disburse rewards."); require(super.transfer(reserveAddress, _amountToReserve), "Cannot send tokens to reserve!"); require(super.transfer(devAddress, _amountToDev), "Cannot transfer dev fee!"); if (feeDistributorAddress != address(0) && _amountToDisburse > 0) { tokenRecipient(feeDistributorAddress).receiveTokens(msg.sender, _amountToDisburse, ""); } require(super.transfer(to, _amountAfterFee), "Cannot transfer tokens."); return true; } function transferFrom(address from, address to, uint amount) public returns (bool) { require(canTransfer(from, to, amount), "Limit buys are on!"); require(to != address(0)); // uint _amountToReserve = amount.mul(reserveFeePercentX100).div(10000); // uint _amountToDev = amount.mul(devFeePercentX100).div(10000); // uint _amountToDisburse = amount.mul(disburseFeePercentX100).div(10000); (uint _amountToReserve, uint _amountToDisburse, uint _amountToDev) = calculateAmountsAfterFee(from, to, amount); uint _amountAfterFee = amount.sub(_amountToReserve).sub(_amountToDisburse).sub(_amountToDev); uint256 _allowance = allowed[from][msg.sender]; // Check is not needed because sub(_allowance, _value) will already throw if this condition is not met // require (_value <= _allowance); balances[from] = balances[from].sub(_amountAfterFee); balances[to] = balances[to].add(_amountAfterFee); balances[from] = balances[from].sub(_amountToDisburse); balances[feeDistributorAddress] = balances[feeDistributorAddress].add(_amountToDisburse); balances[from] = balances[from].sub(_amountToDev); balances[devAddress] = balances[devAddress].add(_amountToDev); balances[from] = balances[from].sub(_amountToReserve); balances[reserveAddress] = balances[reserveAddress].add(_amountToReserve); allowed[from][msg.sender] = _allowance.sub(amount); emit Transfer(from, feeDistributorAddress, _amountToDisburse); emit Transfer(from, reserveAddress, _amountToReserve); emit Transfer(from, devAddress, _amountToDev); emit Transfer(from, to, _amountAfterFee); if (feeDistributorAddress != address(0) && _amountToDisburse > 0) { tokenRecipient(feeDistributorAddress).receiveTokens(msg.sender, _amountToDisburse, ""); } return true; } // --------------- Liquidity Generation Event Scripts --------------- //// Liquidity generation logic /// Steps - All tokens tat will ever exist go to this contract /// This contract accepts ETH as payable /// ETH is mapped to people /// When liquidity generationevent is over veryone can call /// the mint LP function // which will put all the ETH and tokens inside the uniswap contract /// without any involvement /// This LP will go into this contract /// And will be able to proportionally be withdrawn baed on ETH put in /// A emergency drain function allows the contract owner to drain all ETH and tokens from this contract /// After the liquidity generation event happened. In case something goes wrong, to send ETH back string public liquidityGenerationParticipationAgreement = "I agree that the developers and affiliated parties of the Protocore team are not responsible for my funds"; function liquidityGenerationOngoing() public view returns (bool) { return contractStartTimestamp.add(liquidityGenerationDuration) > block.timestamp; } function canAdminDrainContract() public view returns (bool) { return contractStartTimestamp.add(adminCanDrainContractAfter) < block.timestamp; } // Emergency drain in case of a bug // Adds all funds to owner to refund people // Designed to be as simple as possible function emergencyDrain24hAfterLiquidityGenerationEventIsDone() public onlyOwner { require(canAdminDrainContract(), "Liquidity generation grace period still ongoing"); // About 24h after liquidity generation happens (bool success, ) = msg.sender.call.value(address(this).balance)(""); require(success, "Transfer failed."); emit Transfer(address(this), msg.sender, balances[address(this)]); balances[msg.sender] = balances[address(this)]; balances[address(this)] = 0; } bool public LPGenerationCompleted; // Sends all avaibile balances and mints LP tokens // Possible ways this could break addressed // 1) Multiple calls and resetting amounts - addressed with boolean // 2) Failed WETH wrapping/unwrapping addressed with checks // 3) Failure to create LP tokens, addressed with checks // 4) Unacceptable division errors . Addressed with multiplications by 1e18 // 5) Pair not set - impossible since its set in constructor function addLiquidityToUniswapPROTOCORExWETHPair() public onlyOwner { require(liquidityGenerationOngoing() == false, "Liquidity generation onging"); require(LPGenerationCompleted == false, "Liquidity generation already finished"); totalETHContributed = address(this).balance; IUniswapV2Pair pair = IUniswapV2Pair(tokenUniswapPair); //Wrap eth address WETH = uniswapRouterV2.WETH(); IWETH(WETH).deposit.value(totalETHContributed)(); require(address(this).balance == 0 , "Transfer Failed"); IWETH(WETH).transfer(address(pair),totalETHContributed); emit Transfer(address(this), address(pair), balances[address(this)]); balances[address(pair)] = balances[address(this)]; balances[address(this)] = 0; pair.mint(address(this)); totalLPTokensMinted = pair.balanceOf(address(this)); require(totalLPTokensMinted != 0 , "LP creation failed"); LPperETHUnit = totalLPTokensMinted.mul(1e18).div(totalETHContributed); // 1e18x for change require(LPperETHUnit != 0 , "LP creation failed"); LPGenerationCompleted = true; sync(); } mapping (address => uint) public ethContributed; // Possible ways this could break addressed // 1) No ageement to terms - added require // 2) Adding liquidity after generaion is over - added require // 3) Overflow from uint - impossible there isnt that much ETH aviable // 4) Depositing 0 - not an issue it will just add 0 to tally function addLiquidity(bool agreesToTermsOutlinedInLiquidityGenerationParticipationAgreement) public payable { require(liquidityGenerationOngoing(), "Liquidity Generation Event over"); require(agreesToTermsOutlinedInLiquidityGenerationParticipationAgreement, "No agreement provided"); ethContributed[msg.sender] += msg.value; // Overflow protection from safemath is not neded here totalETHContributed = totalETHContributed.add(msg.value); // for front end display during LGE. This resets with definietly correct balance while calling pair. emit LiquidityAddition(msg.sender, msg.value); } // Possible ways this could break addressed // 1) Accessing before event is over and resetting eth contributed -- added require // 2) No uniswap pair - impossible at this moment because of the LPGenerationCompleted bool // 3) LP per unit is 0 - impossible checked at generation function function claimLPTokens() public { require(LPGenerationCompleted, "Event not over yet"); require(ethContributed[msg.sender] > 0 , "Nothing to claim, move along"); IUniswapV2Pair pair = IUniswapV2Pair(tokenUniswapPair); uint256 amountLPToTransfer = ethContributed[msg.sender].mul(LPperETHUnit).div(1e18); pair.transfer(msg.sender, amountLPToTransfer); // stored as 1e18x value for change ethContributed[msg.sender] = 0; emit LPTokenClaimed(msg.sender, amountLPToTransfer); } // --------------- End Liquidity Generation Event Scripts --------------- // token recovery function function transferAnyERC20Token(address _tokenAddress, address _to, uint _amount) public onlyOwner { require(_tokenAddress != tokenUniswapPair, "Admin Cannot transfer out pCORE/WETH LP Tokens from this contract!"); require(canAdminDrainContract(), "Liquidity generation grace period still ongoing"); ERC20(_tokenAddress).transfer(_to, _amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"factory","type":"address"}],"payable":false,"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":"burner","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"dst","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"LPTokenClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"dst","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"LiquidityAddition","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"LPGenerationCompleted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"LPperETHUnit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"agreesToTermsOutlinedInLiquidityGenerationParticipationAgreement","type":"bool"}],"name":"addLiquidity","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"addLiquidityToUniswapPROTOCORExWETHPair","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"adminCanDrainContractAfter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"canAdminDrainContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"canTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimLPTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"contractStartTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"createUniswapPairMainnet","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"devFeePercentX100","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"disburseFeePercentX100","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_noFee","type":"bool"}],"name":"editVoidFeeList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_noFee","type":"bool"}],"name":"editVoidFeeRecipientList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"emergencyDrain24hAfterLiquidityGenerationEventIsDone","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ethContributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feeDistributorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"initialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isLimitBuyOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastTotalSupplyOfLPTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"limitBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"liquidityGenerationDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"liquidityGenerationOngoing","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"liquidityGenerationParticipationAgreement","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"reserveAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"reserveFeePercentX100","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_devAddress","type":"address"}],"name":"setDevAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_devFeePercentX100","type":"uint256"}],"name":"setDevFeePercentX100","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_disburseFeePercentX100","type":"uint256"}],"name":"setDisburseFeePercentX100","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_feeDistributorAddress","type":"address"}],"name":"setFeeDistributor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_limitBuyAmount","type":"uint256"}],"name":"setLimitBuyAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_reserveAddress","type":"address"}],"name":"setReserveAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_reserveFeePercentX100","type":"uint256"}],"name":"setReserveFeePercentX100","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sync","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenUniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalETHContributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalLPTokensMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"turnLimitBuyOff","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"turnLimitBuyOn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"uniswapFactory","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"uniswapRouterV2","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"voidFeeList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"voidFeeRecipientList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526014600855600a6009556064600a556203f480600b5562054600600c556802b5e3af16b18800006016556001601760006101000a81548160ff0219169083151502179055506040518060a0016040528060698152602001620059cb60699139601890805190602001906200007a929190620005ff565b503480156200008857600080fd5b5060405162005a3438038062005a3483398181016040526040811015620000ae57600080fd5b81019080805190602001909291908051906020019092919050505033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a0a612710026000819055506012600a0a61271002600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a0a612710026040518082815260200191505060405180910390a342600481905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200022b57737a250d5630b4cf539739df2c5dacb4c659f2488d6200022d565b815b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620002be57735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f620002c0565b805b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003106200031960201b60201c565b505050620006ae565b60008073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620003df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f546f6b656e3a20706f6f6c20616c72656164792063726561746564000000000081525060200191505060405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c65396600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200048657600080fd5b505afa1580156200049b573d6000803e3d6000fd5b505050506040513d6020811015620004b257600080fd5b8101908080519060200190929190505050306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200055a57600080fd5b505af11580156200056f573d6000803e3d6000fd5b505050506040513d60208110156200058657600080fd5b8101908080519060200190929190505050601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200064257805160ff191683800117855562000673565b8280016001018555821562000673579182015b828111156200067257825182559160200191906001019062000655565b5b50905062000682919062000686565b5090565b620006ab91905b80821115620006a75760008160009055506001016200068d565b5090565b90565b61530d80620006be6000396000f3fe60806040526004361061038b5760003560e01c806392f61930116101dc578063da620cd711610102578063f28a2143116100a0578063f5f8155e1161006f578063f5f8155e1461137d578063f79ed94b146113a8578063f96f5b35146113ff578063fff6cae9146114645761038b565b8063f28a214314611269578063f2fde38b146112a4578063f322de78146112f5578063f40c1510146113205761038b565b8063e0dc1756116100dc578063e0dc175614611141578063e46638e61461117c578063e7d9a0eb1461120f578063eadf46971461123e5761038b565b8063da620cd714611051578063dd62ed3e14611081578063dfbb4322146111065761038b565b8063b6f5265a1161017a578063d0d41fe111610149578063d0d41fe114610ea9578063d231303d14610efa578063d493b9ac14610f63578063d73dd62314610fde5761038b565b8063b6f5265a14610d81578063bc70cd8c14610d98578063c8c0e7e414610def578063ccfc2e8d14610e585761038b565b8063a51748a1116101b6578063a51748a114610c5b578063a9059cbb14610c86578063abc1fecb14610cf9578063b237e8e114610d565761038b565b806392f6193014610b7157806395d89b4114610b9c5780639786207c14610c2c5761038b565b80634d332457116102c157806373996c031161025f57806387d9c50d1161022e57806387d9c50d14610a1c5780638bdb2afa14610a335780638da5cb5b14610a8a5780638e8e292514610ae15761038b565b806373996c031461094857806375b208bc146109835780637988d865146109da5780637e5d9835146109f15761038b565b806360a025901161029b57806360a025901461081657806366188463146108455780636a2f796c146108b857806370a08231146108e35761038b565b80634d332457146107515780634f1a0f7d146107a8578063596fa9e3146107bf5761038b565b806323b872dd1161032e578063378dc3dc11610308578063378dc3dc1461067d57806338af6632146106a85780633ad10ef6146106bf57806342966c68146107165761038b565b806323b872dd14610594578063313ce5671461062757806331a22a20146106525761038b565b806314673d311161036a57806314673d31146104be57806314b8fecc1461050f57806318160ddd1461053e57806323399434146105695761038b565b80622b13291461039057806306fdde03146103bb578063095ea7b31461044b575b600080fd5b34801561039c57600080fd5b506103a561147b565b6040518082815260200191505060405180910390f35b3480156103c757600080fd5b506103d0611481565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104105780820151818401526020810190506103f5565b50505050905090810190601f16801561043d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561045757600080fd5b506104a46004803603604081101561046e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114ba565b604051808215151515815260200191505060405180910390f35b3480156104ca57600080fd5b5061050d600480360360208110156104e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115ac565b005b34801561051b57600080fd5b5061052461164a565b604051808215151515815260200191505060405180910390f35b34801561054a57600080fd5b5061055361165d565b6040518082815260200191505060405180910390f35b34801561057557600080fd5b5061057e611663565b6040518082815260200191505060405180910390f35b3480156105a057600080fd5b5061060d600480360360608110156105b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611669565b604051808215151515815260200191505060405180910390f35b34801561063357600080fd5b5061063c61213f565b6040518082815260200191505060405180910390f35b34801561065e57600080fd5b50610667612144565b6040518082815260200191505060405180910390f35b34801561068957600080fd5b5061069261214a565b6040518082815260200191505060405180910390f35b3480156106b457600080fd5b506106bd612156565b005b3480156106cb57600080fd5b506106d461249d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561072257600080fd5b5061074f6004803603602081101561073957600080fd5b81019080803590602001909291905050506124c3565b005b34801561075d57600080fd5b506107666124d0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107b457600080fd5b506107bd6124f6565b005b3480156107cb57600080fd5b506107d46127f8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082257600080fd5b5061082b61281e565b604051808215151515815260200191505060405180910390f35b34801561085157600080fd5b5061089e6004803603604081101561086857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061283e565b604051808215151515815260200191505060405180910390f35b3480156108c457600080fd5b506108cd612acf565b6040518082815260200191505060405180910390f35b3480156108ef57600080fd5b506109326004803603602081101561090657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ad5565b6040518082815260200191505060405180910390f35b34801561095457600080fd5b506109816004803603602081101561096b57600080fd5b8101908080359060200190929190505050612b1e565b005b34801561098f57600080fd5b50610998612b82565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109e657600080fd5b506109ef612e61565b005b3480156109fd57600080fd5b50610a06612ed8565b6040518082815260200191505060405180910390f35b348015610a2857600080fd5b50610a31612ede565b005b348015610a3f57600080fd5b50610a48612f55565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a9657600080fd5b50610a9f612f7b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610aed57600080fd5b50610af6612fa1565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b36578082015181840152602081019050610b1b565b50505050905090810190601f168015610b635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b7d57600080fd5b50610b8661303f565b6040518082815260200191505060405180910390f35b348015610ba857600080fd5b50610bb1613045565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bf1578082015181840152602081019050610bd6565b50505050905090810190601f168015610c1e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c3857600080fd5b50610c4161307e565b604051808215151515815260200191505060405180910390f35b348015610c6757600080fd5b50610c70613091565b6040518082815260200191505060405180910390f35b348015610c9257600080fd5b50610cdf60048036036040811015610ca957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613097565b604051808215151515815260200191505060405180910390f35b348015610d0557600080fd5b50610d5460048036036040811015610d1c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613505565b005b348015610d6257600080fd5b50610d6b6135ba565b6040518082815260200191505060405180910390f35b348015610d8d57600080fd5b50610d966135c0565b005b348015610da457600080fd5b50610dad613daf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610dfb57600080fd5b50610e3e60048036036020811015610e1257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613dd5565b604051808215151515815260200191505060405180910390f35b348015610e6457600080fd5b50610ea760048036036020811015610e7b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613df5565b005b348015610eb557600080fd5b50610ef860048036036020811015610ecc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613e93565b005b348015610f0657600080fd5b50610f4960048036036020811015610f1d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613f31565b604051808215151515815260200191505060405180910390f35b348015610f6f57600080fd5b50610fdc60048036036060811015610f8657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613f51565b005b348015610fea57600080fd5b506110376004803603604081101561100157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614177565b604051808215151515815260200191505060405180910390f35b61107f6004803603602081101561106757600080fd5b81019080803515159060200190929190505050614373565b005b34801561108d57600080fd5b506110f0600480360360408110156110a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614519565b6040518082815260200191505060405180910390f35b34801561111257600080fd5b5061113f6004803603602081101561112957600080fd5b81019080803590602001909291905050506145a0565b005b34801561114d57600080fd5b5061117a6004803603602081101561116457600080fd5b8101908080359060200190929190505050614604565b005b34801561118857600080fd5b506111f56004803603606081101561119f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614668565b604051808215151515815260200191505060405180910390f35b34801561121b57600080fd5b506112246146fa565b604051808215151515815260200191505060405180910390f35b34801561124a57600080fd5b5061125361471a565b6040518082815260200191505060405180910390f35b34801561127557600080fd5b506112a26004803603602081101561128c57600080fd5b8101908080359060200190929190505050614720565b005b3480156112b057600080fd5b506112f3600480360360208110156112c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614784565b005b34801561130157600080fd5b5061130a6148d8565b6040518082815260200191505060405180910390f35b34801561132c57600080fd5b5061137b6004803603604081101561134357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506148de565b005b34801561138957600080fd5b50611392614993565b6040518082815260200191505060405180910390f35b3480156113b457600080fd5b506113bd614999565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561140b57600080fd5b5061144e6004803603602081101561142257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506149bf565b6040518082815260200191505060405180910390f35b34801561147057600080fd5b506114796149d7565b005b60135481565b6040518060400160405280600981526020017f50726f746f636f7265000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461160657600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601960009054906101000a900460ff1681565b60005481565b60145481565b6000611676848484614668565b6116e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4c696d6974206275797320617265206f6e21000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561172257600080fd5b6000806000611732878787614a88565b92509250925060006117718261176385611755888b614e3290919063ffffffff16565b614e3290919063ffffffff16565b614e3290919063ffffffff16565b90506000600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061184682600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e3290919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118db82600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e4990919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061197084600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e3290919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a278460016000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e4990919063ffffffff16565b60016000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ade83600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e3290919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b958360016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e4990919063ffffffff16565b60016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c4c85600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e3290919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d038560016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e4990919063ffffffff16565b60016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d7b8782614e3290919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156120545750600084115b1561212f57600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bc1e07633866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001806020018281038252600081526020016020019350505050600060405180830381600087803b15801561211657600080fd5b505af115801561212a573d6000803e3d6000fd5b505050505b6001955050505050509392505050565b601281565b60155481565b6012600a0a6127100281565b601960009054906101000a900460ff166121d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4576656e74206e6f74206f76657220796574000000000000000000000000000081525060200191505060405180910390fd5b6000601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161228d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4e6f7468696e6720746f20636c61696d2c206d6f766520616c6f6e670000000081525060200191505060405180910390fd5b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000612324670de0b6b3a7640000612316601554601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e6590919063ffffffff16565b614e9490919063ffffffff16565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156123ad57600080fd5b505af11580156123c1573d6000803e3d6000fd5b505050506040513d60208110156123d757600080fd5b8101908080519060200190929190505050506000601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f586e28f4f60b4d906fc69694ea6d7fe5c5668730ce3286d7af8eca868f3c27603382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6124cd3382614ead565b50565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461255057600080fd5b6125586146fa565b6125ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180615243602f913960400191505060405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405180600001905060006040518083038185875af1925050503d806000811461260d576040519150601f19603f3d011682016040523d82523d6000602084013e612612565b606091505b5050905080612689576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5472616e73666572206661696c65642e0000000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600042612838600b54600454614e4990919063ffffffff16565b11905090565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083111561294f576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129e3565b6129628382614e3290919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60045481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612b7857600080fd5b8060168190555050565b60008073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f546f6b656e3a20706f6f6c20616c72656164792063726561746564000000000081525060200191505060405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c65396600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612ced57600080fd5b505afa158015612d01573d6000803e3d6000fd5b505050506040513d6020811015612d1757600080fd5b8101908080519060200190929190505050306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015612dbe57600080fd5b505af1158015612dd2573d6000803e3d6000fd5b505050506040513d6020811015612de857600080fd5b8101908080519060200190929190505050601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612ebb57600080fd5b6001601760006101000a81548160ff021916908315150217905550565b60085481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f3857600080fd5b6000601760006101000a81548160ff021916908315150217905550565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60188054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156130375780601f1061300c57610100808354040283529160200191613037565b820191906000526020600020905b81548152906001019060200180831161301a57829003601f168201915b505050505081565b600f5481565b6040518060400160405280600581526020017f70434f524500000000000000000000000000000000000000000000000000000081525081565b601760009054906101000a900460ff1681565b600c5481565b60006130a4338484614668565b613116576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4c696d6974206275797320617265206f6e21000000000000000000000000000081525060200191505060405180910390fd5b6000806000613126338787614a88565b92509250925060006131658261315785613149888b614e3290919063ffffffff16565b614e3290919063ffffffff16565b614e3290919063ffffffff16565b9050613193600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461506e565b613205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616e6e6f7420646973627572736520726577617264732e000000000000000081525060200191505060405180910390fd5b613231600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168561506e565b6132a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f43616e6e6f742073656e6420746f6b656e7320746f207265736572766521000081525060200191505060405180910390fd5b6132cf600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361506e565b613341576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616e6e6f74207472616e73666572206465762066656521000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156133a05750600083115b1561347b57600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bc1e07633856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001806020018281038252600081526020016020019350505050600060405180830381600087803b15801561346257600080fd5b505af1158015613476573d6000803e3d6000fd5b505050505b613485878261506e565b6134f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f74207472616e7366657220746f6b656e732e00000000000000000081525060200191505060405180910390fd5b600194505050505092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461355f57600080fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60165481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461361a57600080fd5b6000151561362661281e565b15151461369b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4c69717569646974792067656e65726174696f6e206f6e67696e67000000000081525060200191505060405180910390fd5b60001515601960009054906101000a900460ff16151514613707576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806152b46025913960400191505060405180910390fd5b476014819055506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561379f57600080fd5b505afa1580156137b3573d6000803e3d6000fd5b505050506040513d60208110156137c957600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff1663d0e30db06014546040518263ffffffff1660e01b81526004016000604051808303818588803b15801561382657600080fd5b505af115801561383a573d6000803e3d6000fd5b5050505050600047146138b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5472616e73666572204661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb836014546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561393e57600080fd5b505af1158015613952573d6000803e3d6000fd5b505050506040513d602081101561396857600080fd5b8101908080519060200190929190505050508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16636a627842306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015613b6557600080fd5b505af1158015613b79573d6000803e3d6000fd5b505050506040513d6020811015613b8f57600080fd5b8101908080519060200190929190505050508173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015613c1e57600080fd5b505afa158015613c32573d6000803e3d6000fd5b505050506040513d6020811015613c4857600080fd5b810190808051906020019092919050505060138190555060006013541415613cd8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4c50206372656174696f6e206661696c6564000000000000000000000000000081525060200191505060405180910390fd5b613d09601454613cfb670de0b6b3a7640000601354614e6590919063ffffffff16565b614e9490919063ffffffff16565b60158190555060006015541415613d88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4c50206372656174696f6e206661696c6564000000000000000000000000000081525060200191505060405180910390fd5b6001601960006101000a81548160ff021916908315150217905550613dab6149d7565b5050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60116020528060005260406000206000915054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613e4f57600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613eed57600080fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60126020528060005260406000206000915054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613fab57600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415614052576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260428152602001806152726042913960600191505060405180910390fd5b61405a6146fa565b6140af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180615243602f913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561413657600080fd5b505af115801561414a573d6000803e3d6000fd5b505050506040513d602081101561416057600080fd5b810190808051906020019092919050505050505050565b600061420882600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e4990919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b61437b61281e565b6143ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4c69717569646974792047656e65726174696f6e204576656e74206f7665720081525060200191505060405180910390fd5b80614460576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4e6f2061677265656d656e742070726f7669646564000000000000000000000081525060200191505060405180910390fd5b34601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506144c234601454614e4990919063ffffffff16565b6014819055503373ffffffffffffffffffffffffffffffffffffffff167f20b711375edba008429d2f91787c68aa13aab7f267c346bf91be1a104d8b7b8b346040518082815260200191505060405180910390a250565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146145fa57600080fd5b8060088190555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461465e57600080fd5b8060098190555050565b6000601760009054906101000a900460ff1680156146d35750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156146e0575060165482115b156146ee57600090506146f3565b600190505b9392505050565b600042614714600c54600454614e4990919063ffffffff16565b10905090565b600a5481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461477a57600080fd5b80600a8190555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146147de57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561481857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461493857600080fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60095481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a6020528060005260406000206000915090505481565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015614a4157600080fd5b505afa158015614a55573d6000803e3d6000fd5b505050506040513d6020811015614a6b57600080fd5b8101908080519060200190929190505050905080600f8190555050565b600080600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015614af657600080fd5b505afa158015614b0a573d6000803e3d6000fd5b505050506040513d6020811015614b2057600080fd5b81019080805190602001909291905050509050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415614c025780600f541115614c01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4c6971756964697479207769746864726177616c7320666f7262696464656e0081525060200191505060405180910390fd5b5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161480614cab5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b80614cff5750601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80614d535750601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80614d8957503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b15614d9f57600093506000925060009150614e21565b614dc8612710614dba60085488614e6590919063ffffffff16565b614e9490919063ffffffff16565b9350614df3612710614de5600a5488614e6590919063ffffffff16565b614e9490919063ffffffff16565b9250614e1e612710614e1060095488614e6590919063ffffffff16565b614e9490919063ffffffff16565b91505b80600f819055505093509350939050565b600082821115614e3e57fe5b818303905092915050565b600080828401905083811015614e5b57fe5b8091505092915050565b60008082840290506000841480614e84575082848281614e8157fe5b04145b614e8a57fe5b8091505092915050565b600080828481614ea057fe5b0490508091505092915050565b60008111614eba57600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115614f0657600080fd5b614f5881600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e3290919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614fb081600054614e3290919063ffffffff16565b600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a38173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a25050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156150a957600080fd5b6150fb82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e3290919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061519082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e4990919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509291505056fe4c69717569646974792067656e65726174696f6e20677261636520706572696f64207374696c6c206f6e676f696e6741646d696e2043616e6e6f74207472616e73666572206f75742070434f52452f57455448204c5020546f6b656e732066726f6d207468697320636f6e7472616374214c69717569646974792067656e65726174696f6e20616c72656164792066696e6973686564a265627a7a723158207fa63cd0b2b4b99f6c8f9343eda15f2d9047ccae57aa1ea60066af80ed41ac1264736f6c634300051100324920616772656520746861742074686520646576656c6f7065727320616e6420616666696c69617465642070617274696573206f66207468652050726f746f636f7265207465616d20617265206e6f7420726573706f6e7369626c6520666f72206d792066756e64730000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f
Deployed Bytecode
0x60806040526004361061038b5760003560e01c806392f61930116101dc578063da620cd711610102578063f28a2143116100a0578063f5f8155e1161006f578063f5f8155e1461137d578063f79ed94b146113a8578063f96f5b35146113ff578063fff6cae9146114645761038b565b8063f28a214314611269578063f2fde38b146112a4578063f322de78146112f5578063f40c1510146113205761038b565b8063e0dc1756116100dc578063e0dc175614611141578063e46638e61461117c578063e7d9a0eb1461120f578063eadf46971461123e5761038b565b8063da620cd714611051578063dd62ed3e14611081578063dfbb4322146111065761038b565b8063b6f5265a1161017a578063d0d41fe111610149578063d0d41fe114610ea9578063d231303d14610efa578063d493b9ac14610f63578063d73dd62314610fde5761038b565b8063b6f5265a14610d81578063bc70cd8c14610d98578063c8c0e7e414610def578063ccfc2e8d14610e585761038b565b8063a51748a1116101b6578063a51748a114610c5b578063a9059cbb14610c86578063abc1fecb14610cf9578063b237e8e114610d565761038b565b806392f6193014610b7157806395d89b4114610b9c5780639786207c14610c2c5761038b565b80634d332457116102c157806373996c031161025f57806387d9c50d1161022e57806387d9c50d14610a1c5780638bdb2afa14610a335780638da5cb5b14610a8a5780638e8e292514610ae15761038b565b806373996c031461094857806375b208bc146109835780637988d865146109da5780637e5d9835146109f15761038b565b806360a025901161029b57806360a025901461081657806366188463146108455780636a2f796c146108b857806370a08231146108e35761038b565b80634d332457146107515780634f1a0f7d146107a8578063596fa9e3146107bf5761038b565b806323b872dd1161032e578063378dc3dc11610308578063378dc3dc1461067d57806338af6632146106a85780633ad10ef6146106bf57806342966c68146107165761038b565b806323b872dd14610594578063313ce5671461062757806331a22a20146106525761038b565b806314673d311161036a57806314673d31146104be57806314b8fecc1461050f57806318160ddd1461053e57806323399434146105695761038b565b80622b13291461039057806306fdde03146103bb578063095ea7b31461044b575b600080fd5b34801561039c57600080fd5b506103a561147b565b6040518082815260200191505060405180910390f35b3480156103c757600080fd5b506103d0611481565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104105780820151818401526020810190506103f5565b50505050905090810190601f16801561043d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561045757600080fd5b506104a46004803603604081101561046e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114ba565b604051808215151515815260200191505060405180910390f35b3480156104ca57600080fd5b5061050d600480360360208110156104e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115ac565b005b34801561051b57600080fd5b5061052461164a565b604051808215151515815260200191505060405180910390f35b34801561054a57600080fd5b5061055361165d565b6040518082815260200191505060405180910390f35b34801561057557600080fd5b5061057e611663565b6040518082815260200191505060405180910390f35b3480156105a057600080fd5b5061060d600480360360608110156105b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611669565b604051808215151515815260200191505060405180910390f35b34801561063357600080fd5b5061063c61213f565b6040518082815260200191505060405180910390f35b34801561065e57600080fd5b50610667612144565b6040518082815260200191505060405180910390f35b34801561068957600080fd5b5061069261214a565b6040518082815260200191505060405180910390f35b3480156106b457600080fd5b506106bd612156565b005b3480156106cb57600080fd5b506106d461249d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561072257600080fd5b5061074f6004803603602081101561073957600080fd5b81019080803590602001909291905050506124c3565b005b34801561075d57600080fd5b506107666124d0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107b457600080fd5b506107bd6124f6565b005b3480156107cb57600080fd5b506107d46127f8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082257600080fd5b5061082b61281e565b604051808215151515815260200191505060405180910390f35b34801561085157600080fd5b5061089e6004803603604081101561086857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061283e565b604051808215151515815260200191505060405180910390f35b3480156108c457600080fd5b506108cd612acf565b6040518082815260200191505060405180910390f35b3480156108ef57600080fd5b506109326004803603602081101561090657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ad5565b6040518082815260200191505060405180910390f35b34801561095457600080fd5b506109816004803603602081101561096b57600080fd5b8101908080359060200190929190505050612b1e565b005b34801561098f57600080fd5b50610998612b82565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109e657600080fd5b506109ef612e61565b005b3480156109fd57600080fd5b50610a06612ed8565b6040518082815260200191505060405180910390f35b348015610a2857600080fd5b50610a31612ede565b005b348015610a3f57600080fd5b50610a48612f55565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a9657600080fd5b50610a9f612f7b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610aed57600080fd5b50610af6612fa1565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b36578082015181840152602081019050610b1b565b50505050905090810190601f168015610b635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b7d57600080fd5b50610b8661303f565b6040518082815260200191505060405180910390f35b348015610ba857600080fd5b50610bb1613045565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bf1578082015181840152602081019050610bd6565b50505050905090810190601f168015610c1e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c3857600080fd5b50610c4161307e565b604051808215151515815260200191505060405180910390f35b348015610c6757600080fd5b50610c70613091565b6040518082815260200191505060405180910390f35b348015610c9257600080fd5b50610cdf60048036036040811015610ca957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613097565b604051808215151515815260200191505060405180910390f35b348015610d0557600080fd5b50610d5460048036036040811015610d1c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613505565b005b348015610d6257600080fd5b50610d6b6135ba565b6040518082815260200191505060405180910390f35b348015610d8d57600080fd5b50610d966135c0565b005b348015610da457600080fd5b50610dad613daf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610dfb57600080fd5b50610e3e60048036036020811015610e1257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613dd5565b604051808215151515815260200191505060405180910390f35b348015610e6457600080fd5b50610ea760048036036020811015610e7b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613df5565b005b348015610eb557600080fd5b50610ef860048036036020811015610ecc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613e93565b005b348015610f0657600080fd5b50610f4960048036036020811015610f1d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613f31565b604051808215151515815260200191505060405180910390f35b348015610f6f57600080fd5b50610fdc60048036036060811015610f8657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613f51565b005b348015610fea57600080fd5b506110376004803603604081101561100157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614177565b604051808215151515815260200191505060405180910390f35b61107f6004803603602081101561106757600080fd5b81019080803515159060200190929190505050614373565b005b34801561108d57600080fd5b506110f0600480360360408110156110a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614519565b6040518082815260200191505060405180910390f35b34801561111257600080fd5b5061113f6004803603602081101561112957600080fd5b81019080803590602001909291905050506145a0565b005b34801561114d57600080fd5b5061117a6004803603602081101561116457600080fd5b8101908080359060200190929190505050614604565b005b34801561118857600080fd5b506111f56004803603606081101561119f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614668565b604051808215151515815260200191505060405180910390f35b34801561121b57600080fd5b506112246146fa565b604051808215151515815260200191505060405180910390f35b34801561124a57600080fd5b5061125361471a565b6040518082815260200191505060405180910390f35b34801561127557600080fd5b506112a26004803603602081101561128c57600080fd5b8101908080359060200190929190505050614720565b005b3480156112b057600080fd5b506112f3600480360360208110156112c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614784565b005b34801561130157600080fd5b5061130a6148d8565b6040518082815260200191505060405180910390f35b34801561132c57600080fd5b5061137b6004803603604081101561134357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506148de565b005b34801561138957600080fd5b50611392614993565b6040518082815260200191505060405180910390f35b3480156113b457600080fd5b506113bd614999565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561140b57600080fd5b5061144e6004803603602081101561142257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506149bf565b6040518082815260200191505060405180910390f35b34801561147057600080fd5b506114796149d7565b005b60135481565b6040518060400160405280600981526020017f50726f746f636f7265000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461160657600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601960009054906101000a900460ff1681565b60005481565b60145481565b6000611676848484614668565b6116e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4c696d6974206275797320617265206f6e21000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561172257600080fd5b6000806000611732878787614a88565b92509250925060006117718261176385611755888b614e3290919063ffffffff16565b614e3290919063ffffffff16565b614e3290919063ffffffff16565b90506000600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061184682600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e3290919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118db82600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e4990919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061197084600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e3290919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a278460016000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e4990919063ffffffff16565b60016000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ade83600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e3290919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b958360016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e4990919063ffffffff16565b60016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c4c85600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e3290919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d038560016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e4990919063ffffffff16565b60016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d7b8782614e3290919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156120545750600084115b1561212f57600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bc1e07633866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001806020018281038252600081526020016020019350505050600060405180830381600087803b15801561211657600080fd5b505af115801561212a573d6000803e3d6000fd5b505050505b6001955050505050509392505050565b601281565b60155481565b6012600a0a6127100281565b601960009054906101000a900460ff166121d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4576656e74206e6f74206f76657220796574000000000000000000000000000081525060200191505060405180910390fd5b6000601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161228d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4e6f7468696e6720746f20636c61696d2c206d6f766520616c6f6e670000000081525060200191505060405180910390fd5b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000612324670de0b6b3a7640000612316601554601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e6590919063ffffffff16565b614e9490919063ffffffff16565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156123ad57600080fd5b505af11580156123c1573d6000803e3d6000fd5b505050506040513d60208110156123d757600080fd5b8101908080519060200190929190505050506000601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f586e28f4f60b4d906fc69694ea6d7fe5c5668730ce3286d7af8eca868f3c27603382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6124cd3382614ead565b50565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461255057600080fd5b6125586146fa565b6125ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180615243602f913960400191505060405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405180600001905060006040518083038185875af1925050503d806000811461260d576040519150601f19603f3d011682016040523d82523d6000602084013e612612565b606091505b5050905080612689576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5472616e73666572206661696c65642e0000000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600042612838600b54600454614e4990919063ffffffff16565b11905090565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083111561294f576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129e3565b6129628382614e3290919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60045481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612b7857600080fd5b8060168190555050565b60008073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f546f6b656e3a20706f6f6c20616c72656164792063726561746564000000000081525060200191505060405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c65396600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612ced57600080fd5b505afa158015612d01573d6000803e3d6000fd5b505050506040513d6020811015612d1757600080fd5b8101908080519060200190929190505050306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015612dbe57600080fd5b505af1158015612dd2573d6000803e3d6000fd5b505050506040513d6020811015612de857600080fd5b8101908080519060200190929190505050601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612ebb57600080fd5b6001601760006101000a81548160ff021916908315150217905550565b60085481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f3857600080fd5b6000601760006101000a81548160ff021916908315150217905550565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60188054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156130375780601f1061300c57610100808354040283529160200191613037565b820191906000526020600020905b81548152906001019060200180831161301a57829003601f168201915b505050505081565b600f5481565b6040518060400160405280600581526020017f70434f524500000000000000000000000000000000000000000000000000000081525081565b601760009054906101000a900460ff1681565b600c5481565b60006130a4338484614668565b613116576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4c696d6974206275797320617265206f6e21000000000000000000000000000081525060200191505060405180910390fd5b6000806000613126338787614a88565b92509250925060006131658261315785613149888b614e3290919063ffffffff16565b614e3290919063ffffffff16565b614e3290919063ffffffff16565b9050613193600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461506e565b613205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616e6e6f7420646973627572736520726577617264732e000000000000000081525060200191505060405180910390fd5b613231600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168561506e565b6132a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f43616e6e6f742073656e6420746f6b656e7320746f207265736572766521000081525060200191505060405180910390fd5b6132cf600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361506e565b613341576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616e6e6f74207472616e73666572206465762066656521000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156133a05750600083115b1561347b57600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bc1e07633856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001806020018281038252600081526020016020019350505050600060405180830381600087803b15801561346257600080fd5b505af1158015613476573d6000803e3d6000fd5b505050505b613485878261506e565b6134f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f74207472616e7366657220746f6b656e732e00000000000000000081525060200191505060405180910390fd5b600194505050505092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461355f57600080fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60165481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461361a57600080fd5b6000151561362661281e565b15151461369b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4c69717569646974792067656e65726174696f6e206f6e67696e67000000000081525060200191505060405180910390fd5b60001515601960009054906101000a900460ff16151514613707576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806152b46025913960400191505060405180910390fd5b476014819055506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561379f57600080fd5b505afa1580156137b3573d6000803e3d6000fd5b505050506040513d60208110156137c957600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff1663d0e30db06014546040518263ffffffff1660e01b81526004016000604051808303818588803b15801561382657600080fd5b505af115801561383a573d6000803e3d6000fd5b5050505050600047146138b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5472616e73666572204661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb836014546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561393e57600080fd5b505af1158015613952573d6000803e3d6000fd5b505050506040513d602081101561396857600080fd5b8101908080519060200190929190505050508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16636a627842306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015613b6557600080fd5b505af1158015613b79573d6000803e3d6000fd5b505050506040513d6020811015613b8f57600080fd5b8101908080519060200190929190505050508173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015613c1e57600080fd5b505afa158015613c32573d6000803e3d6000fd5b505050506040513d6020811015613c4857600080fd5b810190808051906020019092919050505060138190555060006013541415613cd8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4c50206372656174696f6e206661696c6564000000000000000000000000000081525060200191505060405180910390fd5b613d09601454613cfb670de0b6b3a7640000601354614e6590919063ffffffff16565b614e9490919063ffffffff16565b60158190555060006015541415613d88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4c50206372656174696f6e206661696c6564000000000000000000000000000081525060200191505060405180910390fd5b6001601960006101000a81548160ff021916908315150217905550613dab6149d7565b5050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60116020528060005260406000206000915054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613e4f57600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613eed57600080fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60126020528060005260406000206000915054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613fab57600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415614052576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260428152602001806152726042913960600191505060405180910390fd5b61405a6146fa565b6140af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180615243602f913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561413657600080fd5b505af115801561414a573d6000803e3d6000fd5b505050506040513d602081101561416057600080fd5b810190808051906020019092919050505050505050565b600061420882600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e4990919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b61437b61281e565b6143ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4c69717569646974792047656e65726174696f6e204576656e74206f7665720081525060200191505060405180910390fd5b80614460576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4e6f2061677265656d656e742070726f7669646564000000000000000000000081525060200191505060405180910390fd5b34601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506144c234601454614e4990919063ffffffff16565b6014819055503373ffffffffffffffffffffffffffffffffffffffff167f20b711375edba008429d2f91787c68aa13aab7f267c346bf91be1a104d8b7b8b346040518082815260200191505060405180910390a250565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146145fa57600080fd5b8060088190555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461465e57600080fd5b8060098190555050565b6000601760009054906101000a900460ff1680156146d35750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156146e0575060165482115b156146ee57600090506146f3565b600190505b9392505050565b600042614714600c54600454614e4990919063ffffffff16565b10905090565b600a5481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461477a57600080fd5b80600a8190555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146147de57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561481857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461493857600080fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60095481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a6020528060005260406000206000915090505481565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015614a4157600080fd5b505afa158015614a55573d6000803e3d6000fd5b505050506040513d6020811015614a6b57600080fd5b8101908080519060200190929190505050905080600f8190555050565b600080600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015614af657600080fd5b505afa158015614b0a573d6000803e3d6000fd5b505050506040513d6020811015614b2057600080fd5b81019080805190602001909291905050509050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415614c025780600f541115614c01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4c6971756964697479207769746864726177616c7320666f7262696464656e0081525060200191505060405180910390fd5b5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161480614cab5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b80614cff5750601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80614d535750601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80614d8957503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b15614d9f57600093506000925060009150614e21565b614dc8612710614dba60085488614e6590919063ffffffff16565b614e9490919063ffffffff16565b9350614df3612710614de5600a5488614e6590919063ffffffff16565b614e9490919063ffffffff16565b9250614e1e612710614e1060095488614e6590919063ffffffff16565b614e9490919063ffffffff16565b91505b80600f819055505093509350939050565b600082821115614e3e57fe5b818303905092915050565b600080828401905083811015614e5b57fe5b8091505092915050565b60008082840290506000841480614e84575082848281614e8157fe5b04145b614e8a57fe5b8091505092915050565b600080828481614ea057fe5b0490508091505092915050565b60008111614eba57600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115614f0657600080fd5b614f5881600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e3290919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614fb081600054614e3290919063ffffffff16565b600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a38173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a25050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156150a957600080fd5b6150fb82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e3290919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061519082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614e4990919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509291505056fe4c69717569646974792067656e65726174696f6e20677261636520706572696f64207374696c6c206f6e676f696e6741646d696e2043616e6e6f74207472616e73666572206f75742070434f52452f57455448204c5020546f6b656e732066726f6d207468697320636f6e7472616374214c69717569646974792067656e65726174696f6e20616c72656164792066696e6973686564a265627a7a723158207fa63cd0b2b4b99f6c8f9343eda15f2d9047ccae57aa1ea60066af80ed41ac1264736f6c63430005110032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f
-----Decoded View---------------
Arg [0] : router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : factory (address): 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f
Deployed Bytecode Sourcemap
16573:15416:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17477:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17477:34:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17595:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17595:41:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17595:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5637:192;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5637:192:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5637:192:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18740:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18740:120:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18740:120:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;27894:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27894:33:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2017:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2017:26:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17518:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17518:34:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23794:2097;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23794:2097:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23794:2097:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17689:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17689:34:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17559:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17559:27:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17792:73;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17792:73:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30934:540;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30934:540:0;;;:::i;:::-;;16881:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16881:25:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8247:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8247:78:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8247:78:0;;;;;;;;;;;;;;;;;:::i;:::-;;17316:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17316:31:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;27355:527;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27355:527:0;;;:::i;:::-;;17173:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17173:41:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;26880:164;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26880:164:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6828:426;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6828:426:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6828:426:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16752:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16752:37:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3195:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3195:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3195:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17963:117;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17963:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17963:117:0;;;;;;;;;;;;;;;;;:::i;:::-;;21526:324;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21526:324:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18181:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18181:81:0;;;:::i;:::-;;16919:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16919:38:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18092:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18092:83:0;;;:::i;:::-;;17221:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17221:39:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1055:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1055:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;26706:165;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26706:165:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;26706:165:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17267:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17267:40:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17643:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17643:39:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17643:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17919:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17919:31:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17113:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17113:47:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22522:1260;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22522:1260:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22522:1260:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19429:122;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19429:122:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19429:122:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17878:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17878:34:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28386:1221;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28386:1221:0;;;:::i;:::-;;16802:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16802:36:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17360:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17360:44:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17360:44:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18593:141;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18593:141:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18593:141:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;18866:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18866:104:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18866:104:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;17411:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17411:53:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17411:53:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;31603:377;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31603:377:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31603:377:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6542:280;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6542:280:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6542:280:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;29982:637;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;29982:637:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;6156:138;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6156:138:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6156:138:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19137:145;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19137:145:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19137:145:0;;;;;;;;;;;;;;;;;:::i;:::-;;19288:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19288:129:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19288:129:0;;;;;;;;;;;;;;;;;:::i;:::-;;18274:307;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18274:307:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18274:307:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;27050:158;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27050:158:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17005:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17005:40:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18982:149;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18982:149:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18982:149:0;;;;;;;;;;;;;;;;;:::i;:::-;;1674:178;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1674:178:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1674:178:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;17058:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17058:48:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19557:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19557:140:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19557:140:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16964:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16964:34:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16845:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16845:29:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;29619:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29619:48:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;29619:48:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19777:169;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19777:169:0;;;:::i;:::-;;17477:34;;;;:::o;17595:41::-;;;;;;;;;;;;;;;;;;;:::o;5637:192::-;5704:4;5749:6;5717:7;:19;5725:10;5717:19;;;;;;;;;;;;;;;:29;5737:8;5717:29;;;;;;;;;;;;;;;:38;;;;5788:8;5767:38;;5776:10;5767:38;;;5798:6;5767:38;;;;;;;;;;;;;;;;;;5819:4;5812:11;;5637:192;;;;:::o;18740:120::-;1485:5;;;;;;;;;;;1471:19;;:10;:19;;;1463:28;;;;;;18837:15;18820:14;;:32;;;;;;;;;;;;;;;;;;18740:120;:::o;27894:33::-;;;;;;;;;;;;;:::o;2017:26::-;;;;:::o;17518:34::-;;;;:::o;23794:2097::-;23871:4;23906:29;23918:4;23924:2;23928:6;23906:11;:29::i;:::-;23898:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24001:1;23987:16;;:2;:16;;;;23979:25;;;;;;24266:21;24289:22;24313:17;24334:42;24359:4;24365:2;24369:6;24334:24;:42::i;:::-;24265:111;;;;;;24407:20;24430:69;24486:12;24430:51;24463:17;24430:28;24441:16;24430:6;:10;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;:55;;:69;;;;:::i;:::-;24407:92;;24520:18;24541:7;:13;24549:4;24541:13;;;;;;;;;;;;;;;:25;24555:10;24541:25;;;;;;;;;;;;;;;;24520:46;;24758:35;24777:15;24758:8;:14;24767:4;24758:14;;;;;;;;;;;;;;;;:18;;:35;;;;:::i;:::-;24741:8;:14;24750:4;24741:14;;;;;;;;;;;;;;;:52;;;;24819:33;24836:15;24819:8;:12;24828:2;24819:12;;;;;;;;;;;;;;;;:16;;:33;;;;:::i;:::-;24804:8;:12;24813:2;24804:12;;;;;;;;;;;;;;;:48;;;;24890:37;24909:17;24890:8;:14;24899:4;24890:14;;;;;;;;;;;;;;;;:18;;:37;;;;:::i;:::-;24873:8;:14;24882:4;24873:14;;;;;;;;;;;;;;;:54;;;;24972;25008:17;24972:8;:31;24981:21;;;;;;;;;;;24972:31;;;;;;;;;;;;;;;;:35;;:54;;;;:::i;:::-;24938:8;:31;24947:21;;;;;;;;;;;24938:31;;;;;;;;;;;;;;;:88;;;;25064:32;25083:12;25064:8;:14;25073:4;25064:14;;;;;;;;;;;;;;;;:18;;:32;;;;:::i;:::-;25047:8;:14;25056:4;25047:14;;;;;;;;;;;;;;;:49;;;;25130:38;25155:12;25130:8;:20;25139:10;;;;;;;;;;;25130:20;;;;;;;;;;;;;;;;:24;;:38;;;;:::i;:::-;25107:8;:20;25116:10;;;;;;;;;;;25107:20;;;;;;;;;;;;;;;:61;;;;25206:36;25225:16;25206:8;:14;25215:4;25206:14;;;;;;;;;;;;;;;;:18;;:36;;;;:::i;:::-;25189:8;:14;25198:4;25189:14;;;;;;;;;;;;;;;:53;;;;25280:46;25309:16;25280:8;:24;25289:14;;;;;;;;;;;25280:24;;;;;;;;;;;;;;;;:28;;:46;;;;:::i;:::-;25253:8;:24;25262:14;;;;;;;;;;;25253:24;;;;;;;;;;;;;;;:73;;;;25385:22;25400:6;25385:10;:14;;:22;;;;:::i;:::-;25357:7;:13;25365:4;25357:13;;;;;;;;;;;;;;;:25;25371:10;25357:25;;;;;;;;;;;;;;;:50;;;;25450:21;;;;;;;;;;;25435:56;;25444:4;25435:56;;;25473:17;25435:56;;;;;;;;;;;;;;;;;;25522:14;;;;;;;;;;;25507:48;;25516:4;25507:48;;;25538:16;25507:48;;;;;;;;;;;;;;;;;;25586:10;;;;;;;;;;;25571:40;;25580:4;25571:40;;;25598:12;25571:40;;;;;;;;;;;;;;;;;;25642:2;25627:35;;25636:4;25627:35;;;25646:15;25627:35;;;;;;;;;;;;;;;;;;25720:1;25687:35;;:21;;;;;;;;;;;:35;;;;:60;;;;;25746:1;25726:17;:21;25687:60;25683:179;;;25779:21;;;;;;;;;;;25764:51;;;25816:10;25828:17;25764:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25764:86:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25764:86:0;;;;25683:179;25879:4;25872:11;;;;;;;23794:2097;;;;;:::o;17689:34::-;17721:2;17689:34;:::o;17559:27::-;;;;:::o;17792:73::-;17721:2;17841;:23;17832:5;:33;17792:73;:::o;30934:540::-;30985:21;;;;;;;;;;;30977:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31077:1;31048:14;:26;31063:10;31048:26;;;;;;;;;;;;;;;;:30;31040:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31123:19;31160:16;;;;;;;;;;;31123:54;;31188:26;31217:54;31266:4;31217:44;31248:12;;31217:14;:26;31232:10;31217:26;;;;;;;;;;;;;;;;:30;;:44;;;;:::i;:::-;:48;;:54;;;;:::i;:::-;31188:83;;31282:4;:13;;;31296:10;31308:18;31282:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31282:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31282:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31282:45:0;;;;;;;;;;;;;;;;;31403:1;31374:14;:26;31389:10;31374:26;;;;;;;;;;;;;;;:30;;;;31420:46;31435:10;31447:18;31420:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;30934:540;;:::o;16881:25::-;;;;;;;;;;;;;:::o;8247:78::-;8292:25;8298:10;8310:6;8292:5;:25::i;:::-;8247:78;:::o;17316:31::-;;;;;;;;;;;;;:::o;27355:527::-;1485:5;;;;;;;;;;;1471:19;;:10;:19;;;1463:28;;;;;;27455:23;:21;:23::i;:::-;27447:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27590:12;27608:10;:15;;27630:21;27608:48;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;27589:67:0;;;27675:7;27667:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27743:10;27719:60;;27736:4;27719:60;;;27755:8;:23;27772:4;27755:23;;;;;;;;;;;;;;;;27719:60;;;;;;;;;;;;;;;;;;27813:8;:23;27830:4;27813:23;;;;;;;;;;;;;;;;27790:8;:20;27799:10;27790:20;;;;;;;;;;;;;;;:46;;;;27873:1;27847:8;:23;27864:4;27847:23;;;;;;;;;;;;;;;:27;;;;1498:1;27355:527::o;17173:41::-;;;;;;;;;;;;;:::o;26880:164::-;26939:4;27021:15;26963:55;26990:27;;26963:22;;:26;;:55;;;;:::i;:::-;:73;26956:80;;26880:164;:::o;6828:426::-;6917:12;6938:13;6954:7;:19;6962:10;6954:19;;;;;;;;;;;;;;;:29;6974:8;6954:29;;;;;;;;;;;;;;;;6938:45;;7013:8;6994:16;:27;6990:168;;;7064:1;7032:7;:19;7040:10;7032:19;;;;;;;;;;;;;;;:29;7052:8;7032:29;;;;;;;;;;;;;;;:33;;;;6990:168;;;7120:30;7133:16;7120:8;:12;;:30;;;;:::i;:::-;7088:7;:19;7096:10;7088:19;;;;;;;;;;;;;;;:29;7108:8;7088:29;;;;;;;;;;;;;;;:62;;;;6990:168;7190:8;7169:61;;7178:10;7169:61;;;7200:7;:19;7208:10;7200:19;;;;;;;;;;;;;;;:29;7220:8;7200:29;;;;;;;;;;;;;;;;7169:61;;;;;;;;;;;;;;;;;;7244:4;7237:11;;;6828:426;;;;:::o;16752:37::-;;;;:::o;3195:109::-;3251:15;3282:8;:16;3291:6;3282:16;;;;;;;;;;;;;;;;3275:23;;3195:109;;;:::o;17963:117::-;1485:5;;;;;;;;;;;1471:19;;:10;:19;;;1463:28;;;;;;18057:15;18040:14;:32;;;;17963:117;:::o;21526:324::-;21578:7;21634:1;21606:30;;:16;;;;;;;;;;;:30;;;21598:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21698:14;;;;;;;;;;;:25;;;21746:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21746:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21746:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21746:22:0;;;;;;;;;;;;;;;;21792:4;21698:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21698:110:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21698:110:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21698:110:0;;;;;;;;;;;;;;;;21679:16;;:129;;;;;;;;;;;;;;;;;;21826:16;;;;;;;;;;;21819:23;;21526:324;:::o;18181:81::-;1485:5;;;;;;;;;;;1471:19;;:10;:19;;;1463:28;;;;;;18250:4;18235:12;;:19;;;;;;;;;;;;;;;;;;18181:81::o;16919:38::-;;;;:::o;18092:83::-;1485:5;;;;;;;;;;;1471:19;;:10;:19;;;1463:28;;;;;;18162:5;18147:12;;:20;;;;;;;;;;;;;;;;;;18092:83::o;17221:39::-;;;;;;;;;;;;;:::o;1055:20::-;;;;;;;;;;;;;:::o;26706:165::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17267:40::-;;;;:::o;17643:39::-;;;;;;;;;;;;;;;;;;;:::o;17919:31::-;;;;;;;;;;;;;:::o;17113:47::-;;;;:::o;22522:1260::-;22581:4;22856:35;22868:10;22880:2;22884:6;22856:11;:35::i;:::-;22848:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22936:21;22959:22;22983:17;23004:48;23029:10;23041:2;23045:6;23004:24;:48::i;:::-;22935:117;;;;;;23083:20;23106:69;23162:12;23106:51;23139:17;23106:28;23117:16;23106:6;:10;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;:55;;:69;;;;:::i;:::-;23083:92;;23196:56;23211:21;;;;;;;;;;;23234:17;23196:14;:56::i;:::-;23188:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23308:48;23323:14;;;;;;;;;;;23339:16;23308:14;:48::i;:::-;23300:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23410:40;23425:10;;;;;;;;;;;23437:12;23410:14;:40::i;:::-;23402:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23529:1;23496:35;;:21;;;;;;;;;;;:35;;;;:60;;;;;23555:1;23535:17;:21;23496:60;23492:179;;;23588:21;;;;;;;;;;;23573:51;;;23625:10;23637:17;23573:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23573:86:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23573:86:0;;;;23492:179;23689:35;23704:2;23708:15;23689:14;:35::i;:::-;23681:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23770:4;23763:11;;;;;;22522:1260;;;;:::o;19429:122::-;1485:5;;;;;;;;;;;1471:19;;:10;:19;;;1463:28;;;;;;19537:6;19513:11;:21;19525:8;19513:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;19429:122;;:::o;17878:34::-;;;;:::o;28386:1221::-;1485:5;;;;;;;;;;;1471:19;;:10;:19;;;1463:28;;;;;;28505:5;28473:37;;:28;:26;:28::i;:::-;:37;;;28465:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28586:5;28561:30;;:21;;;;;;;;;;;:30;;;28553:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28666:21;28644:19;:43;;;;28698:19;28735:16;;;;;;;;;;;28698:54;;28793:12;28808:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28808:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28808:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;28808:22:0;;;;;;;;;;;;;;;;28793:37;;28847:4;28841:19;;;28867;;28841:48;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28841:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28841:48:0;;;;;28933:1;28908:21;:26;28900:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28972:4;28966:20;;;28995:4;29001:19;;28966:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28966:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28966:55:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;28966:55:0;;;;;;;;;;;;;;;;;29069:4;29037:63;;29054:4;29037:63;;;29076:8;:23;29093:4;29076:23;;;;;;;;;;;;;;;;29037:63;;;;;;;;;;;;;;;;;;29137:8;:23;29154:4;29137:23;;;;;;;;;;;;;;;;29111:8;:23;29128:4;29111:23;;;;;;;;;;;;;;;:49;;;;29197:1;29171:8;:23;29188:4;29171:23;;;;;;;;;;;;;;;:27;;;;29209:4;:9;;;29227:4;29209:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29209:24:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29209:24:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;29209:24:0;;;;;;;;;;;;;;;;;29266:4;:14;;;29289:4;29266:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29266:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29266:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;29266:29:0;;;;;;;;;;;;;;;;29244:19;:51;;;;29347:1;29324:19;;:24;;29316:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29398:54;29432:19;;29398:29;29422:4;29398:19;;:23;;:29;;;;:::i;:::-;:33;;:54;;;;:::i;:::-;29383:12;:69;;;;29518:1;29502:12;;:17;;29494:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29578:4;29554:21;;:28;;;;;;;;;;;;;;;;;;29593:6;:4;:6::i;:::-;1498:1;;28386:1221::o;16802:36::-;;;;;;;;;;;;;:::o;17360:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;18593:141::-;1485:5;;;;;;;;;;;1471:19;;:10;:19;;;1463:28;;;;;;18704:22;18680:21;;:46;;;;;;;;;;;;;;;;;;18593:141;:::o;18866:104::-;1485:5;;;;;;;;;;;1471:19;;:10;:19;;;1463:28;;;;;;18951:11;18938:10;;:24;;;;;;;;;;;;;;;;;;18866:104;:::o;17411:53::-;;;;;;;;;;;;;;;;;;;;;;:::o;31603:377::-;1485:5;;;;;;;;;;;1471:19;;:10;:19;;;1463:28;;;;;;31737:16;;;;;;;;;;;31720:33;;:13;:33;;;;31712:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31843:23;:21;:23::i;:::-;31835:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31935:13;31929:29;;;31959:3;31964:7;31929:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31929:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31929:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31929:43:0;;;;;;;;;;;;;;;;;31603:377;;;:::o;6542:280::-;6626:12;6679:46;6713:11;6679:7;:19;6687:10;6679:19;;;;;;;;;;;;;;;:29;6699:8;6679:29;;;;;;;;;;;;;;;;:33;;:46;;;;:::i;:::-;6647:7;:19;6655:10;6647:19;;;;;;;;;;;;;;;:29;6667:8;6647:29;;;;;;;;;;;;;;;:78;;;;6758:8;6737:61;;6746:10;6737:61;;;6768:7;:19;6776:10;6768:19;;;;;;;;;;;;;;;:29;6788:8;6768:29;;;;;;;;;;;;;;;;6737:61;;;;;;;;;;;;;;;;;;6812:4;6805:11;;6542:280;;;;:::o;29982:637::-;30109:28;:26;:28::i;:::-;30101:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30192:64;30184:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30323:9;30293:14;:26;30308:10;30293:26;;;;;;;;;;;;;;;;:39;;;;;;;;;;;30420:34;30444:9;30420:19;;:23;;:34;;;;:::i;:::-;30398:19;:56;;;;30589:10;30571:40;;;30601:9;30571:40;;;;;;;;;;;;;;;;;;29982:637;:::o;6156:138::-;6230:17;6263:7;:15;6271:6;6263:15;;;;;;;;;;;;;;;:25;6279:8;6263:25;;;;;;;;;;;;;;;;6256:32;;6156:138;;;;:::o;19137:145::-;1485:5;;;;;;;;;;;1471:19;;:10;:19;;;1463:28;;;;;;19252:22;19228:21;:46;;;;19137:145;:::o;19288:129::-;1485:5;;;;;;;;;;;1471:19;;:10;:19;;;1463:28;;;;;;19391:18;19371:17;:38;;;;19288:129;:::o;18274:307::-;18363:4;18437:12;;;;;;;;;;;18436:46;;;;;18465:16;;;;;;;;;;;18455:26;;:6;:26;;;18436:46;:75;;;;;18496:14;;18487:6;:23;18436:75;18432:120;;;18535:5;18528:12;;;;18432:120;18569:4;18562:11;;18274:307;;;;;;:::o;27050:158::-;27104:4;27185:15;27128:54;27155:26;;27128:22;;:26;;:54;;;;:::i;:::-;:72;27121:79;;27050:158;:::o;17005:40::-;;;;:::o;18982:149::-;1485:5;;;;;;;;;;;1471:19;;:10;:19;;;1463:28;;;;;;19100:23;19075:22;:48;;;;18982:149;:::o;1674:178::-;1485:5;;;;;;;;;;;1471:19;;:10;:19;;;1463:28;;;;;;1771:1;1751:22;;:8;:22;;;;1743:31;;;;;;1814:8;1786:37;;1807:5;;;;;;;;;;;1786:37;;;;;;;;;;;;1838:8;1830:5;;:16;;;;;;;;;;;;;;;;;;1674:178;:::o;17058:48::-;;;;:::o;19557:140::-;1485:5;;;;;;;;;;;1471:19;;:10;:19;;;1463:28;;;;;;19683:6;19650:20;:30;19671:8;19650:30;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19557:140;;:::o;16964:34::-;;;;:::o;16845:29::-;;;;;;;;;;;;;:::o;29619:48::-;;;;;;;;;;;;;;;;;:::o;19777:169::-;19811:28;19848:16;;;;;;;;;;;19842:35;;;:37;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19842:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19842:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19842:37:0;;;;;;;;;;;;;;;;19811:68;;19918:20;19890:25;:48;;;;19777:169;:::o;19958:1481::-;20167:24;20193:25;20220:20;20269:28;20306:16;;;;;;;;;;;20300:35;;;:37;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20300:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20300:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20300:37:0;;;;;;;;;;;;;;;;20269:68;;20367:16;;;;;;;;;;;20357:26;;:6;:26;;;20354:142;;;20440:20;20411:25;;:49;;20403:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20354:142;20528:21;;;;;;;;;;;20518:31;;:6;:31;;;:80;;;;20582:16;;;;;;;;;;;20572:26;;:6;:26;;;20518:80;:121;;;;20620:11;:19;20632:6;20620:19;;;;;;;;;;;;;;;;;;;;;;;;;20518:121;:173;;;;20660:20;:31;20681:9;20660:31;;;;;;;;;;;;;;;;;;;;;;;;;20518:173;:217;;;;20730:4;20712:23;;:6;:23;;;20518:217;20515:847;;;20958:1;20939:20;;20998:1;20978:21;;21033:1;21018:16;;20515:847;;;21126:44;21164:5;21126:33;21137:21;;21126:6;:10;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;21107:63;;21209:45;21248:5;21209:34;21220:22;;21209:6;:10;;:34;;;;:::i;:::-;:38;;:45;;;;:::i;:::-;21189:65;;21288:40;21322:5;21288:29;21299:17;;21288:6;:10;;:29;;;;:::i;:::-;:33;;:40;;;;:::i;:::-;21273:55;;20515:847;21407:20;21379:25;:48;;;;19958:1481;;;;;;;;:::o;577:113::-;635:7;663:1;658;:6;;651:14;;;;683:1;679;:5;672:12;;577:113;;;;:::o;696:133::-;754:7;770:9;786:1;782;:5;770:17;;806:1;801;:6;;794:14;;;;822:1;815:8;;;696:133;;;;:::o;148:147::-;206:7;222:9;238:1;234;:5;222:17;;258:1;253;:6;:20;;;;272:1;267;263;:5;;;;;;:10;253:20;246:28;;;;288:1;281:8;;;148:147;;;;:::o;301:270::-;359:7;450:9;466:1;462;:5;;;;;;450:17;;564:1;557:8;;;301:270;;;;:::o;7718:517::-;7802:1;7793:6;:10;7785:19;;;;;;7833:8;:16;7842:6;7833:16;;;;;;;;;;;;;;;;7823:6;:26;;7815:35;;;;;;8063:28;8084:6;8063:8;:16;8072:6;8063:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;8044:8;:16;8053:6;8044:16;;;;;;;;;;;;;;;:47;;;;8116:23;8132:6;8116:11;;:15;;:23;;;;:::i;:::-;8102:11;:37;;;;8180:1;8155:36;;8164:6;8155:36;;;8184:6;8155:36;;;;;;;;;;;;;;;;;;8212:6;8207:20;;;8220:6;8207:20;;;;;;;;;;;;;;;;;;7718:517;;:::o;2639:347::-;2702:4;2738:1;2723:17;;:3;:17;;;;2715:26;;;;;;2837:32;2862:6;2837:8;:20;2846:10;2837:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;2814:8;:20;2823:10;2814:20;;;;;;;;;;;;;;;:55;;;;2892:25;2910:6;2892:8;:13;2901:3;2892:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;2876:8;:13;2885:3;2876:13;;;;;;;;;;;;;;;:41;;;;2950:3;2929:33;;2938:10;2929:33;;;2955:6;2929:33;;;;;;;;;;;;;;;;;;2976:4;2969:11;;2639:347;;;;:::o
Swarm Source
bzzr://7fa63cd0b2b4b99f6c8f9343eda15f2d9047ccae57aa1ea60066af80ed41ac12
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.