Contract Overview
[ Download CSV Export ]
Latest 20 internal transactions
[ Download CSV Export ]
Contract Name:
Test
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2022-09-24 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IBEP20Extended { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * ////IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { /** * @dev Returns true if `account` is a contract. * * [////IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * ////IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an BNB balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract Auth { address internal owner; mapping(address => bool) internal authorizations; constructor(address _owner) { owner = _owner; authorizations[_owner] = true; } /** * Function modifier to require caller to be contract owner */ modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } /** * Function modifier to require caller to be authorized */ modifier authorized() { require(isAuthorized(msg.sender), "!AUTHORIZED"); _; } /** * Authorize address. Owner only */ function authorize(address adr) public onlyOwner { authorizations[adr] = true; } /** * Remove address' authorization. Owner only */ function unauthorize(address adr) public onlyOwner { authorizations[adr] = false; } /** * Check if address is owner */ function isOwner(address account) public view returns (bool) { return account == owner; } /** * Return address' authorization status */ function isAuthorized(address adr) public view returns (bool) { return authorizations[adr]; } /** * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized */ function transferOwnership(address payable adr) public onlyOwner { owner = adr; authorizations[adr] = true; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } // PancakeRouter Interface interface IPancakeFactory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() 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; } interface IPancakePair { 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 IPancakeRouter01 { 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); } interface IPancakeRouter02 is IPancakeRouter01 { 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; } interface IDividendDistributor { function setDistributionCriteria( uint256 _minPeriod, uint256 _minDistribution ) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function process(uint256 gas) external; } // DividendDistributor contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address public _token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } // Reward tokens IBEP20Extended public rewardToken; IPancakeRouter02 public router; address[] public shareholders; mapping(address => uint256) public shareholderIndexes; mapping(address => uint256) public shareholderClaims; mapping(address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10**27; uint256 public minPeriod = 1 hours; uint256 public minDistribution = 1 * (10**18); // 1 * (10**rewardToken.decimals()); uint256 currentIndex; modifier onlyToken() { require(msg.sender == _token); _; } constructor(address rewardToken_, address router_) { _token = msg.sender; rewardToken = IBEP20Extended(rewardToken_); router = IPancakeRouter02(router_); } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken { minPeriod = _minPeriod; minDistribution = _minDistribution; } function setShare(address shareholder, uint256 amount) external override onlyToken { if (shares[shareholder].amount > 0) { distributeDividend(shareholder); } if (amount > 0 && shares[shareholder].amount == 0) { addShareholder(shareholder); } else if (amount == 0 && shares[shareholder].amount > 0) { removeShareholder(shareholder); } totalShares = totalShares.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends( shares[shareholder].amount ); } function deposit() external payable override onlyToken { uint256 balanceBefore = rewardToken.balanceOf(address(this)); address[] memory path = new address[](2); path[0] = router.WETH(); path[1] = address(rewardToken); router.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: msg.value }(0, path, address(this), block.timestamp); uint256 amount = rewardToken.balanceOf(address(this)).sub( balanceBefore ); totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add( dividendsPerShareAccuracyFactor.mul(amount).div(totalShares) ); } function process(uint256 gas) external override onlyToken { uint256 shareholderCount = shareholders.length; if (shareholderCount == 0) { return; } uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; while (gasUsed < gas && iterations < shareholderCount) { if (currentIndex >= shareholderCount) { currentIndex = 0; } if (shouldDistribute(shareholders[currentIndex])) { distributeDividend(shareholders[currentIndex]); } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } function shouldDistribute(address shareholder) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution; } function distributeDividend(address shareholder) internal { if (shares[shareholder].amount == 0) { return; } uint256 amount = getUnpaidEarnings(shareholder); if (amount > 0) { totalDistributed = totalDistributed.add(amount); rewardToken.transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount); shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } } function claimDividend() external { distributeDividend(msg.sender); } function getUnpaidEarnings(address shareholder) public view returns (uint256) { if (shares[shareholder].amount == 0) { return 0; } uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if (shareholderTotalDividends <= shareholderTotalExcluded) { return 0; } return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length - 1]; shareholderIndexes[shareholders[shareholders.length - 1]] = shareholderIndexes[shareholder]; shareholders.pop(); } } contract Test is IBEP20Extended, Auth { using SafeMath for uint256; address private constant DEAD = address(0xdead); address private constant ZERO = address(0); string private _name = "Test2"; string private _symbol = "Test2"; uint8 private _decimals = 9; uint256 private _totalSupply = 100 * 10 ** 6 * (10 ** _decimals); // 100 million IPancakeRouter02 public router; address public pair; address public bbfshareAddress = 0x8Ed2B78d5f7E433fcEeab155DE9fDEfa4217f418; address public busdAddress = 0xc21223249CA28397B4B6541dfFaEcC539BfF0c59; address public autoLiquidityReceiver; address payable public marketingFeeReceiver = payable(0x3d54465f42Fe5ee06CF800c8D5cFa915899098D8); address payable public lotteryFeeReceiver = payable(0xab6FCadE39216dAecA82d379DE365F2d325607e7); uint256 public liquidityFee = 200; // 2% uint256 public reflectionFeeBUSD = 200; // 2% uint256 public reflectionFeeBBFSHARE = 400; // 4% uint256 public reflectionFee = reflectionFeeBUSD + reflectionFeeBBFSHARE; uint256 public marketingFee = 300; // 3% uint256 public lotteryFee = 100; // 1% uint256 public totalFee = 1200; // 12% uint256 public feeDenominator = 10000; // 10000 DividendDistributor public distributorBUSD; DividendDistributor public distributorBBFSHARE; uint256 public distributorGas = 500000; bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply / 20000; // 0.005% mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) public isFeeExempt; mapping(address => bool) public isDividendExempt; event AutoLiquify(uint256 amountBNB, uint256 amountBOG); bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor (address router_) payable Auth(msg.sender) { router = IPancakeRouter02(router_); pair = IPancakeFactory(router.factory()).createPair(address(this), router.WETH()); distributorBUSD = new DividendDistributor(busdAddress, router_); distributorBBFSHARE = new DividendDistributor(bbfshareAddress, router_); isFeeExempt[msg.sender] = true; isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; autoLiquidityReceiver = msg.sender; _allowances[address(this)][address(router)] = _totalSupply; _allowances[address(this)][address(pair)] = _totalSupply; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable {} function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external view override returns (uint8) { return _decimals; } function symbol() external view override returns (string memory) { return _symbol; } function name() external view override returns (string memory) { return _name; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { return approve(spender, _totalSupply); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if (_allowances[sender][msg.sender] != _totalSupply) { _allowances[sender][msg.sender] = _allowances[sender][msg.sender] .sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if (inSwap) { return _basicTransfer(sender, recipient, amount); } if (shouldSwapBack()) { swapBack(); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); if (!isDividendExempt[sender]) { try distributorBUSD.setShare(sender, _balances[sender]) {} catch {} try distributorBBFSHARE.setShare(sender, _balances[sender]) {} catch {} } if (!isDividendExempt[recipient]) { try distributorBUSD.setShare(recipient, _balances[recipient]) {} catch {} try distributorBBFSHARE.setShare(recipient, _balances[recipient]) {} catch {} } try distributorBUSD.process(distributorGas) {} catch {} try distributorBBFSHARE.process(distributorGas) {} catch {} emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function shouldTakeFee(address sender) internal view returns (bool) { return !isFeeExempt[sender]; } function takeFee(address sender, uint256 amount) internal returns (uint256) { uint256 feeAmount = amount.mul(totalFee).div(feeDenominator); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function swapBack() internal swapping { uint256 amountToLiquify = swapThreshold.mul(liquidityFee).div(totalFee).div(2); uint256 amountToSwap = swapThreshold.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountBNB = address(this).balance.sub(balanceBefore); uint256 totalBNBFee = totalFee.sub(liquidityFee.div(2)); uint256 amountBNBLiquidity = amountBNB.mul(liquidityFee).div(totalBNBFee).div(2); uint256 amountBNBReflectionBUSD = amountBNB.mul(reflectionFeeBUSD).div(totalBNBFee); uint256 amountBNBReflectionBBFSHARE = amountBNB.mul(reflectionFeeBBFSHARE).div(totalBNBFee); uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee); uint256 amountBNBLottery = amountBNB.mul(lotteryFee).div(totalBNBFee); try distributorBUSD.deposit{ value: amountBNBReflectionBUSD }() {} catch {} try distributorBBFSHARE.deposit{ value: amountBNBReflectionBBFSHARE }() {} catch {} payable(marketingFeeReceiver).transfer(amountBNBMarketing); payable(lotteryFeeReceiver).transfer(amountBNBLottery); if (amountToLiquify > 0) { router.addLiquidityETH{ value: amountBNBLiquidity }( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountBNBLiquidity, amountToLiquify); } } function buyTokens(uint256 amount, address to) internal swapping { address[] memory path = new address[](2); path[0] = router.WETH(); path[1] = address(this); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0, path, to, block.timestamp); } function setIsDividendExempt(address holder, bool exempt) external authorized { require(holder != address(this) && holder != pair); isDividendExempt[holder] = exempt; if (exempt) { distributorBUSD.setShare(holder, 0); distributorBBFSHARE.setShare(holder, 0); } else { distributorBUSD.setShare(holder, _balances[holder]); distributorBBFSHARE.setShare(holder, _balances[holder]); } } function setIsFeeExempt(address holder, bool exempt) external authorized { isFeeExempt[holder] = exempt; } function setFees( uint256 _liquidityFee, uint256 _lotteryFee, uint256 _reflectionFeeBUSD, uint256 _reflectionFeeBBFSHARE, uint256 _marketingFee, uint256 _feeDenominator ) external authorized { liquidityFee = _liquidityFee; lotteryFee = _lotteryFee; reflectionFeeBUSD = _reflectionFeeBUSD; reflectionFeeBBFSHARE = _reflectionFeeBBFSHARE; reflectionFee = _reflectionFeeBUSD + _reflectionFeeBBFSHARE; marketingFee = _marketingFee; feeDenominator = _feeDenominator; totalFee = _liquidityFee.add(_lotteryFee).add(reflectionFee).add(_marketingFee); } function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _lotteryFeeReceiver) external authorized { autoLiquidityReceiver = _autoLiquidityReceiver; marketingFeeReceiver = payable(_marketingFeeReceiver); lotteryFeeReceiver = payable(_lotteryFeeReceiver); } function changeRouter(address router_) external authorized { router = IPancakeRouter02(router_); pair = IPancakeFactory(router.factory()).createPair(address(this), router.WETH()); distributorBUSD = new DividendDistributor(busdAddress, router_); distributorBBFSHARE = new DividendDistributor(bbfshareAddress, router_); isDividendExempt[pair] = true; _allowances[address(this)][address(router)] = _totalSupply; _allowances[address(this)][address(pair)] = _totalSupply; } function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized { swapEnabled = _enabled; swapThreshold = _amount; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized { distributorBUSD.setDistributionCriteria(_minPeriod, _minDistribution); distributorBBFSHARE.setDistributionCriteria(_minPeriod, _minDistribution); } function setDistributorSettings(uint256 gas) external authorized { require(gas < 750000, "Gas must be lower than 750000"); distributorGas = gas; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function getLiquidityBacking(uint256 accuracy) public view returns (uint256) { return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply()); } function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) { return getLiquidityBacking(accuracy) > target; } }
[{"inputs":[{"internalType":"address","name":"router_","type":"address"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bbfshareAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"busdAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"router_","type":"address"}],"name":"changeRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorBBFSHARE","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorBUSD","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lotteryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lotteryFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFeeBBFSHARE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFeeBUSD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IPancakeRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_lotteryFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_lotteryFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFeeBUSD","type":"uint256"},{"internalType":"uint256","name":"_reflectionFeeBBFSHARE","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c060405260056080908152642a32b9ba1960d91b60a052600290620000269082620005b6565b506040805180820190915260058152642a32b9ba1960d91b6020820152600390620000529082620005b6565b506004805460ff191660099081179091556200007090600a62000797565b62000080906305f5e100620007af565b600555600880546001600160a01b0319908116738ed2b78d5f7e433fceeab155de9fdefa4217f4181790915560098054821673c21223249ca28397b4b6541dffaecc539bff0c59179055600b80548216733d54465f42fe5ee06cf800c8d5cfa915899098d8179055600c805490911673ab6fcade39216daeca82d379de365f2d325607e717905560c8600d819055600e819055610190600f8190556200012691620007c9565b60105561012c60115560646012556104b06013556127106014556207a1206017556018805460ff191660011790556005546200016690614e2090620007df565b60195560405162005285380380620052858339810160408190526200018b9162000802565b600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff1916909217909155600680546001600160a01b038616931683179055825163c45a015560e01b81529251919263c45a015592600480830193928290030181865afa15801562000207573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022d919062000802565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000290573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b6919062000802565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000304573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032a919062000802565b600780546001600160a01b0319166001600160a01b0392831617905560095460405191169082906200035c9062000503565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000390573d6000803e3d6000fd5b50601580546001600160a01b0319166001600160a01b039283161790556008546040519116908290620003c39062000503565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620003f7573d6000803e3d6000fd5b50601680546001600160a01b03199081166001600160a01b0393841617909155336000818152601c60209081526040808320805460ff1990811660019081179092556007805489168652601d8552838620805483168417905530865283862080548316841790557ffa758cef5bd0db441ee78e87b9ceab03f7b5d7b78ff593b3cf8150611abcb99980549092169092179055600a80549096168517909555600554601b835281842060065488168552835281842081905594549095168252848220849055828252601a81528482208490559351928352909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3506200082d565b61119b80620040ea83390190565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200053c57607f821691505b6020821081036200055d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005b157600081815260208120601f850160051c810160208610156200058c5750805b601f850160051c820191505b81811015620005ad5782815560010162000598565b5050505b505050565b81516001600160401b03811115620005d257620005d262000511565b620005ea81620005e3845462000527565b8462000563565b602080601f831160018114620006225760008415620006095750858301515b600019600386901b1c1916600185901b178555620005ad565b600085815260208120601f198616915b82811015620006535788860151825594840194600190910190840162000632565b5085821015620006725787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006d9578160001904821115620006bd57620006bd62000682565b80851615620006cb57918102915b93841c93908002906200069d565b509250929050565b600082620006f25750600162000791565b81620007015750600062000791565b81600181146200071a5760028114620007255762000745565b600191505062000791565b60ff84111562000739576200073962000682565b50506001821b62000791565b5060208310610133831016604e8410600b84101617156200076a575081810a62000791565b62000776838362000698565b80600019048211156200078d576200078d62000682565b0290505b92915050565b6000620007a860ff841683620006e1565b9392505050565b808202811582820484141762000791576200079162000682565b8082018082111562000791576200079162000682565b600082620007fd57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200081557600080fd5b81516001600160a01b0381168114620007a857600080fd5b6138ad806200083d6000396000f3fe608060405260043610620002cf5760003560e01c806383ad79941162000177578063d128f70611620000d1578063e96fada21162000084578063e96fada214620008cc578063f0b37c0414620008ee578063f2fde38b1462000913578063f708a64f1462000938578063f887ea40146200095d578063fe9fbb80146200097f57600080fd5b8063d128f70614620007d9578063d51ed1c814620007f1578063d7c010321462000816578063dd62ed3e146200083b578063df20fd491462000885578063e3bdfca514620008aa57600080fd5b8063a8aa1b31116200012a578063a8aa1b311462000711578063a9059cbb1462000733578063ac76271c1462000758578063b6a5d7de1462000770578063bb48bb3f1462000795578063ca33e64c14620007b757600080fd5b806383ad7994146200065d57806386f6c3c1146200067557806395d89b41146200069a57806398118cb414620006b25780639d1944f514620006ca578063a3a94f1914620006ef57600080fd5b8063340ac20f11620002295780636b67c4df11620001dc5780636b67c4df146200057a5780636ddd1713146200059257806370a0823114620005ae578063747c722f14620005e857806376a90231146200062357806378aa08ed146200064557600080fd5b8063340ac20f146200048b5780633f4218e014620004b05780634355855a14620004e4578063571ac8b0146200051857806360e71962146200053d578063658d4b7f146200055557600080fd5b80631df4ccfc11620002825780631df4ccfc14620003b857806323b872dd14620003d05780632b112e4914620003f55780632d48e896146200040d5780632f54bf6e1462000434578063313ce567146200046757600080fd5b80630445b66714620002dc57806306fdde031462000307578063095ea7b3146200032e5780631161ae391462000364578063180b0d7e146200038957806318160ddd14620003a157600080fd5b36620002d757005b600080fd5b348015620002e957600080fd5b50620002f460195481565b6040519081526020015b60405180910390f35b3480156200031457600080fd5b506200031f620009a4565b604051620002fe919062002286565b3480156200033b57600080fd5b50620003536200034d366004620022ef565b62000a3e565b6040519015158152602001620002fe565b3480156200037157600080fd5b5062000353620003833660046200231e565b62000aac565b3480156200039657600080fd5b50620002f460145481565b348015620003ae57600080fd5b50600554620002f4565b348015620003c557600080fd5b50620002f460135481565b348015620003dd57600080fd5b5062000353620003ef36600462002341565b62000ac2565b3480156200040257600080fd5b50620002f462000b8b565b3480156200041a57600080fd5b50620004326200042c3660046200231e565b62000c00565b005b3480156200044157600080fd5b50620003536200045336600462002387565b6000546001600160a01b0391821691161490565b3480156200047457600080fd5b5060045460405160ff9091168152602001620002fe565b3480156200049857600080fd5b5062000432620004aa36600462002387565b62000d06565b348015620004bd57600080fd5b5062000353620004cf36600462002387565b601c6020526000908152604090205460ff1681565b348015620004f157600080fd5b50620003536200050336600462002387565b601d6020526000908152604090205460ff1681565b3480156200052557600080fd5b50620003536200053736600462002387565b62000fe2565b3480156200054a57600080fd5b50620002f460175481565b3480156200056257600080fd5b506200043262000574366004620023bd565b62000ff2565b3480156200058757600080fd5b50620002f460115481565b3480156200059f57600080fd5b50601854620003539060ff1681565b348015620005bb57600080fd5b50620002f4620005cd36600462002387565b6001600160a01b03166000908152601a602052604090205490565b348015620005f557600080fd5b506016546200060a906001600160a01b031681565b6040516001600160a01b039091168152602001620002fe565b3480156200063057600080fd5b506009546200060a906001600160a01b031681565b3480156200065257600080fd5b50620002f460125481565b3480156200066a57600080fd5b50620002f460105481565b3480156200068257600080fd5b506200043262000694366004620023f7565b62001047565b348015620006a757600080fd5b506200031f620010c7565b348015620006bf57600080fd5b50620002f4600d5481565b348015620006d757600080fd5b5062000432620006e93660046200243b565b620010d8565b348015620006fc57600080fd5b506008546200060a906001600160a01b031681565b3480156200071e57600080fd5b506007546200060a906001600160a01b031681565b3480156200074057600080fd5b506200035362000752366004620022ef565b6200115b565b3480156200076557600080fd5b50620002f4600e5481565b3480156200077d57600080fd5b50620004326200078f36600462002387565b6200116a565b348015620007a257600080fd5b50600c546200060a906001600160a01b031681565b348015620007c457600080fd5b50600a546200060a906001600160a01b031681565b348015620007e657600080fd5b50620002f4600f5481565b348015620007fe57600080fd5b50620002f4620008103660046200243b565b620011be565b3480156200082357600080fd5b50620004326200083536600462002455565b6200120a565b3480156200084857600080fd5b50620002f46200085a366004620024a7565b6001600160a01b039182166000908152601b6020908152604080832093909416825291909152205490565b3480156200089257600080fd5b5062000432620008a4366004620024e5565b62001273565b348015620008b757600080fd5b506015546200060a906001600160a01b031681565b348015620008d957600080fd5b50600b546200060a906001600160a01b031681565b348015620008fb57600080fd5b50620004326200090d36600462002387565b620012b4565b3480156200092057600080fd5b50620004326200093236600462002387565b62001302565b3480156200094557600080fd5b506200043262000957366004620023bd565b6200139b565b3480156200096a57600080fd5b506006546200060a906001600160a01b031681565b3480156200098c57600080fd5b50620003536200099e36600462002387565b62001589565b606060028054620009b59062002504565b80601f0160208091040260200160405190810160405280929190818152602001828054620009e39062002504565b801562000a345780601f1062000a085761010080835404028352916020019162000a34565b820191906000526020600020905b81548152906001019060200180831162000a1657829003601f168201915b5050505050905090565b336000818152601b602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259062000a9a9086815260200190565b60405180910390a35060015b92915050565b60008262000aba83620011be565b119392505050565b6005546001600160a01b0384166000908152601b6020908152604080832033845290915281205490911462000b74576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152601b8252838120338252909152919091205462000b4f918490620015a7565b6001600160a01b0385166000908152601b602090815260408083203384529091529020555b62000b81848484620015e6565b90505b9392505050565b601a6020527fb75ecc04ed35f89790e98640e901bda41eceff0cb896cf2765fb6976802537505461dead60009081527f428bdc965569ef4717764ecfd84e88946a9a226b52b813e6ab6a7f46aad86e8854600554919262000bfb92909162000bf4919062001a29565b9062001a29565b905090565b62000c0b3362001589565b62000c335760405162461bcd60e51b815260040162000c2a9062002540565b60405180910390fd5b6015546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e89690604401600060405180830381600087803b15801562000c8157600080fd5b505af115801562000c96573d6000803e3d6000fd5b50506016546040516316a4744b60e11b815260048101869052602481018590526001600160a01b039091169250632d48e89691506044015b600060405180830381600087803b15801562000ce957600080fd5b505af115801562000cfe573d6000803e3d6000fd5b505050505050565b62000d113362001589565b62000d305760405162461bcd60e51b815260040162000c2a9062002540565b600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000d8a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000db0919062002565565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000e13573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e39919062002565565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000e87573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ead919062002565565b600780546001600160a01b0319166001600160a01b03928316179055600954604051911690829062000edf9062002278565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000f13573d6000803e3d6000fd5b50601580546001600160a01b0319166001600160a01b03928316179055600854604051911690829062000f469062002278565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000f7a573d6000803e3d6000fd5b50601680546001600160a01b0319166001600160a01b039283161790556007805482166000908152601d60209081526040808320805460ff19166001179055600554308452601b83528184206006548716855290925280832082905592549093168152205550565b600062000aa68260055462000a3e565b62000ffd3362001589565b6200101c5760405162461bcd60e51b815260040162000c2a9062002540565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b620010523362001589565b620010715760405162461bcd60e51b815260040162000c2a9062002540565b600d8690556012859055600e849055600f8390556200109183856200259b565b601081905560118390556014829055620010bc908390620010b590818a8a62001a6d565b9062001a6d565b601355505050505050565b606060038054620009b59062002504565b620010e33362001589565b620011025760405162461bcd60e51b815260040162000c2a9062002540565b620b71b08110620011565760405162461bcd60e51b815260206004820152601d60248201527f476173206d757374206265206c6f776572207468616e20373530303030000000604482015260640162000c2a565b601755565b600062000b84338484620015e6565b6000546001600160a01b03163314620011975760405162461bcd60e51b815260040162000c2a90620025b1565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b600062000aa6620011ce62000b8b565b6007546001600160a01b03166000908152601a60205260409020546200120390620011fb90600262001ad0565b859062001ad0565b9062001b5a565b620012153362001589565b620012345760405162461bcd60e51b815260040162000c2a9062002540565b600a80546001600160a01b039485166001600160a01b031991821617909155600b805493851693821693909317909255600c8054919093169116179055565b6200127e3362001589565b6200129d5760405162461bcd60e51b815260040162000c2a9062002540565b6018805460ff191692151592909217909155601955565b6000546001600160a01b03163314620012e15760405162461bcd60e51b815260040162000c2a90620025b1565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146200132f5760405162461bcd60e51b815260040162000c2a90620025b1565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b620013a63362001589565b620013c55760405162461bcd60e51b815260040162000c2a9062002540565b6001600160a01b0382163014801590620013ed57506007546001600160a01b03838116911614155b620013f757600080fd5b6001600160a01b0382166000908152601d60205260409020805460ff19168215801591909117909155620014c757601554604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401600060405180830381600087803b1580156200147457600080fd5b505af115801562001489573d6000803e3d6000fd5b5050601654604051630a5b654b60e11b81526001600160a01b0386811660048301526000602483015290911692506314b6ca96915060440162000cce565b6015546001600160a01b038381166000818152601a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156200152657600080fd5b505af11580156200153b573d6000803e3d6000fd5b50506016546001600160a01b038581166000818152601a602052604090819020549051630a5b654b60e11b815260048101929092526024820152911692506314b6ca96915060440162000cce565b6001600160a01b031660009081526001602052604090205460ff1690565b60008184841115620015ce5760405162461bcd60e51b815260040162000c2a919062002286565b506000620015dd8486620025d1565b95945050505050565b601e5460009060ff16156200160a576200160284848462001b9e565b905062000b84565b6200161462001c89565b1562001624576200162462001cdb565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152601a909152919091205462001678918490620015a7565b6001600160a01b0385166000908152601a6020908152604080832093909355601c90529081205460ff1615620016af5782620016bb565b620016bb858462002197565b6001600160a01b0385166000908152601a6020526040902054909150620016e3908262001a6d565b6001600160a01b038086166000908152601a60209081526040808320949094559188168152601d909152205460ff16620017fc576015546001600160a01b038681166000818152601a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156200177657600080fd5b505af192505050801562001788575060015b506016546001600160a01b038681166000818152601a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015620017e857600080fd5b505af1925050508015620017fa575060015b505b6001600160a01b0384166000908152601d602052604090205460ff1662001902576015546001600160a01b038581166000818152601a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156200187c57600080fd5b505af19250505080156200188e575060015b506016546001600160a01b038581166000818152601a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015620018ee57600080fd5b505af192505050801562001900575060015b505b6015546017546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916200193b9160040190815260200190565b600060405180830381600087803b1580156200195657600080fd5b505af192505050801562001968575060015b506016546017546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991620019a29160040190815260200190565b600060405180830381600087803b158015620019bd57600080fd5b505af1925050508015620019cf575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162001a1691815260200190565b60405180910390a3506001949350505050565b600062000b8483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250620015a7565b60008062001a7c83856200259b565b90508381101562000b845760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000c2a565b60008260000362001ae45750600062000aa6565b600062001af28385620025e7565b90508262001b01858362002601565b1462000b845760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840162000c2a565b600062000b8483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062002245565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152601a9091529182205462001bf1918490620015a7565b6001600160a01b038086166000908152601a6020526040808220939093559085168152205462001c22908362001a6d565b6001600160a01b038085166000818152601a602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9062001c779086815260200190565b60405180910390a35060019392505050565b6007546000906001600160a01b0316331480159062001cab5750601e5460ff16155b801562001cba575060185460ff165b801562000bfb575050601954306000908152601a6020526040902054101590565b601e805460ff19166001179055601354600d5460195460009262001d0b9260029262001203929183919062001ad0565b9050600062001d268260195462001a2990919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811062001d635762001d6362002624565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801562001dbd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001de3919062002565565b8160018151811062001df95762001df962002624565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b81524792919091169063791ac9479062001e459086906000908790309042906004016200263a565b600060405180830381600087803b15801562001e6057600080fd5b505af115801562001e75573d6000803e3d6000fd5b50505050600062001e90824762001a2990919063ffffffff16565b9050600062001eba62001eb06002600d5462001b5a90919063ffffffff16565b6013549062001a29565b9050600062001ee06002620012038462001203600d548862001ad090919063ffffffff16565b9050600062001f008362001203600e548762001ad090919063ffffffff16565b9050600062001f208462001203600f548862001ad090919063ffffffff16565b9050600062001f4085620012036011548962001ad090919063ffffffff16565b9050600062001f6086620012036012548a62001ad090919063ffffffff16565b9050601560009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801562001fb357600080fd5b505af19350505050801562001fc6575060015b50601660009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156200201857600080fd5b505af1935050505080156200202b575060015b50600b546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801562002067573d6000803e3d6000fd5b50600c546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015620020a3573d6000803e3d6000fd5b508a156200218057600654600a5460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af11580156200211c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620021439190620026ad565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601e805460ff19169055505050505050505050565b600080620021b8601454620012036013548662001ad090919063ffffffff16565b306000908152601a6020526040902054909150620021d7908262001a6d565b306000818152601a6020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620022299085815260200190565b60405180910390a36200223d838262001a29565b949350505050565b60008183620022695760405162461bcd60e51b815260040162000c2a919062002286565b506000620015dd848662002601565b61119b80620026dd83390190565b600060208083528351808285015260005b81811015620022b55785810183015185820160400152820162002297565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114620022ec57600080fd5b50565b600080604083850312156200230357600080fd5b82356200231081620022d6565b946020939093013593505050565b600080604083850312156200233257600080fd5b50508035926020909101359150565b6000806000606084860312156200235757600080fd5b83356200236481620022d6565b925060208401356200237681620022d6565b929592945050506040919091013590565b6000602082840312156200239a57600080fd5b813562000b8481620022d6565b80358015158114620023b857600080fd5b919050565b60008060408385031215620023d157600080fd5b8235620023de81620022d6565b9150620023ee60208401620023a7565b90509250929050565b60008060008060008060c087890312156200241157600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000602082840312156200244e57600080fd5b5035919050565b6000806000606084860312156200246b57600080fd5b83356200247881620022d6565b925060208401356200248a81620022d6565b915060408401356200249c81620022d6565b809150509250925092565b60008060408385031215620024bb57600080fd5b8235620024c881620022d6565b91506020830135620024da81620022d6565b809150509250929050565b60008060408385031215620024f957600080fd5b6200231083620023a7565b600181811c908216806200251957607f821691505b6020821081036200253a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b6000602082840312156200257857600080fd5b815162000b8481620022d6565b634e487b7160e01b600052601160045260246000fd5b8082018082111562000aa65762000aa662002585565b60208082526006908201526510a7aba722a960d11b604082015260600190565b8181038181111562000aa65762000aa662002585565b808202811582820484141762000aa65762000aa662002585565b6000826200261f57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156200268c5784516001600160a01b03168352938301939183019160010162002665565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215620026c357600080fd5b835192506020840151915060408401519050925092509256fe60806040526b033b2e3c9fd0803ce8000000600b55610e10600c55670de0b6b3a7640000600d5534801561003257600080fd5b5060405161119b38038061119b833981016040819052610051916100a9565b600080546001600160a01b03199081163317909155600180546001600160a01b03948516908316179055600280549290931691161790556100dc565b80516001600160a01b03811681146100a457600080fd5b919050565b600080604083850312156100bc57600080fd5b6100c58361008d565b91506100d36020840161008d565b90509250929050565b6110b0806100eb6000396000f3fe60806040526004361061011f5760003560e01c8063d0e30db0116100a0578063f0fc6bca11610064578063f0fc6bca1461032e578063f7c618c114610343578063f887ea4014610363578063ffb2c47914610383578063ffd49c84146103a357600080fd5b8063d0e30db0146102ad578063d4fda1f2146102b5578063e2d2e219146102e2578063ecd0c0c3146102f8578063efca2eed1461031857600080fd5b80634fab0ae8116100e75780634fab0ae8146101c557806366817df5146101db578063997664d714610208578063ab377daa1461021e578063ce7c2ac21461025657600080fd5b806311ce023d1461012457806314b6ca961461014d57806328fd31981461016f5780632d48e8961461018f5780633a98ef39146101af575b600080fd5b34801561013057600080fd5b5061013a600b5481565b6040519081526020015b60405180910390f35b34801561015957600080fd5b5061016d610168366004610e2c565b6103b9565b005b34801561017b57600080fd5b5061013a61018a366004610e58565b610531565b34801561019b57600080fd5b5061016d6101aa366004610e75565b6105bc565b3480156101bb57600080fd5b5061013a60075481565b3480156101d157600080fd5b5061013a600d5481565b3480156101e757600080fd5b5061013a6101f6366004610e58565b60056020526000908152604090205481565b34801561021457600080fd5b5061013a60085481565b34801561022a57600080fd5b5061023e610239366004610e97565b6105de565b6040516001600160a01b039091168152602001610144565b34801561026257600080fd5b50610292610271366004610e58565b60066020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610144565b61016d610608565b3480156102c157600080fd5b5061013a6102d0366004610e58565b60046020526000908152604090205481565b3480156102ee57600080fd5b5061013a600a5481565b34801561030457600080fd5b5060005461023e906001600160a01b031681565b34801561032457600080fd5b5061013a60095481565b34801561033a57600080fd5b5061016d610897565b34801561034f57600080fd5b5060015461023e906001600160a01b031681565b34801561036f57600080fd5b5060025461023e906001600160a01b031681565b34801561038f57600080fd5b5061016d61039e366004610e97565b6108a2565b3480156103af57600080fd5b5061013a600c5481565b6000546001600160a01b031633146103d057600080fd5b6001600160a01b038216600090815260066020526040902054156103f7576103f7826109a7565b60008111801561041d57506001600160a01b038216600090815260066020526040902054155b1561048357600380546001600160a01b0384166000818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191690911790556104b6565b801580156104a857506001600160a01b03821660009081526006602052604090205415155b156104b6576104b682610ac5565b6001600160a01b0382166000908152600660205260409020546007546104e79183916104e191610bda565b90610c25565b6007556001600160a01b038216600090815260066020526040902081905561050e81610c89565b6001600160a01b0390921660009081526006602052604090206001019190915550565b6001600160a01b038116600090815260066020526040812054810361055857506000919050565b6001600160a01b03821660009081526006602052604081205461057a90610c89565b6001600160a01b0384166000908152600660205260409020600101549091508082116105aa575060009392505050565b6105b48282610bda565b949350505050565b6000546001600160a01b031633146105d357600080fd5b600c91909155600d55565b600381815481106105ee57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461061f57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610668573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068c9190610eb0565b60408051600280825260608201835292935060009290916020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156106fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071f9190610ec9565b8160008151811061073257610732610ee6565b6001600160a01b039283166020918202929092010152600180548351921691839190811061076257610762610ee6565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de959034906107a890600090869030904290600401610efc565b6000604051808303818588803b1580156107c157600080fd5b505af11580156107d5573d6000803e3d6000fd5b50506001546040516370a0823160e01b81523060048201526000945061085593508692506001600160a01b03909116906370a0823190602401602060405180830381865afa15801561082b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084f9190610eb0565b90610bda565b6008549091506108659082610c25565b600855600754600b5461088f91610886916108809085610ca6565b90610d28565b600a5490610c25565b600a55505050565b6108a0336109a7565b565b6000546001600160a01b031633146108b957600080fd5b60035460008190036108c9575050565b6000805a905060005b84831080156108e057508381105b1561099f5783600e54106108f4576000600e555b6109266003600e548154811061090c5761090c610ee6565b6000918252602090912001546001600160a01b0316610d6a565b1561095d5761095d6003600e548154811061094357610943610ee6565b6000918252602090912001546001600160a01b03166109a7565b61097261096b5a8490610bda565b8490610c25565b92505a600e8054919350600061098783610f7c565b9190505550808061099790610f7c565b9150506108d2565b505050505b50565b6001600160a01b03811660009081526006602052604081205490036109c95750565b60006109d482610531565b90508015610ac1576009546109e99082610c25565b60095560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a639190610f95565b506001600160a01b03821660009081526005602090815260408083204290556006909152902060020154610a979082610c25565b6001600160a01b038316600090815260066020526040902060028101919091555461050e90610c89565b5050565b60038054610ad590600190610fb7565b81548110610ae557610ae5610ee6565b60009182526020808320909101546001600160a01b0384811684526004909252604090922054600380549290931692918110610b2357610b23610ee6565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260049182905260408120546003805491939291610b6f90600190610fb7565b81548110610b7f57610b7f610ee6565b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610bb557610bb5610fca565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610c1c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610daf565b90505b92915050565b600080610c328385610fe0565b905083811015610c1c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b6000610c1f600b54610880600a5485610ca690919063ffffffff16565b600082600003610cb857506000610c1f565b6000610cc48385610ff3565b905082610cd1858361100a565b14610c1c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c80565b6000610c1c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610de9565b600c546001600160a01b03821660009081526005602052604081205490914291610d949190610fe0565b108015610c1f5750600d54610da883610531565b1192915050565b60008184841115610dd35760405162461bcd60e51b8152600401610c80919061102c565b506000610de08486610fb7565b95945050505050565b60008183610e0a5760405162461bcd60e51b8152600401610c80919061102c565b506000610de0848661100a565b6001600160a01b03811681146109a457600080fd5b60008060408385031215610e3f57600080fd5b8235610e4a81610e17565b946020939093013593505050565b600060208284031215610e6a57600080fd5b8135610c1c81610e17565b60008060408385031215610e8857600080fd5b50508035926020909101359150565b600060208284031215610ea957600080fd5b5035919050565b600060208284031215610ec257600080fd5b5051919050565b600060208284031215610edb57600080fd5b8151610c1c81610e17565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610f465784516001600160a01b031683529383019391830191600101610f21565b50506001600160a01b039690961660408501525050506060015292915050565b634e487b7160e01b600052601160045260246000fd5b600060018201610f8e57610f8e610f66565b5060010190565b600060208284031215610fa757600080fd5b81518015158114610c1c57600080fd5b81810381811115610c1f57610c1f610f66565b634e487b7160e01b600052603160045260246000fd5b80820180821115610c1f57610c1f610f66565b8082028115828204841417610c1f57610c1f610f66565b60008261102757634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b818110156110595785810183015185820160400152820161103d565b506000604082860101526040601f19601f830116850101925050509291505056fea26469706673582212200663b1867fe610694514e33e5546b3f7fb138bb52d0b7be36843410394abed6664736f6c63430008110033a2646970667358221220c0c37762aead5f99bc58faea2849669aeeb6e8bd4e16ab8221601b779ed30faa64736f6c6343000811003360806040526b033b2e3c9fd0803ce8000000600b55610e10600c55670de0b6b3a7640000600d5534801561003257600080fd5b5060405161119b38038061119b833981016040819052610051916100a9565b600080546001600160a01b03199081163317909155600180546001600160a01b03948516908316179055600280549290931691161790556100dc565b80516001600160a01b03811681146100a457600080fd5b919050565b600080604083850312156100bc57600080fd5b6100c58361008d565b91506100d36020840161008d565b90509250929050565b6110b0806100eb6000396000f3fe60806040526004361061011f5760003560e01c8063d0e30db0116100a0578063f0fc6bca11610064578063f0fc6bca1461032e578063f7c618c114610343578063f887ea4014610363578063ffb2c47914610383578063ffd49c84146103a357600080fd5b8063d0e30db0146102ad578063d4fda1f2146102b5578063e2d2e219146102e2578063ecd0c0c3146102f8578063efca2eed1461031857600080fd5b80634fab0ae8116100e75780634fab0ae8146101c557806366817df5146101db578063997664d714610208578063ab377daa1461021e578063ce7c2ac21461025657600080fd5b806311ce023d1461012457806314b6ca961461014d57806328fd31981461016f5780632d48e8961461018f5780633a98ef39146101af575b600080fd5b34801561013057600080fd5b5061013a600b5481565b6040519081526020015b60405180910390f35b34801561015957600080fd5b5061016d610168366004610e2c565b6103b9565b005b34801561017b57600080fd5b5061013a61018a366004610e58565b610531565b34801561019b57600080fd5b5061016d6101aa366004610e75565b6105bc565b3480156101bb57600080fd5b5061013a60075481565b3480156101d157600080fd5b5061013a600d5481565b3480156101e757600080fd5b5061013a6101f6366004610e58565b60056020526000908152604090205481565b34801561021457600080fd5b5061013a60085481565b34801561022a57600080fd5b5061023e610239366004610e97565b6105de565b6040516001600160a01b039091168152602001610144565b34801561026257600080fd5b50610292610271366004610e58565b60066020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610144565b61016d610608565b3480156102c157600080fd5b5061013a6102d0366004610e58565b60046020526000908152604090205481565b3480156102ee57600080fd5b5061013a600a5481565b34801561030457600080fd5b5060005461023e906001600160a01b031681565b34801561032457600080fd5b5061013a60095481565b34801561033a57600080fd5b5061016d610897565b34801561034f57600080fd5b5060015461023e906001600160a01b031681565b34801561036f57600080fd5b5060025461023e906001600160a01b031681565b34801561038f57600080fd5b5061016d61039e366004610e97565b6108a2565b3480156103af57600080fd5b5061013a600c5481565b6000546001600160a01b031633146103d057600080fd5b6001600160a01b038216600090815260066020526040902054156103f7576103f7826109a7565b60008111801561041d57506001600160a01b038216600090815260066020526040902054155b1561048357600380546001600160a01b0384166000818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191690911790556104b6565b801580156104a857506001600160a01b03821660009081526006602052604090205415155b156104b6576104b682610ac5565b6001600160a01b0382166000908152600660205260409020546007546104e79183916104e191610bda565b90610c25565b6007556001600160a01b038216600090815260066020526040902081905561050e81610c89565b6001600160a01b0390921660009081526006602052604090206001019190915550565b6001600160a01b038116600090815260066020526040812054810361055857506000919050565b6001600160a01b03821660009081526006602052604081205461057a90610c89565b6001600160a01b0384166000908152600660205260409020600101549091508082116105aa575060009392505050565b6105b48282610bda565b949350505050565b6000546001600160a01b031633146105d357600080fd5b600c91909155600d55565b600381815481106105ee57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461061f57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610668573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068c9190610eb0565b60408051600280825260608201835292935060009290916020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156106fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071f9190610ec9565b8160008151811061073257610732610ee6565b6001600160a01b039283166020918202929092010152600180548351921691839190811061076257610762610ee6565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de959034906107a890600090869030904290600401610efc565b6000604051808303818588803b1580156107c157600080fd5b505af11580156107d5573d6000803e3d6000fd5b50506001546040516370a0823160e01b81523060048201526000945061085593508692506001600160a01b03909116906370a0823190602401602060405180830381865afa15801561082b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084f9190610eb0565b90610bda565b6008549091506108659082610c25565b600855600754600b5461088f91610886916108809085610ca6565b90610d28565b600a5490610c25565b600a55505050565b6108a0336109a7565b565b6000546001600160a01b031633146108b957600080fd5b60035460008190036108c9575050565b6000805a905060005b84831080156108e057508381105b1561099f5783600e54106108f4576000600e555b6109266003600e548154811061090c5761090c610ee6565b6000918252602090912001546001600160a01b0316610d6a565b1561095d5761095d6003600e548154811061094357610943610ee6565b6000918252602090912001546001600160a01b03166109a7565b61097261096b5a8490610bda565b8490610c25565b92505a600e8054919350600061098783610f7c565b9190505550808061099790610f7c565b9150506108d2565b505050505b50565b6001600160a01b03811660009081526006602052604081205490036109c95750565b60006109d482610531565b90508015610ac1576009546109e99082610c25565b60095560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a639190610f95565b506001600160a01b03821660009081526005602090815260408083204290556006909152902060020154610a979082610c25565b6001600160a01b038316600090815260066020526040902060028101919091555461050e90610c89565b5050565b60038054610ad590600190610fb7565b81548110610ae557610ae5610ee6565b60009182526020808320909101546001600160a01b0384811684526004909252604090922054600380549290931692918110610b2357610b23610ee6565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260049182905260408120546003805491939291610b6f90600190610fb7565b81548110610b7f57610b7f610ee6565b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610bb557610bb5610fca565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610c1c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610daf565b90505b92915050565b600080610c328385610fe0565b905083811015610c1c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b6000610c1f600b54610880600a5485610ca690919063ffffffff16565b600082600003610cb857506000610c1f565b6000610cc48385610ff3565b905082610cd1858361100a565b14610c1c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c80565b6000610c1c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610de9565b600c546001600160a01b03821660009081526005602052604081205490914291610d949190610fe0565b108015610c1f5750600d54610da883610531565b1192915050565b60008184841115610dd35760405162461bcd60e51b8152600401610c80919061102c565b506000610de08486610fb7565b95945050505050565b60008183610e0a5760405162461bcd60e51b8152600401610c80919061102c565b506000610de0848661100a565b6001600160a01b03811681146109a457600080fd5b60008060408385031215610e3f57600080fd5b8235610e4a81610e17565b946020939093013593505050565b600060208284031215610e6a57600080fd5b8135610c1c81610e17565b60008060408385031215610e8857600080fd5b50508035926020909101359150565b600060208284031215610ea957600080fd5b5035919050565b600060208284031215610ec257600080fd5b5051919050565b600060208284031215610edb57600080fd5b8151610c1c81610e17565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610f465784516001600160a01b031683529383019391830191600101610f21565b50506001600160a01b039690961660408501525050506060015292915050565b634e487b7160e01b600052601160045260246000fd5b600060018201610f8e57610f8e610f66565b5060010190565b600060208284031215610fa757600080fd5b81518015158114610c1c57600080fd5b81810381811115610c1f57610c1f610f66565b634e487b7160e01b600052603160045260246000fd5b80820180821115610c1f57610c1f610f66565b8082028115828204841417610c1f57610c1f610f66565b60008261102757634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b818110156110595785810183015185820160400152820161103d565b506000604082860101526040601f19601f830116850101925050509291505056fea26469706673582212200663b1867fe610694514e33e5546b3f7fb138bb52d0b7be36843410394abed6664736f6c6343000811003300000000000000000000000077979e0e68242b768df2de711b339d61cd034a05
Deployed Bytecode
0x608060405260043610620002cf5760003560e01c806383ad79941162000177578063d128f70611620000d1578063e96fada21162000084578063e96fada214620008cc578063f0b37c0414620008ee578063f2fde38b1462000913578063f708a64f1462000938578063f887ea40146200095d578063fe9fbb80146200097f57600080fd5b8063d128f70614620007d9578063d51ed1c814620007f1578063d7c010321462000816578063dd62ed3e146200083b578063df20fd491462000885578063e3bdfca514620008aa57600080fd5b8063a8aa1b31116200012a578063a8aa1b311462000711578063a9059cbb1462000733578063ac76271c1462000758578063b6a5d7de1462000770578063bb48bb3f1462000795578063ca33e64c14620007b757600080fd5b806383ad7994146200065d57806386f6c3c1146200067557806395d89b41146200069a57806398118cb414620006b25780639d1944f514620006ca578063a3a94f1914620006ef57600080fd5b8063340ac20f11620002295780636b67c4df11620001dc5780636b67c4df146200057a5780636ddd1713146200059257806370a0823114620005ae578063747c722f14620005e857806376a90231146200062357806378aa08ed146200064557600080fd5b8063340ac20f146200048b5780633f4218e014620004b05780634355855a14620004e4578063571ac8b0146200051857806360e71962146200053d578063658d4b7f146200055557600080fd5b80631df4ccfc11620002825780631df4ccfc14620003b857806323b872dd14620003d05780632b112e4914620003f55780632d48e896146200040d5780632f54bf6e1462000434578063313ce567146200046757600080fd5b80630445b66714620002dc57806306fdde031462000307578063095ea7b3146200032e5780631161ae391462000364578063180b0d7e146200038957806318160ddd14620003a157600080fd5b36620002d757005b600080fd5b348015620002e957600080fd5b50620002f460195481565b6040519081526020015b60405180910390f35b3480156200031457600080fd5b506200031f620009a4565b604051620002fe919062002286565b3480156200033b57600080fd5b50620003536200034d366004620022ef565b62000a3e565b6040519015158152602001620002fe565b3480156200037157600080fd5b5062000353620003833660046200231e565b62000aac565b3480156200039657600080fd5b50620002f460145481565b348015620003ae57600080fd5b50600554620002f4565b348015620003c557600080fd5b50620002f460135481565b348015620003dd57600080fd5b5062000353620003ef36600462002341565b62000ac2565b3480156200040257600080fd5b50620002f462000b8b565b3480156200041a57600080fd5b50620004326200042c3660046200231e565b62000c00565b005b3480156200044157600080fd5b50620003536200045336600462002387565b6000546001600160a01b0391821691161490565b3480156200047457600080fd5b5060045460405160ff9091168152602001620002fe565b3480156200049857600080fd5b5062000432620004aa36600462002387565b62000d06565b348015620004bd57600080fd5b5062000353620004cf36600462002387565b601c6020526000908152604090205460ff1681565b348015620004f157600080fd5b50620003536200050336600462002387565b601d6020526000908152604090205460ff1681565b3480156200052557600080fd5b50620003536200053736600462002387565b62000fe2565b3480156200054a57600080fd5b50620002f460175481565b3480156200056257600080fd5b506200043262000574366004620023bd565b62000ff2565b3480156200058757600080fd5b50620002f460115481565b3480156200059f57600080fd5b50601854620003539060ff1681565b348015620005bb57600080fd5b50620002f4620005cd36600462002387565b6001600160a01b03166000908152601a602052604090205490565b348015620005f557600080fd5b506016546200060a906001600160a01b031681565b6040516001600160a01b039091168152602001620002fe565b3480156200063057600080fd5b506009546200060a906001600160a01b031681565b3480156200065257600080fd5b50620002f460125481565b3480156200066a57600080fd5b50620002f460105481565b3480156200068257600080fd5b506200043262000694366004620023f7565b62001047565b348015620006a757600080fd5b506200031f620010c7565b348015620006bf57600080fd5b50620002f4600d5481565b348015620006d757600080fd5b5062000432620006e93660046200243b565b620010d8565b348015620006fc57600080fd5b506008546200060a906001600160a01b031681565b3480156200071e57600080fd5b506007546200060a906001600160a01b031681565b3480156200074057600080fd5b506200035362000752366004620022ef565b6200115b565b3480156200076557600080fd5b50620002f4600e5481565b3480156200077d57600080fd5b50620004326200078f36600462002387565b6200116a565b348015620007a257600080fd5b50600c546200060a906001600160a01b031681565b348015620007c457600080fd5b50600a546200060a906001600160a01b031681565b348015620007e657600080fd5b50620002f4600f5481565b348015620007fe57600080fd5b50620002f4620008103660046200243b565b620011be565b3480156200082357600080fd5b50620004326200083536600462002455565b6200120a565b3480156200084857600080fd5b50620002f46200085a366004620024a7565b6001600160a01b039182166000908152601b6020908152604080832093909416825291909152205490565b3480156200089257600080fd5b5062000432620008a4366004620024e5565b62001273565b348015620008b757600080fd5b506015546200060a906001600160a01b031681565b348015620008d957600080fd5b50600b546200060a906001600160a01b031681565b348015620008fb57600080fd5b50620004326200090d36600462002387565b620012b4565b3480156200092057600080fd5b50620004326200093236600462002387565b62001302565b3480156200094557600080fd5b506200043262000957366004620023bd565b6200139b565b3480156200096a57600080fd5b506006546200060a906001600160a01b031681565b3480156200098c57600080fd5b50620003536200099e36600462002387565b62001589565b606060028054620009b59062002504565b80601f0160208091040260200160405190810160405280929190818152602001828054620009e39062002504565b801562000a345780601f1062000a085761010080835404028352916020019162000a34565b820191906000526020600020905b81548152906001019060200180831162000a1657829003601f168201915b5050505050905090565b336000818152601b602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259062000a9a9086815260200190565b60405180910390a35060015b92915050565b60008262000aba83620011be565b119392505050565b6005546001600160a01b0384166000908152601b6020908152604080832033845290915281205490911462000b74576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152601b8252838120338252909152919091205462000b4f918490620015a7565b6001600160a01b0385166000908152601b602090815260408083203384529091529020555b62000b81848484620015e6565b90505b9392505050565b601a6020527fb75ecc04ed35f89790e98640e901bda41eceff0cb896cf2765fb6976802537505461dead60009081527f428bdc965569ef4717764ecfd84e88946a9a226b52b813e6ab6a7f46aad86e8854600554919262000bfb92909162000bf4919062001a29565b9062001a29565b905090565b62000c0b3362001589565b62000c335760405162461bcd60e51b815260040162000c2a9062002540565b60405180910390fd5b6015546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e89690604401600060405180830381600087803b15801562000c8157600080fd5b505af115801562000c96573d6000803e3d6000fd5b50506016546040516316a4744b60e11b815260048101869052602481018590526001600160a01b039091169250632d48e89691506044015b600060405180830381600087803b15801562000ce957600080fd5b505af115801562000cfe573d6000803e3d6000fd5b505050505050565b62000d113362001589565b62000d305760405162461bcd60e51b815260040162000c2a9062002540565b600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000d8a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000db0919062002565565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000e13573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e39919062002565565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000e87573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ead919062002565565b600780546001600160a01b0319166001600160a01b03928316179055600954604051911690829062000edf9062002278565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000f13573d6000803e3d6000fd5b50601580546001600160a01b0319166001600160a01b03928316179055600854604051911690829062000f469062002278565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000f7a573d6000803e3d6000fd5b50601680546001600160a01b0319166001600160a01b039283161790556007805482166000908152601d60209081526040808320805460ff19166001179055600554308452601b83528184206006548716855290925280832082905592549093168152205550565b600062000aa68260055462000a3e565b62000ffd3362001589565b6200101c5760405162461bcd60e51b815260040162000c2a9062002540565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b620010523362001589565b620010715760405162461bcd60e51b815260040162000c2a9062002540565b600d8690556012859055600e849055600f8390556200109183856200259b565b601081905560118390556014829055620010bc908390620010b590818a8a62001a6d565b9062001a6d565b601355505050505050565b606060038054620009b59062002504565b620010e33362001589565b620011025760405162461bcd60e51b815260040162000c2a9062002540565b620b71b08110620011565760405162461bcd60e51b815260206004820152601d60248201527f476173206d757374206265206c6f776572207468616e20373530303030000000604482015260640162000c2a565b601755565b600062000b84338484620015e6565b6000546001600160a01b03163314620011975760405162461bcd60e51b815260040162000c2a90620025b1565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b600062000aa6620011ce62000b8b565b6007546001600160a01b03166000908152601a60205260409020546200120390620011fb90600262001ad0565b859062001ad0565b9062001b5a565b620012153362001589565b620012345760405162461bcd60e51b815260040162000c2a9062002540565b600a80546001600160a01b039485166001600160a01b031991821617909155600b805493851693821693909317909255600c8054919093169116179055565b6200127e3362001589565b6200129d5760405162461bcd60e51b815260040162000c2a9062002540565b6018805460ff191692151592909217909155601955565b6000546001600160a01b03163314620012e15760405162461bcd60e51b815260040162000c2a90620025b1565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146200132f5760405162461bcd60e51b815260040162000c2a90620025b1565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b620013a63362001589565b620013c55760405162461bcd60e51b815260040162000c2a9062002540565b6001600160a01b0382163014801590620013ed57506007546001600160a01b03838116911614155b620013f757600080fd5b6001600160a01b0382166000908152601d60205260409020805460ff19168215801591909117909155620014c757601554604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401600060405180830381600087803b1580156200147457600080fd5b505af115801562001489573d6000803e3d6000fd5b5050601654604051630a5b654b60e11b81526001600160a01b0386811660048301526000602483015290911692506314b6ca96915060440162000cce565b6015546001600160a01b038381166000818152601a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156200152657600080fd5b505af11580156200153b573d6000803e3d6000fd5b50506016546001600160a01b038581166000818152601a602052604090819020549051630a5b654b60e11b815260048101929092526024820152911692506314b6ca96915060440162000cce565b6001600160a01b031660009081526001602052604090205460ff1690565b60008184841115620015ce5760405162461bcd60e51b815260040162000c2a919062002286565b506000620015dd8486620025d1565b95945050505050565b601e5460009060ff16156200160a576200160284848462001b9e565b905062000b84565b6200161462001c89565b1562001624576200162462001cdb565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152601a909152919091205462001678918490620015a7565b6001600160a01b0385166000908152601a6020908152604080832093909355601c90529081205460ff1615620016af5782620016bb565b620016bb858462002197565b6001600160a01b0385166000908152601a6020526040902054909150620016e3908262001a6d565b6001600160a01b038086166000908152601a60209081526040808320949094559188168152601d909152205460ff16620017fc576015546001600160a01b038681166000818152601a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156200177657600080fd5b505af192505050801562001788575060015b506016546001600160a01b038681166000818152601a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015620017e857600080fd5b505af1925050508015620017fa575060015b505b6001600160a01b0384166000908152601d602052604090205460ff1662001902576015546001600160a01b038581166000818152601a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156200187c57600080fd5b505af19250505080156200188e575060015b506016546001600160a01b038581166000818152601a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015620018ee57600080fd5b505af192505050801562001900575060015b505b6015546017546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916200193b9160040190815260200190565b600060405180830381600087803b1580156200195657600080fd5b505af192505050801562001968575060015b506016546017546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991620019a29160040190815260200190565b600060405180830381600087803b158015620019bd57600080fd5b505af1925050508015620019cf575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162001a1691815260200190565b60405180910390a3506001949350505050565b600062000b8483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250620015a7565b60008062001a7c83856200259b565b90508381101562000b845760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000c2a565b60008260000362001ae45750600062000aa6565b600062001af28385620025e7565b90508262001b01858362002601565b1462000b845760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840162000c2a565b600062000b8483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062002245565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152601a9091529182205462001bf1918490620015a7565b6001600160a01b038086166000908152601a6020526040808220939093559085168152205462001c22908362001a6d565b6001600160a01b038085166000818152601a602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9062001c779086815260200190565b60405180910390a35060019392505050565b6007546000906001600160a01b0316331480159062001cab5750601e5460ff16155b801562001cba575060185460ff165b801562000bfb575050601954306000908152601a6020526040902054101590565b601e805460ff19166001179055601354600d5460195460009262001d0b9260029262001203929183919062001ad0565b9050600062001d268260195462001a2990919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811062001d635762001d6362002624565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801562001dbd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001de3919062002565565b8160018151811062001df95762001df962002624565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b81524792919091169063791ac9479062001e459086906000908790309042906004016200263a565b600060405180830381600087803b15801562001e6057600080fd5b505af115801562001e75573d6000803e3d6000fd5b50505050600062001e90824762001a2990919063ffffffff16565b9050600062001eba62001eb06002600d5462001b5a90919063ffffffff16565b6013549062001a29565b9050600062001ee06002620012038462001203600d548862001ad090919063ffffffff16565b9050600062001f008362001203600e548762001ad090919063ffffffff16565b9050600062001f208462001203600f548862001ad090919063ffffffff16565b9050600062001f4085620012036011548962001ad090919063ffffffff16565b9050600062001f6086620012036012548a62001ad090919063ffffffff16565b9050601560009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801562001fb357600080fd5b505af19350505050801562001fc6575060015b50601660009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156200201857600080fd5b505af1935050505080156200202b575060015b50600b546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801562002067573d6000803e3d6000fd5b50600c546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015620020a3573d6000803e3d6000fd5b508a156200218057600654600a5460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af11580156200211c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620021439190620026ad565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601e805460ff19169055505050505050505050565b600080620021b8601454620012036013548662001ad090919063ffffffff16565b306000908152601a6020526040902054909150620021d7908262001a6d565b306000818152601a6020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620022299085815260200190565b60405180910390a36200223d838262001a29565b949350505050565b60008183620022695760405162461bcd60e51b815260040162000c2a919062002286565b506000620015dd848662002601565b61119b80620026dd83390190565b600060208083528351808285015260005b81811015620022b55785810183015185820160400152820162002297565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114620022ec57600080fd5b50565b600080604083850312156200230357600080fd5b82356200231081620022d6565b946020939093013593505050565b600080604083850312156200233257600080fd5b50508035926020909101359150565b6000806000606084860312156200235757600080fd5b83356200236481620022d6565b925060208401356200237681620022d6565b929592945050506040919091013590565b6000602082840312156200239a57600080fd5b813562000b8481620022d6565b80358015158114620023b857600080fd5b919050565b60008060408385031215620023d157600080fd5b8235620023de81620022d6565b9150620023ee60208401620023a7565b90509250929050565b60008060008060008060c087890312156200241157600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000602082840312156200244e57600080fd5b5035919050565b6000806000606084860312156200246b57600080fd5b83356200247881620022d6565b925060208401356200248a81620022d6565b915060408401356200249c81620022d6565b809150509250925092565b60008060408385031215620024bb57600080fd5b8235620024c881620022d6565b91506020830135620024da81620022d6565b809150509250929050565b60008060408385031215620024f957600080fd5b6200231083620023a7565b600181811c908216806200251957607f821691505b6020821081036200253a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b6000602082840312156200257857600080fd5b815162000b8481620022d6565b634e487b7160e01b600052601160045260246000fd5b8082018082111562000aa65762000aa662002585565b60208082526006908201526510a7aba722a960d11b604082015260600190565b8181038181111562000aa65762000aa662002585565b808202811582820484141762000aa65762000aa662002585565b6000826200261f57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156200268c5784516001600160a01b03168352938301939183019160010162002665565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215620026c357600080fd5b835192506020840151915060408401519050925092509256fe60806040526b033b2e3c9fd0803ce8000000600b55610e10600c55670de0b6b3a7640000600d5534801561003257600080fd5b5060405161119b38038061119b833981016040819052610051916100a9565b600080546001600160a01b03199081163317909155600180546001600160a01b03948516908316179055600280549290931691161790556100dc565b80516001600160a01b03811681146100a457600080fd5b919050565b600080604083850312156100bc57600080fd5b6100c58361008d565b91506100d36020840161008d565b90509250929050565b6110b0806100eb6000396000f3fe60806040526004361061011f5760003560e01c8063d0e30db0116100a0578063f0fc6bca11610064578063f0fc6bca1461032e578063f7c618c114610343578063f887ea4014610363578063ffb2c47914610383578063ffd49c84146103a357600080fd5b8063d0e30db0146102ad578063d4fda1f2146102b5578063e2d2e219146102e2578063ecd0c0c3146102f8578063efca2eed1461031857600080fd5b80634fab0ae8116100e75780634fab0ae8146101c557806366817df5146101db578063997664d714610208578063ab377daa1461021e578063ce7c2ac21461025657600080fd5b806311ce023d1461012457806314b6ca961461014d57806328fd31981461016f5780632d48e8961461018f5780633a98ef39146101af575b600080fd5b34801561013057600080fd5b5061013a600b5481565b6040519081526020015b60405180910390f35b34801561015957600080fd5b5061016d610168366004610e2c565b6103b9565b005b34801561017b57600080fd5b5061013a61018a366004610e58565b610531565b34801561019b57600080fd5b5061016d6101aa366004610e75565b6105bc565b3480156101bb57600080fd5b5061013a60075481565b3480156101d157600080fd5b5061013a600d5481565b3480156101e757600080fd5b5061013a6101f6366004610e58565b60056020526000908152604090205481565b34801561021457600080fd5b5061013a60085481565b34801561022a57600080fd5b5061023e610239366004610e97565b6105de565b6040516001600160a01b039091168152602001610144565b34801561026257600080fd5b50610292610271366004610e58565b60066020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610144565b61016d610608565b3480156102c157600080fd5b5061013a6102d0366004610e58565b60046020526000908152604090205481565b3480156102ee57600080fd5b5061013a600a5481565b34801561030457600080fd5b5060005461023e906001600160a01b031681565b34801561032457600080fd5b5061013a60095481565b34801561033a57600080fd5b5061016d610897565b34801561034f57600080fd5b5060015461023e906001600160a01b031681565b34801561036f57600080fd5b5060025461023e906001600160a01b031681565b34801561038f57600080fd5b5061016d61039e366004610e97565b6108a2565b3480156103af57600080fd5b5061013a600c5481565b6000546001600160a01b031633146103d057600080fd5b6001600160a01b038216600090815260066020526040902054156103f7576103f7826109a7565b60008111801561041d57506001600160a01b038216600090815260066020526040902054155b1561048357600380546001600160a01b0384166000818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191690911790556104b6565b801580156104a857506001600160a01b03821660009081526006602052604090205415155b156104b6576104b682610ac5565b6001600160a01b0382166000908152600660205260409020546007546104e79183916104e191610bda565b90610c25565b6007556001600160a01b038216600090815260066020526040902081905561050e81610c89565b6001600160a01b0390921660009081526006602052604090206001019190915550565b6001600160a01b038116600090815260066020526040812054810361055857506000919050565b6001600160a01b03821660009081526006602052604081205461057a90610c89565b6001600160a01b0384166000908152600660205260409020600101549091508082116105aa575060009392505050565b6105b48282610bda565b949350505050565b6000546001600160a01b031633146105d357600080fd5b600c91909155600d55565b600381815481106105ee57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461061f57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610668573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068c9190610eb0565b60408051600280825260608201835292935060009290916020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156106fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071f9190610ec9565b8160008151811061073257610732610ee6565b6001600160a01b039283166020918202929092010152600180548351921691839190811061076257610762610ee6565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de959034906107a890600090869030904290600401610efc565b6000604051808303818588803b1580156107c157600080fd5b505af11580156107d5573d6000803e3d6000fd5b50506001546040516370a0823160e01b81523060048201526000945061085593508692506001600160a01b03909116906370a0823190602401602060405180830381865afa15801561082b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084f9190610eb0565b90610bda565b6008549091506108659082610c25565b600855600754600b5461088f91610886916108809085610ca6565b90610d28565b600a5490610c25565b600a55505050565b6108a0336109a7565b565b6000546001600160a01b031633146108b957600080fd5b60035460008190036108c9575050565b6000805a905060005b84831080156108e057508381105b1561099f5783600e54106108f4576000600e555b6109266003600e548154811061090c5761090c610ee6565b6000918252602090912001546001600160a01b0316610d6a565b1561095d5761095d6003600e548154811061094357610943610ee6565b6000918252602090912001546001600160a01b03166109a7565b61097261096b5a8490610bda565b8490610c25565b92505a600e8054919350600061098783610f7c565b9190505550808061099790610f7c565b9150506108d2565b505050505b50565b6001600160a01b03811660009081526006602052604081205490036109c95750565b60006109d482610531565b90508015610ac1576009546109e99082610c25565b60095560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a639190610f95565b506001600160a01b03821660009081526005602090815260408083204290556006909152902060020154610a979082610c25565b6001600160a01b038316600090815260066020526040902060028101919091555461050e90610c89565b5050565b60038054610ad590600190610fb7565b81548110610ae557610ae5610ee6565b60009182526020808320909101546001600160a01b0384811684526004909252604090922054600380549290931692918110610b2357610b23610ee6565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260049182905260408120546003805491939291610b6f90600190610fb7565b81548110610b7f57610b7f610ee6565b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610bb557610bb5610fca565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610c1c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610daf565b90505b92915050565b600080610c328385610fe0565b905083811015610c1c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b6000610c1f600b54610880600a5485610ca690919063ffffffff16565b600082600003610cb857506000610c1f565b6000610cc48385610ff3565b905082610cd1858361100a565b14610c1c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c80565b6000610c1c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610de9565b600c546001600160a01b03821660009081526005602052604081205490914291610d949190610fe0565b108015610c1f5750600d54610da883610531565b1192915050565b60008184841115610dd35760405162461bcd60e51b8152600401610c80919061102c565b506000610de08486610fb7565b95945050505050565b60008183610e0a5760405162461bcd60e51b8152600401610c80919061102c565b506000610de0848661100a565b6001600160a01b03811681146109a457600080fd5b60008060408385031215610e3f57600080fd5b8235610e4a81610e17565b946020939093013593505050565b600060208284031215610e6a57600080fd5b8135610c1c81610e17565b60008060408385031215610e8857600080fd5b50508035926020909101359150565b600060208284031215610ea957600080fd5b5035919050565b600060208284031215610ec257600080fd5b5051919050565b600060208284031215610edb57600080fd5b8151610c1c81610e17565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610f465784516001600160a01b031683529383019391830191600101610f21565b50506001600160a01b039690961660408501525050506060015292915050565b634e487b7160e01b600052601160045260246000fd5b600060018201610f8e57610f8e610f66565b5060010190565b600060208284031215610fa757600080fd5b81518015158114610c1c57600080fd5b81810381811115610c1f57610c1f610f66565b634e487b7160e01b600052603160045260246000fd5b80820180821115610c1f57610c1f610f66565b8082028115828204841417610c1f57610c1f610f66565b60008261102757634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b818110156110595785810183015185820160400152820161103d565b506000604082860101526040601f19601f830116850101925050509291505056fea26469706673582212200663b1867fe610694514e33e5546b3f7fb138bb52d0b7be36843410394abed6664736f6c63430008110033a2646970667358221220c0c37762aead5f99bc58faea2849669aeeb6e8bd4e16ab8221601b779ed30faa64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000077979e0e68242b768df2de711b339d61cd034a05
-----Decoded View---------------
Arg [0] : router_ (address): 0x77979e0e68242b768df2de711b339d61cd034a05
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000077979e0e68242b768df2de711b339d61cd034a05
Deployed ByteCode Sourcemap
29233:12091:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30701:51;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;30701:51:0;;;;;;;;32366:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;32750:216::-;;;;;;;;;;-1:-1:-1;32750:216:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;32750:216:0;1205:187:1;41169:150:0;;;;;;;;;;-1:-1:-1;41169:150:0;;;;;:::i;:::-;;:::i;30458:37::-;;;;;;;;;;;;;;;;32048:102;;;;;;;;;;-1:-1:-1;32130:12:0;;32048:102;;30414:30;;;;;;;;;;;;;;;;33263:383;;;;;;;;;;-1:-1:-1;33263:383:0;;;;;:::i;:::-;;:::i;40844:142::-;;;;;;;;;;;;;:::i;40388:271::-;;;;;;;;;;-1:-1:-1;40388:271:0;;;;;:::i;:::-;;:::i;:::-;;14615:103;;;;;;;;;;-1:-1:-1;14615:103:0;;;;;:::i;:::-;14670:4;14705:5;-1:-1:-1;;;;;14694:16:0;;;14705:5;;14694:16;;14615:103;32158:94;;;;;;;;;;-1:-1:-1;32235:9:0;;32158:94;;32235:9;;;;2505:36:1;;2493:2;2478:18;32158:94:0;2363:184:1;39676:540:0;;;;;;;;;;-1:-1:-1;39676:540:0;;;;;:::i;:::-;;:::i;30897:43::-;;;;;;;;;;-1:-1:-1;30897:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;30947:48;;;;;;;;;;-1:-1:-1;30947:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;32974:117;;;;;;;;;;-1:-1:-1;32974:117:0;;;;;:::i;:::-;;:::i;30617:38::-;;;;;;;;;;;;;;;;38526:120;;;;;;;;;;-1:-1:-1;38526:120:0;;;;;:::i;:::-;;:::i;30324:33::-;;;;;;;;;;;;;;;;30664:30;;;;;;;;;;-1:-1:-1;30664:30:0;;;;;;;;32468:119;;;;;;;;;;-1:-1:-1;32468:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;32561:18:0;32534:7;32561:18;;;:9;:18;;;;;;;32468:119;30562:46;;;;;;;;;;-1:-1:-1;30562:46:0;;;;-1:-1:-1;;;;;30562:46:0;;;;;;-1:-1:-1;;;;;3229:32:1;;;3211:51;;3199:2;3184:18;30562:46:0;3037:231:1;29764:71:0;;;;;;;;;;-1:-1:-1;29764:71:0;;;;-1:-1:-1;;;;;29764:71:0;;;30370:31;;;;;;;;;;;;;;;;30245:72;;;;;;;;;;;;;;;;38654:680;;;;;;;;;;-1:-1:-1;38654:680:0;;;;;:::i;:::-;;:::i;32260:98::-;;;;;;;;;;;;;:::i;30093:33::-;;;;;;;;;;;;;;;;40667:169;;;;;;;;;;-1:-1:-1;40667:169:0;;;;;:::i;:::-;;:::i;29682:75::-;;;;;;;;;;-1:-1:-1;29682:75:0;;;;-1:-1:-1;;;;;29682:75:0;;;29656:19;;;;;;;;;;-1:-1:-1;29656:19:0;;;;-1:-1:-1;;;;;29656:19:0;;;33099:156;;;;;;;;;;-1:-1:-1;33099:156:0;;;;;:::i;:::-;;:::i;30139:38::-;;;;;;;;;;;;;;;;14288:94;;;;;;;;;;-1:-1:-1;14288:94:0;;;;;:::i;:::-;;:::i;29989:95::-;;;;;;;;;;-1:-1:-1;29989:95:0;;;;-1:-1:-1;;;;;29989:95:0;;;29842:36;;;;;;;;;;-1:-1:-1;29842:36:0;;;;-1:-1:-1;;;;;29842:36:0;;;30190:42;;;;;;;;;;;;;;;;40994:167;;;;;;;;;;-1:-1:-1;40994:167:0;;;;;:::i;:::-;;:::i;39342:326::-;;;;;;;;;;-1:-1:-1;39342:326:0;;;;;:::i;:::-;;:::i;32595:147::-;;;;;;;;;;-1:-1:-1;32595:147:0;;;;;:::i;:::-;-1:-1:-1;;;;;32706:19:0;;;32679:7;32706:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;32595:147;40224:156;;;;;;;;;;-1:-1:-1;40224:156:0;;;;;:::i;:::-;;:::i;30513:42::-;;;;;;;;;;-1:-1:-1;30513:42:0;;;;-1:-1:-1;;;;;30513:42:0;;;29885:97;;;;;;;;;;-1:-1:-1;29885:97:0;;;;-1:-1:-1;;;;;29885:97:0;;;14458;;;;;;;;;;-1:-1:-1;14458:97:0;;;;;:::i;:::-;;:::i;15015:173::-;;;;;;;;;;-1:-1:-1;15015:173:0;;;;;:::i;:::-;;:::i;38035:483::-;;;;;;;;;;-1:-1:-1;38035:483:0;;;;;:::i;:::-;;:::i;29619:30::-;;;;;;;;;;-1:-1:-1;29619:30:0;;;;-1:-1:-1;;;;;29619:30:0;;;14789:107;;;;;;;;;;-1:-1:-1;14789:107:0;;;;;:::i;:::-;;:::i;32366:94::-;32414:13;32447:5;32440:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32366:94;:::o;32750:216::-;32854:10;32825:4;32842:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;32842:32:0;;;;;;;;;;:41;;;32899:37;32825:4;;32842:32;;32899:37;;;;32877:6;160:25:1;;148:2;133:18;;14:177;32899:37:0;;;;;;;;-1:-1:-1;32954:4:0;32750:216;;;;;:::o;41169:150::-;41249:4;41305:6;41273:29;41293:8;41273:19;:29::i;:::-;:38;;41169:150;-1:-1:-1;;;41169:150:0:o;33263:383::-;33419:12;;-1:-1:-1;;;;;33384:19:0;;33363:4;33384:19;;;:11;:19;;;;;;;;33404:10;33384:31;;;;;;;;33363:4;;33384:47;33380:201;;33482:87;;;;;;;;;;;-1:-1:-1;;;33482:87:0;;;;;;;;-1:-1:-1;;;;;33482:19:0;;-1:-1:-1;33482:19:0;;;:11;:19;;;;;33502:10;33482:31;;;;;;;;;;:87;;33536:6;;33482:53;:87::i;:::-;-1:-1:-1;;;;;33448:19:0;;;;;;:11;:19;;;;;;;;33468:10;33448:31;;;;;;;:121;33380:201;33598:40;33612:6;33620:9;33631:6;33598:13;:40::i;:::-;33591:47;;33263:383;;;;;;:::o;40844:142::-;32561:9;:18;;;;29351:6;40897:7;32561:18;;;;;40924:12;;40897:7;;40924:54;;32561:18;;40924:33;;:12;:16;:33::i;:::-;:37;;:54::i;:::-;40917:61;;40844:142;:::o;40388:271::-;14164:24;14177:10;14164:12;:24::i;:::-;14156:48;;;;-1:-1:-1;;;14156:48:0;;;;;;;:::i;:::-;;;;;;;;;40498:15:::1;::::0;:69:::1;::::0;-1:-1:-1;;;40498:69:0;;::::1;::::0;::::1;6990:25:1::0;;;7031:18;;;7024:34;;;-1:-1:-1;;;;;40498:15:0;;::::1;::::0;:39:::1;::::0;6963:18:1;;40498:69:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;40578:19:0::1;::::0;:73:::1;::::0;-1:-1:-1;;;40578:73:0;;::::1;::::0;::::1;6990:25:1::0;;;7031:18;;;7024:34;;;-1:-1:-1;;;;;40578:19:0;;::::1;::::0;-1:-1:-1;40578:43:0::1;::::0;-1:-1:-1;6963:18:1;;40578:73:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;40388:271:::0;;:::o;39676:540::-;14164:24;14177:10;14164:12;:24::i;:::-;14156:48;;;;-1:-1:-1;;;14156:48:0;;;;;;;:::i;:::-;39746:6:::1;:34:::0;;-1:-1:-1;;;;;;39746:34:0::1;-1:-1:-1::0;;;;;39746:34:0;::::1;::::0;;::::1;::::0;;;39814:16:::1;::::0;;-1:-1:-1;;;39814:16:0;;;;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;39746:34;39814:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;39798:44:0::1;;39851:4;39858:6;;;;;;;;;-1:-1:-1::0;;;;;39858:6:0::1;-1:-1:-1::0;;;;;39858:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39798:74;::::0;-1:-1:-1;;;;;;39798:74:0::1;::::0;;;;;;-1:-1:-1;;;;;7555:15:1;;;39798:74:0::1;::::0;::::1;7537:34:1::0;7607:15;;7587:18;;;7580:43;7472:18;;39798:74:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39791:4;:81:::0;;-1:-1:-1;;;;;;39791:81:0::1;-1:-1:-1::0;;;;;39791:81:0;;::::1;;::::0;;39925:11:::1;::::0;39901:45:::1;::::0;39925:11;::::1;::::0;39938:7;;39901:45:::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;;;;;7555:15:1;;;7537:34;;7607:15;;7602:2;7587:18;;7580:43;7487:2;7472:18;39901:45:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;39883:15:0::1;:63:::0;;-1:-1:-1;;;;;;39883:63:0::1;-1:-1:-1::0;;;;;39883:63:0;;::::1;;::::0;;40003:15:::1;::::0;39979:49:::1;::::0;40003:15;::::1;::::0;40020:7;;39979:49:::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;;;;;7555:15:1;;;7537:34;;7607:15;;7602:2;7587:18;;7580:43;7487:2;7472:18;39979:49:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;39957:19:0::1;:71:::0;;-1:-1:-1;;;;;;39957:71:0::1;-1:-1:-1::0;;;;;39957:71:0;;::::1;;::::0;;40058:4:::1;::::0;;;::::1;-1:-1:-1::0;40041:22:0;;;:16:::1;:22;::::0;;;;;;;:29;;-1:-1:-1;;40041:29:0::1;-1:-1:-1::0;40041:29:0::1;::::0;;40129:12:::1;::::0;40103:4:::1;40083:26:::0;;:11:::1;:26:::0;;;;;40118:6:::1;::::0;;::::1;40083:43:::0;;;;;;;;:58;;;40187:4;;;;::::1;40152:41:::0;;;:56;-1:-1:-1;39676:540:0:o;32974:117::-;33029:4;33053:30;33061:7;33070:12;;33053:7;:30::i;38526:120::-;14164:24;14177:10;14164:12;:24::i;:::-;14156:48;;;;-1:-1:-1;;;14156:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38610:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;38610:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;38526:120::o;38654:680::-;14164:24;14177:10;14164:12;:24::i;:::-;14156:48;;;;-1:-1:-1;;;14156:48:0;;;;;;;:::i;:::-;38915:12:::1;:28:::0;;;38954:10:::1;:24:::0;;;38989:17:::1;:38:::0;;;39038:21:::1;:46:::0;;;39111:43:::1;39062:22:::0;39009:18;39111:43:::1;:::i;:::-;39095:13;:59:::0;;;39165:12:::1;:28:::0;;;39204:14:::1;:32:::0;;;39258:68:::1;::::0;39180:13;;39258:49:::1;::::0;;:13;39276:11;39258:17:::1;:30::i;:::-;:34:::0;::::1;:49::i;:68::-;39247:8;:79:::0;-1:-1:-1;;;;;;38654:680:0:o;32260:98::-;32310:13;32343:7;32336:14;;;;;:::i;40667:169::-;14164:24;14177:10;14164:12;:24::i;:::-;14156:48;;;;-1:-1:-1;;;14156:48:0;;;;;;;:::i;:::-;40757:6:::1;40751:3;:12;40743:54;;;::::0;-1:-1:-1;;;40743:54:0;;8098:2:1;40743:54:0::1;::::0;::::1;8080:21:1::0;8137:2;8117:18;;;8110:30;8176:31;8156:18;;;8149:59;8225:18;;40743:54:0::1;7896:353:1::0;40743:54:0::1;40808:14;:20:::0;40667:169::o;33099:156::-;33179:4;33203:44;33217:10;33229:9;33240:6;33203:13;:44::i;14288:94::-;14670:4;14705:5;-1:-1:-1;;;;;14705:5:0;13994:10;14694:16;13978:38;;;;-1:-1:-1;;;13978:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14348:19:0::1;;::::0;;;14370:4:::1;14348:19;::::0;;;;;;;:26;;-1:-1:-1;;14348:26:0::1;::::0;;::::1;::::0;;14288:94::o;40994:167::-;41062:7;41089:64;41130:22;:20;:22::i;:::-;41112:4;;-1:-1:-1;;;;;41112:4:0;32534:7;32561:18;;;:9;:18;;;;;;41089:36;;41102:22;;41122:1;41102:19;:22::i;:::-;41089:8;;:12;:36::i;:::-;:40;;:64::i;39342:326::-;14164:24;14177:10;14164:12;:24::i;:::-;14156:48;;;;-1:-1:-1;;;14156:48:0;;;;;;;:::i;:::-;39490:21:::1;:46:::0;;-1:-1:-1;;;;;39490:46:0;;::::1;-1:-1:-1::0;;;;;;39490:46:0;;::::1;;::::0;;;39547:20:::1;:53:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;39611:18:::1;:49:::0;;;;;::::1;::::0;::::1;;::::0;;39342:326::o;40224:156::-;14164:24;14177:10;14164:12;:24::i;:::-;14156:48;;;;-1:-1:-1;;;14156:48:0;;;;;;;:::i;:::-;40316:11:::1;:22:::0;;-1:-1:-1;;40316:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;40349:13:::1;:23:::0;40224:156::o;14458:97::-;14670:4;14705:5;-1:-1:-1;;;;;14705:5:0;13994:10;14694:16;13978:38;;;;-1:-1:-1;;;13978:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14520:19:0::1;14542:5;14520:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;14520:27:0::1;::::0;;14458:97::o;15015:173::-;14670:4;14705:5;-1:-1:-1;;;;;14705:5:0;13994:10;14694:16;13978:38;;;;-1:-1:-1;;;13978:38:0;;;;;;;:::i;:::-;15091:5:::1;:11:::0;;-1:-1:-1;;;;;;15091:11:0::1;-1:-1:-1::0;;;;;15091:11:0;::::1;::::0;;::::1;::::0;;15113:19;;;-1:-1:-1;15113:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;15113:26:0::1;::::0;;::::1;::::0;;;15155:25;;3211:51:1;;;15155:25:0::1;::::0;3184:18:1;15155:25:0::1;;;;;;;15015:173:::0;:::o;38035:483::-;14164:24;14177:10;14164:12;:24::i;:::-;14156:48;;;;-1:-1:-1;;;14156:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38132:23:0;::::1;38150:4;38132:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;38169:4:0::1;::::0;-1:-1:-1;;;;;38159:14:0;;::::1;38169:4:::0;::::1;38159:14;;38132:41;38124:50;;;::::0;::::1;;-1:-1:-1::0;;;;;38185:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;38185:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;38229:282:::1;;38256:15;::::0;:35:::1;::::0;-1:-1:-1;;;38256:35:0;;-1:-1:-1;;;;;9004:32:1;;;38256:35:0::1;::::0;::::1;8986:51:1::0;38256:15:0::1;9053:18:1::0;;;9046:34;38256:15:0;;::::1;::::0;:24:::1;::::0;8959:18:1;;38256:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;38306:19:0::1;::::0;:39:::1;::::0;-1:-1:-1;;;38306:39:0;;-1:-1:-1;;;;;9004:32:1;;;38306:39:0::1;::::0;::::1;8986:51:1::0;38306:19:0::1;9053:18:1::0;;;9046:34;38306:19:0;;::::1;::::0;-1:-1:-1;38306:28:0::1;::::0;-1:-1:-1;8959:18:1;;38306:39:0::1;8804:282:1::0;38229::0::1;38378:15;::::0;-1:-1:-1;;;;;38411:17:0;;::::1;38378:15;38411:17:::0;;;:9:::1;:17;::::0;;;;;;;38378:51;;-1:-1:-1;;;38378:51:0;;::::1;::::0;::::1;8986::1::0;;;;9053:18;;;9046:34;38378:15:0;::::1;::::0;:24:::1;::::0;8959:18:1;;38378:51:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;38444:19:0::1;::::0;-1:-1:-1;;;;;38481:17:0;;::::1;38444:19;38481:17:::0;;;:9:::1;:17;::::0;;;;;;;38444:55;;-1:-1:-1;;;38444:55:0;;::::1;::::0;::::1;8986:51:1::0;;;;9053:18;;;9046:34;38444:19:0;::::1;::::0;-1:-1:-1;38444:28:0::1;::::0;-1:-1:-1;8959:18:1;;38444:55:0::1;8804:282:1::0;14789:107:0;-1:-1:-1;;;;;14869:19:0;14845:4;14869:19;;;:14;:19;;;;;;;;;14789:107::o;3987:192::-;4073:7;4109:12;4101:6;;;;4093:29;;;;-1:-1:-1;;;4093:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4133:9:0;4145:5;4149:1;4145;:5;:::i;:::-;4133:17;3987:192;-1:-1:-1;;;;;3987:192:0:o;33654:1154::-;33767:6;;33746:4;;33767:6;;33763:65;;;33784:41;33799:6;33807:9;33818:6;33784:14;:41::i;:::-;33777:48;;;;33763:65;33842:16;:14;:16::i;:::-;33838:37;;;33862:10;:8;:10::i;:::-;33907:53;;;;;;;;;;;-1:-1:-1;;;33907:53:0;;;;;;;;-1:-1:-1;;;;;33907:17:0;;-1:-1:-1;33907:17:0;;;:9;:17;;;;;;;;:53;;33929:6;;33907:21;:53::i;:::-;-1:-1:-1;;;;;33887:17:0;;;;;;:9;:17;;;;;;;;:73;;;;35241:11;:19;;;;;;;;35240:20;33996:56;;34046:6;33996:56;;;34020:23;34028:6;34036;34020:7;:23::i;:::-;-1:-1:-1;;;;;34086:20:0;;;;;;:9;:20;;;;;;33971:81;;-1:-1:-1;34086:40:0;;33971:81;34086:24;:40::i;:::-;-1:-1:-1;;;;;34063:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;34144:24;;;;;:16;:24;;;;;;;34139:209;;34189:15;;-1:-1:-1;;;;;34222:17:0;;;34189:15;34222:17;;;:9;:17;;;;;;;;34189:51;;-1:-1:-1;;;34189:51:0;;;;;8986::1;;;;9053:18;;;9046:34;34189:15:0;;;:24;;8959:18:1;;34189:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34185:67;34270:19;;-1:-1:-1;;;;;34307:17:0;;;34270:19;34307:17;;;:9;:17;;;;;;;;34270:55;;-1:-1:-1;;;34270:55:0;;;;;8986:51:1;;;;9053:18;;;9046:34;34270:19:0;;;:28;;8959:18:1;;34270:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34266:71;;-1:-1:-1;;;;;34363:27:0;;;;;;:16;:27;;;;;;;;34358:224;;34411:15;;-1:-1:-1;;;;;34447:20:0;;;34411:15;34447:20;;;:9;:20;;;;;;;;34411:57;;-1:-1:-1;;;34411:57:0;;;;;8986:51:1;;;;9053:18;;;9046:34;34411:15:0;;;:24;;8959:18:1;;34411:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34407:73;34498:19;;-1:-1:-1;;;;;34538:20:0;;;34498:19;34538:20;;;:9;:20;;;;;;;;34498:61;;-1:-1:-1;;;34498:61:0;;;;;8986:51:1;;;;9053:18;;;9046:34;34498:19:0;;;:28;;8959:18:1;;34498:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34494:77;;34598:15;;34622:14;;34598:39;;-1:-1:-1;;;;;;34598:39:0;;-1:-1:-1;;;;;34598:15:0;;;;:23;;:39;;;;160:25:1;;;148:2;133:18;;14:177;34598:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34594:55;34663:19;;34691:14;;34663:43;;-1:-1:-1;;;;;;34663:43:0;;-1:-1:-1;;;;;34663:19:0;;;;:27;;:43;;;;160:25:1;;;148:2;133:18;;14:177;34663:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34659:59;34752:9;-1:-1:-1;;;;;34735:43:0;34744:6;-1:-1:-1;;;;;34735:43:0;;34763:14;34735:43;;;;160:25:1;;148:2;133:18;;14:177;34735:43:0;;;;;;;;-1:-1:-1;34796:4:0;;33654:1154;-1:-1:-1;;;;33654:1154:0:o;3548:136::-;3606:7;3633:43;3637:1;3640;3633:43;;;;;;;;;;;;;;;;;:3;:43::i;3084:181::-;3142:7;;3174:5;3178:1;3174;:5;:::i;:::-;3162:17;;3203:1;3198;:6;;3190:46;;;;-1:-1:-1;;;3190:46:0;;9705:2:1;3190:46:0;;;9687:21:1;9744:2;9724:18;;;9717:30;9783:29;9763:18;;;9756:57;9830:18;;3190:46:0;9503:351:1;4438:471:0;4496:7;4741:1;4746;4741:6;4737:47;;-1:-1:-1;4771:1:0;4764:8;;4737:47;4796:9;4808:5;4812:1;4808;:5;:::i;:::-;4796:17;-1:-1:-1;4841:1:0;4832:5;4836:1;4796:17;4832:5;:::i;:::-;:10;4824:56;;;;-1:-1:-1;;;4824:56:0;;10456:2:1;4824:56:0;;;10438:21:1;10495:2;10475:18;;;10468:30;10534:34;10514:18;;;10507:62;-1:-1:-1;;;10585:18:1;;;10578:31;10626:19;;4824:56:0;10254:397:1;5385:132:0;5443:7;5470:39;5474:1;5477;5470:39;;;;;;;;;;;;;;;;;:3;:39::i;34816:330::-;34946:53;;;;;;;;;;;-1:-1:-1;;;34946:53:0;;;;;;;;-1:-1:-1;;;;;34946:17:0;;34909:4;34946:17;;;:9;:17;;;;;;;:53;;34968:6;;34946:21;:53::i;:::-;-1:-1:-1;;;;;34926:17:0;;;;;;;:9;:17;;;;;;:73;;;;35033:20;;;;;;;:32;;35058:6;35033:24;:32::i;:::-;-1:-1:-1;;;;;35010:20:0;;;;;;;:9;:20;;;;;;;:55;;;;35081:35;;;;;;;;;;35109:6;160:25:1;;148:2;133:18;;14:177;35081:35:0;;;;;;;;-1:-1:-1;35134:4:0;34816:330;;;;;:::o;35617:222::-;35717:4;;35666;;-1:-1:-1;;;;;35717:4:0;35703:10;:18;;;;:42;;-1:-1:-1;35739:6:0;;;;35738:7;35703:42;:70;;;;-1:-1:-1;35762:11:0;;;;35703:70;:128;;;;-1:-1:-1;;35818:13:0;;35808:4;35790:24;;;;:9;:24;;;;;;:41;;;35617:222::o;35847:1865::-;31113:6;:13;;-1:-1:-1;;31113:13:0;31122:4;31113:13;;;35958:8:::1;::::0;35940:12:::1;::::0;35922:13:::1;::::0;31113:6;;35922:52:::1;::::0;35972:1:::1;::::0;35922:45:::1;::::0;35958:8;35922:45;;:13;:17:::1;:31::i;:52::-;35896:78;;35985:20;36008:34;36026:15;36008:13;;:17;;:34;;;;:::i;:::-;36079:16;::::0;;36093:1:::1;36079:16:::0;;;;;::::1;::::0;;35985:57;;-1:-1:-1;36055:21:0::1;::::0;36079:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;36079:16:0::1;36055:40;;36124:4;36106;36111:1;36106:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;36106:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;36150:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;36150:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;36106:7;;36150:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36140:4;36145:1;36140:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;36140:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;36230:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;36230:188:0;;36198:21:::1;::::0;36230:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;36302:12;;36174:21:::1;::::0;36345:4;;36372::::1;::::0;36392:15:::1;::::0;36230:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;36429:17;36449:40;36475:13;36449:21;:25;;:40;;;;:::i;:::-;36429:60;;36502:19;36524:33;36537:19;36554:1;36537:12;;:16;;:19;;;;:::i;:::-;36524:8;::::0;;:12:::1;:33::i;:::-;36502:55;;36570:26;36599:51;36648:1;36599:44;36631:11;36599:27;36613:12;;36599:9;:13;;:27;;;;:::i;:51::-;36570:80;;36661:31;36695:49;36732:11;36695:32;36709:17;;36695:9;:13;;:32;;;;:::i;:49::-;36661:83;;36755:35;36793:53;36834:11;36793:36;36807:21;;36793:9;:13;;:36;;;;:::i;:53::-;36755:91;;36857:26;36886:44;36918:11;36886:27;36900:12;;36886:9;:13;;:27;;;;:::i;:44::-;36857:73;;36941:24;36968:42;36998:11;36968:25;36982:10;;36968:9;:13;;:25;;;;:::i;:42::-;36941:69;;37027:15;;;;;;;;;-1:-1:-1::0;;;;;37027:15:0::1;-1:-1:-1::0;;;;;37027:23:0::1;;37059;37027:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;37023:75:::0;37112:19:::1;;;;;;;;;-1:-1:-1::0;;;;;37112:19:0::1;-1:-1:-1::0;;;;;37112:27:0::1;;37148;37112:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;37108:83:::0;37211:20:::1;::::0;37203:58:::1;::::0;-1:-1:-1;;;;;37211:20:0;;::::1;::::0;37203:58;::::1;;;::::0;37242:18;;37211:20:::1;37203:58:::0;37211:20;37203:58;37242:18;37211:20;37203:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;37280:18:0::1;::::0;37272:54:::1;::::0;-1:-1:-1;;;;;37280:18:0;;::::1;::::0;37272:54;::::1;;;::::0;37309:16;;37280:18:::1;37272:54:::0;37280:18;37272:54;37309:16;37280:18;37272:54;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;37343:19:0;;37339:366:::1;;37379:6;::::0;37555:21:::1;::::0;37379:246:::1;::::0;-1:-1:-1;;;37379:246:0;;37457:4:::1;37379:246;::::0;::::1;12246:34:1::0;12296:18;;;12289:34;;;37379:6:0::1;12339:18:1::0;;;12332:34;;;12382:18;;;12375:34;-1:-1:-1;;;;;37555:21:0;;::::1;12425:19:1::0;;;12418:44;37595:15:0::1;12478:19:1::0;;;12471:35;37379:6:0;::::1;::::0;:22:::1;::::0;37410:18;;12180:19:1;;37379:246:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;37645:48:0::1;::::0;;6990:25:1;;;7046:2;7031:18;;7024:34;;;37645:48:0::1;::::0;-1:-1:-1;6963:18:1;37645:48:0::1;;;;;;;37339:366;-1:-1:-1::0;;31149:6:0;:14;;-1:-1:-1;;31149:14:0;;;-1:-1:-1;;;;;;;;;35847:1865:0:o;35276:333::-;35343:7;35363:17;35383:40;35408:14;;35383:20;35394:8;;35383:6;:10;;:20;;;;:::i;:40::-;35481:4;35463:24;;;;:9;:24;;;;;;35363:60;;-1:-1:-1;35463:39:0;;35363:60;35463:28;:39::i;:::-;35454:4;35436:24;;;;:9;:24;;;;;;;:66;;;;35518:42;;-1:-1:-1;;;;;35518:42:0;;;;;;;35550:9;160:25:1;;148:2;133:18;;14:177;35518:42:0;;;;;;;;35580:21;:6;35591:9;35580:10;:21::i;:::-;35573:28;35276:333;-1:-1:-1;;;;35276:333:0:o;6013:278::-;6099:7;6134:12;6127:5;6119:28;;;;-1:-1:-1;;;6119:28:0;;;;;;;;:::i;:::-;-1:-1:-1;6158:9:0;6170:5;6174:1;6170;:5;:::i;-1:-1:-1:-;;;;;;;;:::o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;804:70;749:131;:::o;885:315::-;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:248::-;1465:6;1473;1526:2;1514:9;1505:7;1501:23;1497:32;1494:52;;;1542:1;1539;1532:12;1494:52;-1:-1:-1;;1565:23:1;;;1635:2;1620:18;;;1607:32;;-1:-1:-1;1397:248:1:o;1650:456::-;1727:6;1735;1743;1796:2;1784:9;1775:7;1771:23;1767:32;1764:52;;;1812:1;1809;1802:12;1764:52;1851:9;1838:23;1870:31;1895:5;1870:31;:::i;:::-;1920:5;-1:-1:-1;1977:2:1;1962:18;;1949:32;1990:33;1949:32;1990:33;:::i;:::-;1650:456;;2042:7;;-1:-1:-1;;;2096:2:1;2081:18;;;;2068:32;;1650:456::o;2111:247::-;2170:6;2223:2;2211:9;2202:7;2198:23;2194:32;2191:52;;;2239:1;2236;2229:12;2191:52;2278:9;2265:23;2297:31;2322:5;2297:31;:::i;2552:160::-;2617:20;;2673:13;;2666:21;2656:32;;2646:60;;2702:1;2699;2692:12;2646:60;2552:160;;;:::o;2717:315::-;2782:6;2790;2843:2;2831:9;2822:7;2818:23;2814:32;2811:52;;;2859:1;2856;2849:12;2811:52;2898:9;2885:23;2917:31;2942:5;2917:31;:::i;:::-;2967:5;-1:-1:-1;2991:35:1;3022:2;3007:18;;2991:35;:::i;:::-;2981:45;;2717:315;;;;;:::o;3481:523::-;3585:6;3593;3601;3609;3617;3625;3678:3;3666:9;3657:7;3653:23;3649:33;3646:53;;;3695:1;3692;3685:12;3646:53;-1:-1:-1;;3718:23:1;;;3788:2;3773:18;;3760:32;;-1:-1:-1;3839:2:1;3824:18;;3811:32;;3890:2;3875:18;;3862:32;;-1:-1:-1;3941:3:1;3926:19;;3913:33;;-1:-1:-1;3993:3:1;3978:19;3965:33;;-1:-1:-1;3481:523:1;-1:-1:-1;3481:523:1:o;4009:180::-;4068:6;4121:2;4109:9;4100:7;4096:23;4092:32;4089:52;;;4137:1;4134;4127:12;4089:52;-1:-1:-1;4160:23:1;;4009:180;-1:-1:-1;4009:180:1:o;4418:529::-;4495:6;4503;4511;4564:2;4552:9;4543:7;4539:23;4535:32;4532:52;;;4580:1;4577;4570:12;4532:52;4619:9;4606:23;4638:31;4663:5;4638:31;:::i;:::-;4688:5;-1:-1:-1;4745:2:1;4730:18;;4717:32;4758:33;4717:32;4758:33;:::i;:::-;4810:7;-1:-1:-1;4869:2:1;4854:18;;4841:32;4882:33;4841:32;4882:33;:::i;:::-;4934:7;4924:17;;;4418:529;;;;;:::o;4952:388::-;5020:6;5028;5081:2;5069:9;5060:7;5056:23;5052:32;5049:52;;;5097:1;5094;5087:12;5049:52;5136:9;5123:23;5155:31;5180:5;5155:31;:::i;:::-;5205:5;-1:-1:-1;5262:2:1;5247:18;;5234:32;5275:33;5234:32;5275:33;:::i;:::-;5327:7;5317:17;;;4952:388;;;;;:::o;5345:248::-;5410:6;5418;5471:2;5459:9;5450:7;5446:23;5442:32;5439:52;;;5487:1;5484;5477:12;5439:52;5510:26;5526:9;5510:26;:::i;6091:380::-;6170:1;6166:12;;;;6213;;;6234:61;;6288:4;6280:6;6276:17;6266:27;;6234:61;6341:2;6333:6;6330:14;6310:18;6307:38;6304:161;;6387:10;6382:3;6378:20;6375:1;6368:31;6422:4;6419:1;6412:15;6450:4;6447:1;6440:15;6304:161;;6091:380;;;:::o;6476:335::-;6678:2;6660:21;;;6717:2;6697:18;;;6690:30;-1:-1:-1;;;6751:2:1;6736:18;;6729:41;6802:2;6787:18;;6476:335::o;7069:251::-;7139:6;7192:2;7180:9;7171:7;7167:23;7163:32;7160:52;;;7208:1;7205;7198:12;7160:52;7240:9;7234:16;7259:31;7284:5;7259:31;:::i;7634:127::-;7695:10;7690:3;7686:20;7683:1;7676:31;7726:4;7723:1;7716:15;7750:4;7747:1;7740:15;7766:125;7831:9;;;7852:10;;;7849:36;;;7865:18;;:::i;8254:329::-;8456:2;8438:21;;;8495:1;8475:18;;;8468:29;-1:-1:-1;;;8528:2:1;8513:18;;8506:36;8574:2;8559:18;;8254:329::o;9370:128::-;9437:9;;;9458:11;;;9455:37;;;9472:18;;:::i;9859:168::-;9932:9;;;9963;;9980:15;;;9974:22;;9960:37;9950:71;;10001:18;;:::i;10032:217::-;10072:1;10098;10088:132;;10142:10;10137:3;10133:20;10130:1;10123:31;10177:4;10174:1;10167:15;10205:4;10202:1;10195:15;10088:132;-1:-1:-1;10234:9:1;;10032:217::o;10788:127::-;10849:10;10844:3;10840:20;10837:1;10830:31;10880:4;10877:1;10870:15;10904:4;10901:1;10894:15;10920:980;11182:4;11230:3;11219:9;11215:19;11261:6;11250:9;11243:25;11287:2;11325:6;11320:2;11309:9;11305:18;11298:34;11368:3;11363:2;11352:9;11348:18;11341:31;11392:6;11427;11421:13;11458:6;11450;11443:22;11496:3;11485:9;11481:19;11474:26;;11535:2;11527:6;11523:15;11509:29;;11556:1;11566:195;11580:6;11577:1;11574:13;11566:195;;;11645:13;;-1:-1:-1;;;;;11641:39:1;11629:52;;11736:15;;;;11701:12;;;;11677:1;11595:9;11566:195;;;-1:-1:-1;;;;;;;11817:32:1;;;;11812:2;11797:18;;11790:60;-1:-1:-1;;;11881:3:1;11866:19;11859:35;11778:3;10920:980;-1:-1:-1;;;10920:980:1:o;12517:306::-;12605:6;12613;12621;12674:2;12662:9;12653:7;12649:23;12645:32;12642:52;;;12690:1;12687;12680:12;12642:52;12719:9;12713:16;12703:26;;12769:2;12758:9;12754:18;12748:25;12738:35;;12813:2;12802:9;12798:18;12792:25;12782:35;;12517:306;;;;;:::o
Swarm Source
ipfs://0663b1867fe610694514e33e5546b3f7fb138bb52d0b7be36843410394abed66
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.