Contract Overview
Balance:
0 MATIC
MATIC Value:
$0.00
[ Download CSV Export ]
Contract Name:
GHAF
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-04-20 */ // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, 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); } // File: @openzeppelin/contracts/interfaces/IERC20.sol // OpenZeppelin Contracts v4.4.1 (interfaces/IERC20.sol) pragma solidity ^0.8.0; // File: @openzeppelin/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts v4.4.1 (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // 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 (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @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) { return a + b; } /** * @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 a - b; } /** * @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) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting 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 a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting 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) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * 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) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ 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 * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @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"); (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 ETH 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"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { 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 assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: contracts/GHAF/GHAF.sol pragma solidity ^0.8.10; interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 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 (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract GHAF is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcluded; address[] private _excluded; mapping(address => bool) private _isBlackListedBot; mapping(address => bool) private _isExcludedFromLimit; address[] private _blackListedBots; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 500_000_000 ether; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; address payable public _companyAddress = payable(address(0xe01fA40A34Fa7d5a023C98b09Af707C199e8eb63)); address payable public _buybackAddress = payable(address(0x4dC126F7E8a8d4dDf395Cc7537958FC0F2c8de9e)); address private _donationAddress = 0x000000000000000000000000000000000000dEaD; string private _name = "GHA Foundation"; string private _symbol = "GHAF"; uint8 private _decimals = 18; struct BuyFee { uint16 tax; uint16 liquidity; uint16 company; uint16 buyback; uint16 donation; } struct SellFee { uint16 tax; uint16 liquidity; uint16 company; uint16 buyback; uint16 donation; } BuyFee public buyFee; SellFee public sellFee; uint16 private _taxFee; uint16 private _liquidityFee; uint16 private _companyFee; uint16 private _buybackFee; uint16 private _donationFee; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public immutable USDCAddress; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; uint256 public _maxTxAmount = _tTotal / 200; uint256 private numTokensSellToAddToLiquidity = _tTotal / 200; uint256 public _maxWalletSize = _tTotal / 100; event botAddedToBlacklist(address account); event botRemovedFromBlacklist(address account); event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify(uint256 tokensSwapped,uint256 ethReceived,uint256 tokensIntoLiqudity); modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor() { _rOwned[_msgSender()] = _rTotal; buyFee.tax = 0; buyFee.liquidity = 0; buyFee.company = 1; buyFee.buyback = 2; buyFee.donation = 0; sellFee.tax = 0; sellFee.liquidity = 0; sellFee.company = 2; sellFee.buyback = 5; sellFee.donation = 0; USDCAddress = address(0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff // QuickSwap Router ); // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), USDCAddress); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; // exclude owner, buyback wallet, and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_companyAddress] = true; _isExcludedFromFee[_buybackAddress] = true; _isExcludedFromLimit[_companyAddress] = true; _isExcludedFromLimit[_buybackAddress] = true; _isExcludedFromLimit[owner()] = true; _isExcludedFromLimit[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue) ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub( subtractedValue, "ERC20: decreased allowance below zero" ) ); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function donationAddress() public view returns (address) { return _donationAddress; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require( !_isExcluded[sender], "Excluded addresses cannot call this function" ); ( , uint256 tFee, uint256 tLiquidity, uint256 tWallet, uint256 tDonation ) = _getTValues(tAmount); (uint256 rAmount, , ) = _getRValues( tAmount, tFee, tLiquidity, tWallet, tDonation, _getRate() ); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); ( , uint256 tFee, uint256 tLiquidity, uint256 tWallet, uint256 tDonation ) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, ) = _getRValues( tAmount, tFee, tLiquidity, tWallet, tDonation, _getRate() ); if (!deductTransferFee) { return rAmount; } else { return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function updateCompanyWallet(address payable newAddress) external onlyOwner { _companyAddress = newAddress; } function updateBuybackWallet(address payable newAddress) external onlyOwner { _buybackAddress = newAddress; } function addBotToBlacklist(address account) external onlyOwner { require( account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, "We cannot blacklist UniSwap router" ); require(!_isBlackListedBot[account], "Account is already blacklisted"); _isBlackListedBot[account] = true; _blackListedBots.push(account); } function removeBotFromBlacklist(address account) external onlyOwner { require(_isBlackListedBot[account], "Account is not blacklisted"); for (uint256 i = 0; i < _blackListedBots.length; i++) { if (_blackListedBots[i] == account) { _blackListedBots[i] = _blackListedBots[ _blackListedBots.length - 1 ]; _isBlackListedBot[account] = false; _blackListedBots.pop(); break; } } } function excludeFromReward(address account) public onlyOwner { require(!_isExcluded[account], "Account is already excluded"); if (_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner { require(_isExcluded[account], "Account is not excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function excludeFromLimit(address account) public onlyOwner { _isExcludedFromLimit[account] = true; } function includeInLimit(address account) public onlyOwner { _isExcludedFromLimit[account] = false; } function setSellFee( uint16 tax, uint16 liquidity, uint16 company, uint16 buyback, uint16 donation ) external onlyOwner { sellFee.tax = tax; sellFee.company = company; sellFee.liquidity = liquidity; sellFee.buyback = buyback; sellFee.donation = donation; } function setBuyFee( uint16 tax, uint16 liquidity, uint16 company, uint16 buyback, uint16 donation ) external onlyOwner { buyFee.tax = tax; buyFee.company = company; buyFee.liquidity = liquidity; buyFee.buyback = buyback; buyFee.donation = donation; } function setBothFees( uint16 buy_tax, uint16 buy_liquidity, uint16 buy_company, uint16 buy_buyback, uint16 buy_donation, uint16 sell_tax, uint16 sell_liquidity, uint16 sell_company, uint16 sell_buyback, uint16 sell_donation ) external onlyOwner { buyFee.tax = buy_tax; buyFee.company = buy_company; buyFee.liquidity = buy_liquidity; buyFee.buyback = buy_buyback; buyFee.donation = buy_donation; sellFee.tax = sell_tax; sellFee.company = sell_company; sellFee.liquidity = sell_liquidity; sellFee.buyback = sell_buyback; sellFee.donation = sell_donation; } function setNumTokensSellToAddToLiquidity(uint256 numTokens) external onlyOwner { numTokensSellToAddToLiquidity = numTokens; } function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner { _maxTxAmount = _tTotal.mul(maxTxPercent).div(10**3); } function _setMaxWalletSizePercent(uint256 maxWalletSize) external onlyOwner { _maxWalletSize = _tTotal.mul(maxWalletSize).div(10**3); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } //to recieve ETH from uniswapV2Router when swapping receive() external payable {} function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getTValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256 ) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tWallet = calculateCompanyFee(tAmount) + calculateBuybackFee(tAmount); uint256 tDonation = calculateDonationFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); tTransferAmount = tTransferAmount.sub(tWallet); tTransferAmount = tTransferAmount.sub(tDonation); return (tTransferAmount, tFee, tLiquidity, tWallet, tDonation); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tWallet, uint256 tDonation, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rWallet = tWallet.mul(currentRate); uint256 rDonation = tDonation.mul(currentRate); uint256 rTransferAmount = rAmount .sub(rFee) .sub(rLiquidity) .sub(rWallet) .sub(rDonation); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if ( _rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply ) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function _takeWalletFee(uint256 tWallet) private { uint256 currentRate = _getRate(); uint256 rWallet = tWallet.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rWallet); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tWallet); } function _takeDonationFee(uint256 tDonation) private { uint256 currentRate = _getRate(); uint256 rDonation = tDonation.mul(currentRate); _rOwned[_donationAddress] = _rOwned[_donationAddress].add(rDonation); if (_isExcluded[_donationAddress]) _tOwned[_donationAddress] = _tOwned[_donationAddress].add( tDonation ); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div(10**2); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div(10**2); } function calculateCompanyFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_companyFee).div(10**2); } function calculateDonationFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_donationFee).div(10**2); } function calculateBuybackFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_buybackFee).div(10**2); } function removeAllFee() private { _taxFee = 0; _liquidityFee = 0; _companyFee = 0; _donationFee = 0; _buybackFee = 0; } function setBuy() private { _taxFee = buyFee.tax; _liquidityFee = buyFee.liquidity; _companyFee = buyFee.company; _donationFee = buyFee.donation; _buybackFee = buyFee.buyback; } function setSell() private { _taxFee = sellFee.tax; _liquidityFee = sellFee.liquidity; _companyFee = sellFee.company; _donationFee = sellFee.donation; _buybackFee = sellFee.buyback; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function isExcludedFromLimit(address account) public view returns (bool) { return _isExcludedFromLimit[account]; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(!_isBlackListedBot[from], "You are blacklisted"); require(!_isBlackListedBot[msg.sender], "blacklisted"); require(!_isBlackListedBot[tx.origin], "blacklisted"); // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap + liquidity lock? // also, don't get caught in a circular liquidity event. // also, don't swap & liquify if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { contractTokenBalance = numTokensSellToAddToLiquidity; //add liquidity swapAndLiquify(contractTokenBalance); } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { takeFee = false; } if (takeFee) { if (!_isExcludedFromLimit[from] && !_isExcludedFromLimit[to]) { require(amount <= _maxTxAmount,"Transfer amount exceeds the maxTxAmount."); if (to != uniswapV2Pair) { require(amount + balanceOf(to) <= _maxWalletSize,"Recipient exceeds max wallet size."); } } } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from, to, amount, takeFee); } function swapAndLiquify(uint256 tokens) private lockTheSwap { // Split the contract balance into halves uint256 denominator = (buyFee.liquidity + sellFee.liquidity + buyFee.company + sellFee.company + buyFee.buyback + sellFee.buyback) * 2; uint256 tokensToAddLiquidityWith = (tokens * (buyFee.liquidity + sellFee.liquidity)) / denominator; uint256 toSwap = tokens - tokensToAddLiquidityWith; uint256 initialBalance = IERC20(USDCAddress).balanceOf(address(this)); swapTokensForUSDC(toSwap); uint256 deltaBalance = IERC20(USDCAddress).balanceOf(address(this)) - initialBalance; uint256 unitBalance = deltaBalance / (denominator - (buyFee.liquidity + sellFee.liquidity)); uint256 USDCToAddLiquidityWith = unitBalance * (buyFee.liquidity + sellFee.liquidity); if (USDCToAddLiquidityWith > 0) { // Add liquidity addLiquidityUSDC(tokensToAddLiquidityWith, USDCToAddLiquidityWith); } // Send ETH to company uint256 companyAmt = unitBalance * 2 * (buyFee.company + sellFee.company); uint256 buybackAmt = unitBalance * 2 * (buyFee.buyback + sellFee.buyback) > address(this).balance ? address(this).balance : unitBalance * 2 * (buyFee.buyback + sellFee.buyback); if (companyAmt > 0) { IERC20(USDCAddress).transfer(_companyAddress, companyAmt); } if (buybackAmt > 0) { IERC20(USDCAddress).transfer(_buybackAddress, buybackAmt); } } function swapTokensForUSDC(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = USDCAddress; _approve(address(this), address(uniswapV2Router), tokenAmount); try // make the swap uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ) {} catch {} } function addLiquidityUSDC(uint256 tokenAmount, uint256 USDCAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); try // add the liquidity uniswapV2Router.addLiquidity( address(this), USDCAddress, tokenAmount, USDCAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(this), block.timestamp ) {} catch {} } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (takeFee) { removeAllFee(); if (sender == uniswapV2Pair) { setBuy(); } if (recipient == uniswapV2Pair) { setSell(); } } if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } removeAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tWallet, uint256 tDonation ) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues( tAmount, tFee, tLiquidity, tWallet, tDonation, _getRate() ); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeWalletFee(tWallet); _takeDonationFee(tDonation); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tWallet, uint256 tDonation ) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues( tAmount, tFee, tLiquidity, tWallet, tDonation, _getRate() ); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeWalletFee(tWallet); _takeDonationFee(tDonation); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tWallet, uint256 tDonation ) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues( tAmount, tFee, tLiquidity, tWallet, tDonation, _getRate() ); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeWalletFee(tWallet); _takeDonationFee(tDonation); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tWallet, uint256 tDonation ) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues( tAmount, tFee, tLiquidity, tWallet, tDonation, _getRate() ); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeWalletFee(tWallet); _takeDonationFee(tDonation); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"botAddedToBlacklist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"botRemovedFromBlacklist","type":"event"},{"inputs":[],"name":"USDCAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buybackAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_companyAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"_setMaxWalletSizePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBotToBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint16","name":"tax","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"company","type":"uint16"},{"internalType":"uint16","name":"buyback","type":"uint16"},{"internalType":"uint16","name":"donation","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"donationAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBotFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint16","name":"tax","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"company","type":"uint16"},{"internalType":"uint16","name":"buyback","type":"uint16"},{"internalType":"uint16","name":"donation","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"buy_tax","type":"uint16"},{"internalType":"uint16","name":"buy_liquidity","type":"uint16"},{"internalType":"uint16","name":"buy_company","type":"uint16"},{"internalType":"uint16","name":"buy_buyback","type":"uint16"},{"internalType":"uint16","name":"buy_donation","type":"uint16"},{"internalType":"uint16","name":"sell_tax","type":"uint16"},{"internalType":"uint16","name":"sell_liquidity","type":"uint16"},{"internalType":"uint16","name":"sell_company","type":"uint16"},{"internalType":"uint16","name":"sell_buyback","type":"uint16"},{"internalType":"uint16","name":"sell_donation","type":"uint16"}],"name":"setBothFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"tax","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"company","type":"uint16"},{"internalType":"uint16","name":"buyback","type":"uint16"},{"internalType":"uint16","name":"donation","type":"uint16"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numTokens","type":"uint256"}],"name":"setNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"tax","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"company","type":"uint16"},{"internalType":"uint16","name":"buyback","type":"uint16"},{"internalType":"uint16","name":"donation","type":"uint16"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"newAddress","type":"address"}],"name":"updateBuybackWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newAddress","type":"address"}],"name":"updateCompanyWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e06040526b019d971e4fe8401e74000000600a819055620000249060001962000534565b62000032906000196200054b565b600b55600d80546001600160a01b031990811673e01fa40a34fa7d5a023c98b09af707c199e8eb6317909155600e80548216734dc126f7e8a8d4ddf395cc7537958fc0f2c8de9e178155600f805490921661dead17909155604080518082019091528181526d23a420902337bab73230ba34b7b760911b6020909101908152620000c0916010919062000478565b506040805180820190915260048082526323a420a360e11b6020909201918252620000ee9160119162000478565b506012805460ff1916811790556015805460ff60581b19166b010000000000000000000000179055600a54620001279060c89062000571565b60165560c8600a546200013b919062000571565b6017556064600a546200014f919062000571565b6018553480156200015f57600080fd5b506200016b3362000428565b600b543360009081526001602090815260409182902092909255601380546001600160501b0319908116660200010000000017909155601480549091166605000200000000179055732791bca1f2de4661ed88a30c99a7a9449aa8417460c052805163c45a015560e01b8152905173a5e0829caced8ffdd4de3c43696c57f7d7a678ff92839263c45a015592600480830193928290030181865afa15801562000218573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023e919062000588565b60c0516040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af115801562000290573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b6919062000588565b6001600160a01b0390811660a0528116608052600160046000620002e26000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260048452828120805486166001908117909155600d8054841683528483208054881683179055600e8054851684528584208054891684179055905484168352600895869052848320805488168317905554909216815291822080549094168117909355620003896000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526008909252902080549091166001179055620003d13390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040516200041991815260200190565b60405180910390a350620005f6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546200048690620005ba565b90600052602060002090601f016020900481019282620004aa5760008555620004f5565b82601f10620004c557805160ff1916838001178555620004f5565b82800160010185558215620004f5579182015b82811115620004f5578251825591602001919060010190620004d8565b506200050392915062000507565b5090565b5b8082111562000503576000815560010162000508565b634e487b7160e01b600052601260045260246000fd5b6000826200054657620005466200051e565b500690565b6000828210156200056c57634e487b7160e01b600052601160045260246000fd5b500390565b6000826200058357620005836200051e565b500490565b6000602082840312156200059b57600080fd5b81516001600160a01b0381168114620005b357600080fd5b9392505050565b600181811c90821680620005cf57607f821691505b602082108103620005f057634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c051613896620006886000396000818161096601528181612356015281816123ee015281816125e50152818161268501528181612c730152612dc201526000818161062c01528181611e7101528181611fcb0152818161272f01526127d90152600081816103e401528181612ccb01528181612d0701528181612d7f0152612e1401526138966000f3fe6080604052600436106102b25760003560e01c806352390c0211610175578063af2ce614116100dc578063dd62ed3e11610095578063ea2f0b371161006f578063ea2f0b3714610988578063ec034bed146109a8578063f0f165af146109c6578063f2fde38b146109e657600080fd5b8063dd62ed3e146108ee578063e3d55ded14610934578063e93032091461095457600080fd5b8063af2ce61414610815578063b030b34a14610835578063c49b9a8014610855578063d4f11ab214610875578063d543dbeb14610895578063d94160e0146108b557600080fd5b80638da5cb5b1161012e5780638da5cb5b1461076c5780638f9a55c01461078a57806391d919a9146107a057806395d89b41146107c0578063a457c2d7146107d5578063a9059cbb146107f557600080fd5b806352390c021461068f5780635342acb4146106af57806370a08231146106e8578063715018a6146107085780637d1db4a51461071d57806388f820201461073357600080fd5b80632d838119116102195780634549b039116101d25780634549b03914610596578063469629a9146105b657806347062402146105d657806349bd5a5e1461061a5780634a74bb021461064e5780634cfd4a921461066f57600080fd5b80632d838119146104d4578063313ce567146104f45780633685d4191461051657806339509351146105365780633bd5d17314610556578063437823ec1461057657600080fd5b80631465d9291161026b5780631465d929146103b25780631694505e146103d257806318160ddd146104065780631d7ef8791461041b57806323b872dd1461043b5780632b14ca561461045b57600080fd5b806304dacd50146102be57806306fdde03146102e0578063090992f11461030b578063095ea7b3146103435780630bd3a7f91461037357806313114a9d1461039357600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102de6102d93660046132fd565b610a06565b005b3480156102ec57600080fd5b506102f5610a5b565b604051610302919061331a565b60405180910390f35b34801561031757600080fd5b50600e5461032b906001600160a01b031681565b6040516001600160a01b039091168152602001610302565b34801561034f57600080fd5b5061036361035e36600461336f565b610aed565b6040519015158152602001610302565b34801561037f57600080fd5b506102de61038e3660046132fd565b610b04565b34801561039f57600080fd5b50600c545b604051908152602001610302565b3480156103be57600080fd5b506102de6103cd3660046133b2565b610b52565b3480156103de57600080fd5b5061032b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561041257600080fd5b50600a546103a4565b34801561042757600080fd5b506102de6104363660046132fd565b610bee565b34801561044757600080fd5b50610363610456366004613417565b610d5e565b34801561046757600080fd5b5060145461049f9061ffff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b9091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a001610302565b3480156104e057600080fd5b506103a46104ef366004613458565b610dc7565b34801561050057600080fd5b5060125460405160ff9091168152602001610302565b34801561052257600080fd5b506102de6105313660046132fd565b610e4b565b34801561054257600080fd5b5061036361055136600461336f565b611001565b34801561056257600080fd5b506102de610571366004613458565b611037565b34801561058257600080fd5b506102de6105913660046132fd565b611145565b3480156105a257600080fd5b506103a46105b136600461347f565b611193565b3480156105c257600080fd5b506102de6105d13660046134af565b611236565b3480156105e257600080fd5b5060135461049f9061ffff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b9091041685565b34801561062657600080fd5b5061032b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561065a57600080fd5b5060155461036390600160581b900460ff1681565b34801561067b57600080fd5b506102de61068a3660046133b2565b6113ac565b34801561069b57600080fd5b506102de6106aa3660046132fd565b611448565b3480156106bb57600080fd5b506103636106ca3660046132fd565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156106f457600080fd5b506103a46107033660046132fd565b61159b565b34801561071457600080fd5b506102de6115fa565b34801561072957600080fd5b506103a460165481565b34801561073f57600080fd5b5061036361074e3660046132fd565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561077857600080fd5b506000546001600160a01b031661032b565b34801561079657600080fd5b506103a460185481565b3480156107ac57600080fd5b506102de6107bb3660046132fd565b611630565b3480156107cc57600080fd5b506102f561167b565b3480156107e157600080fd5b506103636107f036600461336f565b61168a565b34801561080157600080fd5b5061036361081036600461336f565b6116d9565b34801561082157600080fd5b506102de610830366004613458565b6116e6565b34801561084157600080fd5b506102de6108503660046132fd565b611737565b34801561086157600080fd5b506102de610870366004613569565b6118ba565b34801561088157600080fd5b506102de6108903660046132fd565b61193c565b3480156108a157600080fd5b506102de6108b0366004613458565b611988565b3480156108c157600080fd5b506103636108d03660046132fd565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156108fa57600080fd5b506103a4610909366004613586565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561094057600080fd5b50600d5461032b906001600160a01b031681565b34801561096057600080fd5b5061032b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561099457600080fd5b506102de6109a33660046132fd565b6119d3565b3480156109b457600080fd5b50600f546001600160a01b031661032b565b3480156109d257600080fd5b506102de6109e1366004613458565b611a1e565b3480156109f257600080fd5b506102de610a013660046132fd565b611a4d565b6000546001600160a01b03163314610a395760405162461bcd60e51b8152600401610a30906135b4565b60405180910390fd5b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b606060108054610a6a906135e9565b80601f0160208091040260200160405190810160405280929190818152602001828054610a96906135e9565b8015610ae35780601f10610ab857610100808354040283529160200191610ae3565b820191906000526020600020905b815481529060010190602001808311610ac657829003601f168201915b5050505050905090565b6000610afa338484611ae8565b5060015b92915050565b6000546001600160a01b03163314610b2e5760405162461bcd60e51b8152600401610a30906135b4565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000546001600160a01b03163314610b7c5760405162461bcd60e51b8152600401610a30906135b4565b6013805461ffff928316600160401b0261ffff60401b19948416600160301b0261ffff60301b1997851662010000029790971667ffff0000ffff000019968516600160201b0265ffff0000ffff1990931694909816939093171793909316949094179290921791909116919091179055565b6000546001600160a01b03163314610c185760405162461bcd60e51b8152600401610a30906135b4565b6001600160a01b038116737a250d5630b4cf539739df2c5dacb4c659f2488d03610c8f5760405162461bcd60e51b815260206004820152602260248201527f57652063616e6e6f7420626c61636b6c69737420556e695377617020726f757460448201526132b960f11b6064820152608401610a30565b6001600160a01b03811660009081526007602052604090205460ff1615610cf85760405162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c697374656400006044820152606401610a30565b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6000610d6b848484611c0c565b610dbd8433610db885604051806060016040528060288152602001613814602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190612085565b611ae8565b5060019392505050565b6000600b54821115610e2e5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610a30565b6000610e386120b1565b9050610e4483826120d4565b9392505050565b6000546001600160a01b03163314610e755760405162461bcd60e51b8152600401610a30906135b4565b6001600160a01b03811660009081526005602052604090205460ff16610edd5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610a30565b60005b600654811015610ffd57816001600160a01b031660068281548110610f0757610f07613623565b6000918252602090912001546001600160a01b031603610feb5760068054610f319060019061364f565b81548110610f4157610f41613623565b600091825260209091200154600680546001600160a01b039092169183908110610f6d57610f6d613623565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556006805480610fc557610fc5613666565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610ff58161367c565b915050610ee0565b5050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610afa918590610db890866120e0565b3360008181526005602052604090205460ff16156110ac5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610a30565b6000806000806110bb866120ec565b94509450945094505060006110db87868686866110d66120b1565b61217b565b50506001600160a01b03871660009081526001602052604090205490915061110390826121ef565b6001600160a01b038716600090815260016020526040902055600b5461112990826121ef565b600b55600c5461113990886120e0565b600c5550505050505050565b6000546001600160a01b0316331461116f5760405162461bcd60e51b8152600401610a30906135b4565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600a548311156111e75760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610a30565b6000806000806111f6876120ec565b94509450945094505060008061121289878787876110d66120b1565b50915091508761122957509450610afe9350505050565b9550610afe945050505050565b6000546001600160a01b031633146112605760405162461bcd60e51b8152600401610a30906135b4565b89601360000160006101000a81548161ffff021916908361ffff16021790555087601360000160046101000a81548161ffff021916908361ffff16021790555088601360000160026101000a81548161ffff021916908361ffff16021790555086601360000160066101000a81548161ffff021916908361ffff16021790555085601360000160086101000a81548161ffff021916908361ffff16021790555084601460000160006101000a81548161ffff021916908361ffff16021790555082601460000160046101000a81548161ffff021916908361ffff16021790555083601460000160026101000a81548161ffff021916908361ffff16021790555081601460000160066101000a81548161ffff021916908361ffff16021790555080601460000160086101000a81548161ffff021916908361ffff16021790555050505050505050505050565b6000546001600160a01b031633146113d65760405162461bcd60e51b8152600401610a30906135b4565b6014805461ffff928316600160401b0261ffff60401b19948416600160301b0261ffff60301b1997851662010000029790971667ffff0000ffff000019968516600160201b0265ffff0000ffff1990931694909816939093171793909316949094179290921791909116919091179055565b6000546001600160a01b031633146114725760405162461bcd60e51b8152600401610a30906135b4565b6001600160a01b03811660009081526005602052604090205460ff16156114db5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610a30565b6001600160a01b03811660009081526001602052604090205415611535576001600160a01b03811660009081526001602052604090205461151b90610dc7565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6001600160a01b03811660009081526005602052604081205460ff16156115d857506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610afe90610dc7565b6000546001600160a01b031633146116245760405162461bcd60e51b8152600401610a30906135b4565b61162e60006121fb565b565b6000546001600160a01b0316331461165a5760405162461bcd60e51b8152600401610a30906135b4565b6001600160a01b03166000908152600860205260409020805460ff19169055565b606060118054610a6a906135e9565b6000610afa3384610db88560405180606001604052806025815260200161383c602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190612085565b6000610afa338484611c0c565b6000546001600160a01b031633146117105760405162461bcd60e51b8152600401610a30906135b4565b6117316103e861172b83600a5461224b90919063ffffffff16565b906120d4565b60185550565b6000546001600160a01b031633146117615760405162461bcd60e51b8152600401610a30906135b4565b6001600160a01b03811660009081526007602052604090205460ff166117c95760405162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c69737465640000000000006044820152606401610a30565b60005b600954811015610ffd57816001600160a01b0316600982815481106117f3576117f3613623565b6000918252602090912001546001600160a01b0316036118a8576009805461181d9060019061364f565b8154811061182d5761182d613623565b600091825260209091200154600980546001600160a01b03909216918390811061185957611859613623565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600790915260409020805460ff191690556009805480610fc557610fc5613666565b806118b28161367c565b9150506117cc565b6000546001600160a01b031633146118e45760405162461bcd60e51b8152600401610a30906135b4565b60158054821515600160581b0260ff60581b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061193190831515815260200190565b60405180910390a150565b6000546001600160a01b031633146119665760405162461bcd60e51b8152600401610a30906135b4565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146119b25760405162461bcd60e51b8152600401610a30906135b4565b6119cd6103e861172b83600a5461224b90919063ffffffff16565b60165550565b6000546001600160a01b031633146119fd5760405162461bcd60e51b8152600401610a30906135b4565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611a485760405162461bcd60e51b8152600401610a30906135b4565b601755565b6000546001600160a01b03163314611a775760405162461bcd60e51b8152600401610a30906135b4565b6001600160a01b038116611adc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a30565b611ae5816121fb565b50565b6001600160a01b038316611b4a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a30565b6001600160a01b038216611bab5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a30565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611c705760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a30565b6001600160a01b038216611cd25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a30565b60008111611d345760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a30565b6001600160a01b03831660009081526007602052604090205460ff1615611d935760405162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b6044820152606401610a30565b3360009081526007602052604090205460ff1615611de15760405162461bcd60e51b815260206004820152600b60248201526a189b1858dadb1a5cdd195960aa1b6044820152606401610a30565b3260009081526007602052604090205460ff1615611e2f5760405162461bcd60e51b815260206004820152600b60248201526a189b1858dadb1a5cdd195960aa1b6044820152606401610a30565b6000611e3a3061159b565b90506016548110611e4a57506016545b60175481108015908190611e685750601554600160501b900460ff16155b8015611ea657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b8015611ebb5750601554600160581b900460ff165b15611ece576017549150611ece82612257565b6001600160a01b03851660009081526004602052604090205460019060ff1680611f1057506001600160a01b03851660009081526004602052604090205460ff165b15611f19575060005b8015612071576001600160a01b03861660009081526008602052604090205460ff16158015611f6157506001600160a01b03851660009081526008602052604090205460ff16155b1561207157601654841115611fc95760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610a30565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316146120715760185461200e8661159b565b6120189086613695565b11156120715760405162461bcd60e51b815260206004820152602260248201527f526563697069656e742065786365656473206d61782077616c6c65742073697a604482015261329760f11b6064820152608401610a30565b61207d8686868461270f565b505050505050565b600081848411156120a95760405162461bcd60e51b8152600401610a30919061331a565b505050900390565b60008060006120be6129f3565b90925090506120cd82826120d4565b9250505090565b6000610e4482846136ad565b6000610e448284613695565b6000806000806000806120fe87612b75565b9050600061210b88612b91565b9050600061211889612bb3565b6121218a612bd6565b61212b9190613695565b905060006121388a612bf9565b905060006121508461214a8d886121ef565b906121ef565b905061215c81846121ef565b905061216881836121ef565b9b949a5092985090965094509092505050565b600080808061218a8a8661224b565b905060006121988a8761224b565b905060006121a68a8861224b565b905060006121b48a8961224b565b905060006121c28a8a61224b565b905060006121d88261214a858188818c8c6121ef565b959f959e50939c50939a5050505050505050505050565b6000610e44828461364f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610e4482846136cf565b6015805460ff60501b1916600160501b17905560145460135460009161ffff600160301b808304821693908104821692600160201b8082048416939083048116926122af9262010000908190048316929104166136ee565b6122b991906136ee565b6122c391906136ee565b6122cd91906136ee565b6122d791906136ee565b6122e2906002613714565b60145460135461ffff9283169350600092849261230d926201000091829004831692919004166136ee565b61231b9061ffff16856136cf565b61232591906136ad565b90506000612333828561364f565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061373e565b90506123cc82612c1c565b6040516370a0823160e01b815230600482015260009082906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015612435573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612459919061373e565b612463919061364f565b60145460135491925060009161248b9161ffff620100009182900481169291909104166136ee565b6124999061ffff168761364f565b6124a390836136ad565b6014546013549192506000916124cb9161ffff620100009182900481169291909104166136ee565b6124d99061ffff16836136cf565b905080156124eb576124eb8682612d79565b6014546013546000916125109161ffff600160201b92839004811692909104166136ee565b61ffff1661251f8460026136cf565b61252991906136cf565b60145460135491925060009147916125539161ffff600160301b92839004811692909104166136ee565b61ffff166125628660026136cf565b61256c91906136cf565b116125b2576014546013546125949161ffff600160301b9182900481169291909104166136ee565b61ffff166125a38560026136cf565b6125ad91906136cf565b6125b4565b475b9050811561265657600d5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af1158015612630573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126549190613757565b505b80156126f657600e5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af11580156126d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f49190613757565b505b50506015805460ff60501b191690555050505050505050565b80156128815761272d6015805469ffffffffffffffffffff19169055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316036127d7576013546015805461ffff80841663ffffffff1990921691909117620100008085048316021769ffff0000ffff000000001916600160201b80850483160261ffff60401b191617600160401b8085048316021761ffff60301b1916600160301b93849004919091169092029190911790555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031603612881576014546015805461ffff80841663ffffffff1990921691909117620100008085048316021769ffff0000ffff000000001916600160201b80850483160261ffff60401b191617600160401b8085048316021761ffff60301b1916600160301b93849004919091169092029190911790555b6001600160a01b03841660009081526005602052604090205460ff1680156128c257506001600160a01b03831660009081526005602052604090205460ff16155b156128d7576128d2848484612e86565b6129d5565b6001600160a01b03841660009081526005602052604090205460ff1615801561291857506001600160a01b03831660009081526005602052604090205460ff165b15612928576128d2848484612fd7565b6001600160a01b03841660009081526005602052604090205460ff1615801561296a57506001600160a01b03831660009081526005602052604090205460ff16155b1561297a576128d2848484613097565b6001600160a01b03841660009081526005602052604090205460ff1680156129ba57506001600160a01b03831660009081526005602052604090205460ff165b156129ca576128d28484846130f2565b6129d5848484613097565b6129ed6015805469ffffffffffffffffffff19169055565b50505050565b600b54600a546000918291825b600654811015612b4557826001600060068481548110612a2257612a22613623565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612a8d5750816002600060068481548110612a6657612a66613623565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612aa357600b54600a54945094505050509091565b612ae96001600060068481548110612abd57612abd613623565b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906121ef565b9250612b316002600060068481548110612b0557612b05613623565b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906121ef565b915080612b3d8161367c565b915050612a00565b50600a54600b54612b55916120d4565b821015612b6c57600b54600a549350935050509091565b90939092509050565b601554600090610afe9060649061172b90859061ffff1661224b565b601554600090610afe9060649061172b90859062010000900461ffff1661224b565b601554600090610afe9060649061172b908590600160301b900461ffff1661224b565b601554600090610afe9060649061172b908590600160201b900461ffff1661224b565b601554600090610afe9060649061172b908590600160401b900461ffff1661224b565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612c5157612c51613623565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110612ca557612ca5613623565b60200260200101906001600160a01b031690816001600160a01b031681525050612cf0307f000000000000000000000000000000000000000000000000000000000000000084611ae8565b604051635c11d79560e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635c11d79590612d45908590600090869030904290600401613774565b600060405180830381600087803b158015612d5f57600080fd5b505af1925050508015612d70575060015b15610ffd575050565b612da4307f000000000000000000000000000000000000000000000000000000000000000084611ae8565b60405162e8e33760e81b815230600482018190526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024840152604483018590526064830184905260006084840181905260a484015260c48301919091524260e48301527f0000000000000000000000000000000000000000000000000000000000000000169063e8e3370090610104016060604051808303816000875af1925050508015612e7a575060408051601f3d908101601f19168201909252612e77918101906137e5565b60015b15610ffd575050505050565b6000806000806000612e97866120ec565b945094509450945094506000806000612eb689888888886110d66120b1565b6001600160a01b038e166000908152600260205260409020549295509093509150612ee1908a6121ef565b6001600160a01b038c16600090815260026020908152604080832093909355600190522054612f1090846121ef565b6001600160a01b03808d1660009081526001602052604080822093909355908c1681522054612f3f90836120e0565b6001600160a01b038b16600090815260016020526040902055612f618661317c565b612f6a8561317c565b612f7384613205565b612f7d81886132c4565b896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a604051612fc291815260200190565b60405180910390a35050505050505050505050565b6000806000806000612fe8866120ec565b94509450945094509450600080600061300789888888886110d66120b1565b6001600160a01b038e16600090815260016020526040902054929550909350915061303290846121ef565b6001600160a01b03808d16600090815260016020908152604080832094909455918d1681526002909152205461306890896120e0565b6001600160a01b038b16600090815260026020908152604080832093909355600190522054612f3f90836120e0565b60008060008060006130a8866120ec565b9450945094509450945060008060006130c789888888886110d66120b1565b6001600160a01b038e166000908152600160205260409020549295509093509150612f1090846121ef565b6000806000806000613103866120ec565b94509450945094509450600080600061312289888888886110d66120b1565b6001600160a01b038e16600090815260026020526040902054929550909350915061314d908a6121ef565b6001600160a01b038c1660009081526002602090815260408083209390935560019052205461303290846121ef565b60006131866120b1565b90506000613194838361224b565b306000908152600160205260409020549091506131b190826120e0565b3060009081526001602090815260408083209390935560059052205460ff161561320057306000908152600260205260409020546131ef90846120e0565b306000908152600260205260409020555b505050565b600061320f6120b1565b9050600061321d838361224b565b600f546001600160a01b031660009081526001602052604090205490915061324590826120e0565b600f80546001600160a01b03908116600090815260016020908152604080832095909555925490911681526005909152205460ff161561320057600f546001600160a01b03166000908152600260205260409020546132a490846120e0565b600f546001600160a01b0316600090815260026020526040902055505050565b600b546132d190836121ef565b600b55600c546132e190826120e0565b600c555050565b6001600160a01b0381168114611ae557600080fd5b60006020828403121561330f57600080fd5b8135610e44816132e8565b600060208083528351808285015260005b818110156133475785810183015185820160400152820161332b565b81811115613359576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561338257600080fd5b823561338d816132e8565b946020939093013593505050565b803561ffff811681146133ad57600080fd5b919050565b600080600080600060a086880312156133ca57600080fd5b6133d38661339b565b94506133e16020870161339b565b93506133ef6040870161339b565b92506133fd6060870161339b565b915061340b6080870161339b565b90509295509295909350565b60008060006060848603121561342c57600080fd5b8335613437816132e8565b92506020840135613447816132e8565b929592945050506040919091013590565b60006020828403121561346a57600080fd5b5035919050565b8015158114611ae557600080fd5b6000806040838503121561349257600080fd5b8235915060208301356134a481613471565b809150509250929050565b6000806000806000806000806000806101408b8d0312156134cf57600080fd5b6134d88b61339b565b99506134e660208c0161339b565b98506134f460408c0161339b565b975061350260608c0161339b565b965061351060808c0161339b565b955061351e60a08c0161339b565b945061352c60c08c0161339b565b935061353a60e08c0161339b565b92506135496101008c0161339b565b91506135586101208c0161339b565b90509295989b9194979a5092959850565b60006020828403121561357b57600080fd5b8135610e4481613471565b6000806040838503121561359957600080fd5b82356135a4816132e8565b915060208301356134a4816132e8565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806135fd57607f821691505b60208210810361361d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008282101561366157613661613639565b500390565b634e487b7160e01b600052603160045260246000fd5b60006001820161368e5761368e613639565b5060010190565b600082198211156136a8576136a8613639565b500190565b6000826136ca57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156136e9576136e9613639565b500290565b600061ffff80831681851680830382111561370b5761370b613639565b01949350505050565b600061ffff8083168185168183048111821515161561373557613735613639565b02949350505050565b60006020828403121561375057600080fd5b5051919050565b60006020828403121561376957600080fd5b8151610e4481613471565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156137c45784516001600160a01b03168352938301939183019160010161379f565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156137fa57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b9c628b2fd378c429a074194ddd857aa0fbe3c1ab3b6f3be647bce8671b8d7b664736f6c634300080d0033
Deployed ByteCode Sourcemap
31398:29152:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40065:123;;;;;;;;;;-1:-1:-1;40065:123:0;;;;;:::i;:::-;;:::i;:::-;;35415:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32295:101;;;;;;;;;;-1:-1:-1;32295:101:0;;;;-1:-1:-1;;;;;32295:101:0;;;;;;-1:-1:-1;;;;;1208:32:1;;;1190:51;;1178:2;1163:18;32295:101:0;1028:219:1;36400:193:0;;;;;;;;;;-1:-1:-1;36400:193:0;;;;;:::i;:::-;;:::i;:::-;;;1745:14:1;;1738:22;1720:41;;1708:2;1693:18;36400:193:0;1580:187:1;42193:115:0;;;;;;;;;;-1:-1:-1;42193:115:0;;;;;:::i;:::-;;:::i;37899:87::-;;;;;;;;;;-1:-1:-1;37968:10:0;;37899:87;;;2178:25:1;;;2166:2;2151:18;37899:87:0;2032:177:1;42802:350:0;;;;;;;;;;-1:-1:-1;42802:350:0;;;;;:::i;:::-;;:::i;33143:51::-;;;;;;;;;;;;;;;35692:95;;;;;;;;;;-1:-1:-1;35772:7:0;;35692:95;;40196:385;;;;;;;;;;-1:-1:-1;40196:385:0;;;;;:::i;:::-;;:::i;36601:446::-;;;;;;;;;;-1:-1:-1;36601:446:0;;;;;:::i;:::-;;:::i;32946:22::-;;;;;;;;;;-1:-1:-1;32946:22:0;;;;;;;;;;;;;;;-1:-1:-1;;;32946:22:0;;;;;-1:-1:-1;;;32946:22:0;;;;;-1:-1:-1;;;32946:22:0;;;;;;;;;;3828:6:1;3861:15;;;3843:34;;3913:15;;;3908:2;3893:18;;3886:43;3965:15;;;3945:18;;;3938:43;;;;4017:15;;4012:2;3997:18;;3990:43;4070:15;;;4064:3;4049:19;;4042:44;3805:3;3790:19;32946:22:0;3569:523:1;39602:322:0;;;;;;;;;;-1:-1:-1;39602:322:0;;;;;:::i;:::-;;:::i;35601:83::-;;;;;;;;;;-1:-1:-1;35667:9:0;;35601:83;;35667:9;;;;4424:36:1;;4412:2;4397:18;35601:83:0;4282:184:1;41475:473:0;;;;;;;;;;-1:-1:-1;41475:473:0;;;;;:::i;:::-;;:::i;37055:300::-;;;;;;;;;;-1:-1:-1;37055:300:0;;;;;:::i;:::-;;:::i;38101:739::-;;;;;;;;;;-1:-1:-1;38101:739:0;;;;;:::i;:::-;;:::i;41956:111::-;;;;;;;;;;-1:-1:-1;41956:111:0;;;;;:::i;:::-;;:::i;38848:746::-;;;;;;;;;;-1:-1:-1;38848:746:0;;;;;:::i;:::-;;:::i;43160:748::-;;;;;;;;;;-1:-1:-1;43160:748:0;;;;;:::i;:::-;;:::i;32919:20::-;;;;;;;;;;-1:-1:-1;32919:20:0;;;;;;;;;;;;;;;-1:-1:-1;;;32919:20:0;;;;;-1:-1:-1;;;32919:20:0;;;;;-1:-1:-1;;;32919:20:0;;;;;;33201:38;;;;;;;;;;;;;;;33321:40;;;;;;;;;;-1:-1:-1;33321:40:0;;;;-1:-1:-1;;;33321:40:0;;;;;;42438:356;;;;;;;;;;-1:-1:-1;42438:356:0;;;;;:::i;:::-;;:::i;41135:332::-;;;;;;;;;;-1:-1:-1;41135:332:0;;;;;:::i;:::-;;:::i;49756:124::-;;;;;;;;;;-1:-1:-1;49756:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;49845:27:0;49821:4;49845:27;;;:18;:27;;;;;;;;;49756:124;35795:198;;;;;;;;;;-1:-1:-1;35795:198:0;;;;;:::i;:::-;;:::i;12661:103::-;;;;;;;;;;;;;:::i;33370:43::-;;;;;;;;;;;;;;;;37771:120;;;;;;;;;;-1:-1:-1;37771:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;37863:20:0;37839:4;37863:20;;;:11;:20;;;;;;;;;37771:120;12010:87;;;;;;;;;;-1:-1:-1;12056:7:0;12083:6;-1:-1:-1;;;;;12083:6:0;12010:87;;33488:45;;;;;;;;;;;;;;;;42316:114;;;;;;;;;;-1:-1:-1;42316:114:0;;;;;:::i;:::-;;:::i;35506:87::-;;;;;;;;;;;;;:::i;37363:400::-;;;;;;;;;;-1:-1:-1;37363:400:0;;;;;:::i;:::-;;:::i;36001:199::-;;;;;;;;;;-1:-1:-1;36001:199:0;;;;;:::i;:::-;;:::i;44208:172::-;;;;;;;;;;-1:-1:-1;44208:172:0;;;;;:::i;:::-;;:::i;40589:538::-;;;;;;;;;;-1:-1:-1;40589:538:0;;;;;:::i;:::-;;:::i;44388:171::-;;;;;;;;;;-1:-1:-1;44388:171:0;;;;;:::i;:::-;;:::i;39934:123::-;;;;;;;;;;-1:-1:-1;39934:123:0;;;;;:::i;:::-;;:::i;44064:136::-;;;;;;;;;;-1:-1:-1;44064:136:0;;;;;:::i;:::-;;:::i;49888:128::-;;;;;;;;;;-1:-1:-1;49888:128:0;;;;;:::i;:::-;-1:-1:-1;;;;;49979:29:0;49955:4;49979:29;;;:20;:29;;;;;;;;;49888:128;36208:184;;;;;;;;;;-1:-1:-1;36208:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;36357:18:0;;;36325:7;36357:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;36208:184;32187:101;;;;;;;;;;-1:-1:-1;32187:101:0;;;;-1:-1:-1;;;;;32187:101:0;;;33246:36;;;;;;;;;;;;;;;42075:110;;;;;;;;;;-1:-1:-1;42075:110:0;;;;;:::i;:::-;;:::i;37994:99::-;;;;;;;;;;-1:-1:-1;38069:16:0;;-1:-1:-1;;;;;38069:16:0;37994:99;;43916:140;;;;;;;;;;-1:-1:-1;43916:140:0;;;;;:::i;:::-;;:::i;12919:201::-;;;;;;;;;;-1:-1:-1;12919:201:0;;;;;:::i;:::-;;:::i;40065:123::-;12056:7;12083:6;-1:-1:-1;;;;;12083:6:0;10814:10;12230:23;12222:68;;;;-1:-1:-1;;;12222:68:0;;;;;;;:::i;:::-;;;;;;;;;40152:15:::1;:28:::0;;-1:-1:-1;;;;;;40152:28:0::1;-1:-1:-1::0;;;;;40152:28:0;;;::::1;::::0;;;::::1;::::0;;40065:123::o;35415:83::-;35452:13;35485:5;35478:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35415:83;:::o;36400:193::-;36502:4;36524:39;10814:10;36547:7;36556:6;36524:8;:39::i;:::-;-1:-1:-1;36581:4:0;36400:193;;;;;:::o;42193:115::-;12056:7;12083:6;-1:-1:-1;;;;;12083:6:0;10814:10;12230:23;12222:68;;;;-1:-1:-1;;;12222:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;42264:29:0::1;;::::0;;;:20:::1;:29;::::0;;;;:36;;-1:-1:-1;;42264:36:0::1;42296:4;42264:36;::::0;;42193:115::o;42802:350::-;12056:7;12083:6;-1:-1:-1;;;;;12083:6:0;10814:10;12230:23;12222:68;;;;-1:-1:-1;;;12222:68:0;;;;;;;:::i;:::-;42982:6:::1;:16:::0;;::::1;43118:26:::0;;::::1;-1:-1:-1::0;;;43118:26:0::1;-1:-1:-1::0;;;;43083:24:0;;::::1;-1:-1:-1::0;;;43083:24:0::1;-1:-1:-1::0;;;;43044:28:0;;::::1;::::0;::::1;43083:24:::0;;;;-1:-1:-1;;43009:24:0;;::::1;-1:-1:-1::0;;;43009:24:0::1;-1:-1:-1::0;;43009:24:0;;;42982:16;;;::::1;43009:24:::0;;;;::::1;43083::::0;;;;;;;;;;;::::1;43118:26:::0;;;::::1;::::0;;;::::1;::::0;;42802:350::o;40196:385::-;12056:7;12083:6;-1:-1:-1;;;;;12083:6:0;10814:10;12230:23;12222:68;;;;-1:-1:-1;;;12222:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40292:53:0;::::1;40303:42;40292:53:::0;40270:137:::1;;;::::0;-1:-1:-1;;;40270:137:0;;7563:2:1;40270:137:0::1;::::0;::::1;7545:21:1::0;7602:2;7582:18;;;7575:30;7641:34;7621:18;;;7614:62;-1:-1:-1;;;7692:18:1;;;7685:32;7734:19;;40270:137:0::1;7361:398:1::0;40270:137:0::1;-1:-1:-1::0;;;;;40427:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;40426:27;40418:70;;;::::0;-1:-1:-1;;;40418:70:0;;7966:2:1;40418:70:0::1;::::0;::::1;7948:21:1::0;8005:2;7985:18;;;7978:30;8044:32;8024:18;;;8017:60;8094:18;;40418:70:0::1;7764:354:1::0;40418:70:0::1;-1:-1:-1::0;;;;;40499:26:0::1;;::::0;;;:17:::1;:26;::::0;;;;:33;;-1:-1:-1;;40499:33:0::1;40528:4;40499:33:::0;;::::1;::::0;;;40543:16:::1;:30:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;40543:30:0::1;::::0;;::::1;::::0;;40196:385::o;36601:446::-;36733:4;36750:36;36760:6;36768:9;36779:6;36750:9;:36::i;:::-;36797:220;36820:6;10814:10;36868:138;36924:6;36868:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;36868:19:0;;;;;;:11;:19;;;;;;;;10814:10;36868:33;;;;;;;;;;:37;:138::i;:::-;36797:8;:220::i;:::-;-1:-1:-1;37035:4:0;36601:446;;;;;:::o;39602:322::-;39696:7;39754;;39743;:18;;39721:110;;;;-1:-1:-1;;;39721:110:0;;8325:2:1;39721:110:0;;;8307:21:1;8364:2;8344:18;;;8337:30;8403:34;8383:18;;;8376:62;-1:-1:-1;;;8454:18:1;;;8447:40;8504:19;;39721:110:0;8123:406:1;39721:110:0;39842:19;39864:10;:8;:10::i;:::-;39842:32;-1:-1:-1;39892:24:0;:7;39842:32;39892:11;:24::i;:::-;39885:31;39602:322;-1:-1:-1;;;39602:322:0:o;41475:473::-;12056:7;12083:6;-1:-1:-1;;;;;12083:6:0;10814:10;12230:23;12222:68;;;;-1:-1:-1;;;12222:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;41555:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;41547:56;;;::::0;-1:-1:-1;;;41547:56:0;;8736:2:1;41547:56:0::1;::::0;::::1;8718:21:1::0;8775:2;8755:18;;;8748:30;8814:25;8794:18;;;8787:53;8857:18;;41547:56:0::1;8534:347:1::0;41547:56:0::1;41619:9;41614:327;41638:9;:16:::0;41634:20;::::1;41614:327;;;41696:7;-1:-1:-1::0;;;;;41680:23:0::1;:9;41690:1;41680:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;41680:12:0::1;:23:::0;41676:254:::1;;41739:9;41749:16:::0;;:20:::1;::::0;41768:1:::1;::::0;41749:20:::1;:::i;:::-;41739:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;41724:9:::1;:12:::0;;-1:-1:-1;;;;;41739:31:0;;::::1;::::0;41734:1;;41724:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;41724:46:0::1;-1:-1:-1::0;;;;;41724:46:0;;::::1;;::::0;;41789:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;41828:11:::1;:20:::0;;;;:28;;-1:-1:-1;;41828:28:0::1;::::0;;41875:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;41875:15:0;;;;;-1:-1:-1;;;;;;41875:15:0::1;::::0;;;;;41614:327:::1;41475:473:::0;:::o;41676:254::-:1;41656:3:::0;::::1;::::0;::::1;:::i;:::-;;;;41614:327;;;;41475:473:::0;:::o;37055:300::-;10814:10;37170:4;37264:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;37264:34:0;;;;;;;;;;37170:4;;37192:133;;37242:7;;37264:50;;37303:10;37264:38;:50::i;38101:739::-;10814:10;38153:14;38216:19;;;:11;:19;;;;;;;;38215:20;38193:114;;;;-1:-1:-1;;;38193:114:0;;9754:2:1;38193:114:0;;;9736:21:1;9793:2;9773:18;;;9766:30;9832:34;9812:18;;;9805:62;-1:-1:-1;;;9883:18:1;;;9876:42;9935:19;;38193:114:0;9552:408:1;38193:114:0;38350:12;38377:18;38410:15;38440:17;38471:20;38483:7;38471:11;:20::i;:::-;38320:171;;;;;;;;;38503:15;38526:159;38552:7;38574:4;38593:10;38618:7;38640:9;38664:10;:8;:10::i;:::-;38526:11;:159::i;:::-;-1:-1:-1;;;;;;;38716:15:0;;;;;;:7;:15;;;;;;38502:183;;-1:-1:-1;38716:28:0;;38502:183;38716:19;:28::i;:::-;-1:-1:-1;;;;;38698:15:0;;;;;;:7;:15;;;;;:46;38765:7;;:20;;38777:7;38765:11;:20::i;:::-;38755:7;:30;38809:10;;:23;;38824:7;38809:14;:23::i;:::-;38796:10;:36;-1:-1:-1;;;;;;;38101:739:0:o;41956:111::-;12056:7;12083:6;-1:-1:-1;;;;;12083:6:0;10814:10;12230:23;12222:68;;;;-1:-1:-1;;;12222:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;42025:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;42025:34:0::1;42055:4;42025:34;::::0;;41956:111::o;38848:746::-;38966:7;39010;;38999;:18;;38991:62;;;;-1:-1:-1;;;38991:62:0;;10167:2:1;38991:62:0;;;10149:21:1;10206:2;10186:18;;;10179:30;10245:33;10225:18;;;10218:61;10296:18;;38991:62:0;9965:355:1;38991:62:0;39096:12;39123:18;39156:15;39186:17;39217:20;39229:7;39217:11;:20::i;:::-;39066:171;;;;;;;;;39249:15;39266:23;39295:159;39321:7;39343:4;39362:10;39387:7;39409:9;39433:10;:8;:10::i;39295:159::-;39248:206;;;;;39472:17;39467:120;;-1:-1:-1;39513:7:0;-1:-1:-1;39506:14:0;;-1:-1:-1;;;;39506:14:0;39467:120;39560:15;-1:-1:-1;39553:22:0;;-1:-1:-1;;;;;39553:22:0;43160:748;12056:7;12083:6;-1:-1:-1;;;;;12083:6:0;10814:10;12230:23;12222:68;;;;-1:-1:-1;;;12222:68:0;;;;;;;:::i;:::-;43526:7:::1;43513:6;:10;;;:20;;;;;;;;;;;;;;;;;;43561:11;43544:6;:14;;;:28;;;;;;;;;;;;;;;;;;43602:13;43583:6;:16;;;:32;;;;;;;;;;;;;;;;;;43643:11;43626:6;:14;;;:28;;;;;;;;;;;;;;;;;;43683:12;43665:6;:15;;;:30;;;;;;;;;;;;;;;;;;43722:8;43708:7;:11;;;:22;;;;;;;;;;;;;;;;;;43759:12;43741:7;:15;;;:30;;;;;;;;;;;;;;;;;;43802:14;43782:7;:17;;;:34;;;;;;;;;;;;;;;;;;43845:12;43827:7;:15;;;:30;;;;;;;;;;;;;;;;;;43887:13;43868:7;:16;;;:32;;;;;;;;;;;;;;;;;;43160:748:::0;;;;;;;;;;:::o;42438:356::-;12056:7;12083:6;-1:-1:-1;;;;;12083:6:0;10814:10;12230:23;12222:68;;;;-1:-1:-1;;;12222:68:0;;;;;;;:::i;:::-;42619:7:::1;:17:::0;;::::1;42759:27:::0;;::::1;-1:-1:-1::0;;;42759:27:0::1;-1:-1:-1::0;;;;42723:25:0;;::::1;-1:-1:-1::0;;;42723:25:0::1;-1:-1:-1::0;;;;42683:29:0;;::::1;::::0;::::1;42723:25:::0;;;;-1:-1:-1;;42647:25:0;;::::1;-1:-1:-1::0;;;42647:25:0::1;-1:-1:-1::0;;42647:25:0;;;42619:17;;;::::1;42647:25:::0;;;;::::1;42723::::0;;;;;;;;;;;::::1;42759:27:::0;;;::::1;::::0;;;::::1;::::0;;42438:356::o;41135:332::-;12056:7;12083:6;-1:-1:-1;;;;;12083:6:0;10814:10;12230:23;12222:68;;;;-1:-1:-1;;;12222:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;41216:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;41215:21;41207:61;;;::::0;-1:-1:-1;;;41207:61:0;;10527:2:1;41207:61:0::1;::::0;::::1;10509:21:1::0;10566:2;10546:18;;;10539:30;10605:29;10585:18;;;10578:57;10652:18;;41207:61:0::1;10325:351:1::0;41207:61:0::1;-1:-1:-1::0;;;;;41283:16:0;::::1;41302:1;41283:16:::0;;;:7:::1;:16;::::0;;;;;:20;41279:109:::1;;-1:-1:-1::0;;;;;41359:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;41339:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;41320:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;41279:109:::1;-1:-1:-1::0;;;;;41398:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;41398:27:0::1;41421:4;41398:27:::0;;::::1;::::0;;;41436:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;41436:23:0::1;::::0;;::::1;::::0;;41135:332::o;35795:198::-;-1:-1:-1;;;;;35885:20:0;;35861:7;35885:20;;;:11;:20;;;;;;;;35881:49;;;-1:-1:-1;;;;;;35914:16:0;;;;;:7;:16;;;;;;;35795:198::o;35881:49::-;-1:-1:-1;;;;;35968:16:0;;;;;;:7;:16;;;;;;35948:37;;:19;:37::i;12661:103::-;12056:7;12083:6;-1:-1:-1;;;;;12083:6:0;10814:10;12230:23;12222:68;;;;-1:-1:-1;;;12222:68:0;;;;;;;:::i;:::-;12726:30:::1;12753:1;12726:18;:30::i;:::-;12661:103::o:0;42316:114::-;12056:7;12083:6;-1:-1:-1;;;;;12083:6:0;10814:10;12230:23;12222:68;;;;-1:-1:-1;;;12222:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;42385:29:0::1;42417:5;42385:29:::0;;;:20:::1;:29;::::0;;;;:37;;-1:-1:-1;;42385:37:0::1;::::0;;42316:114::o;35506:87::-;35545:13;35578:7;35571:14;;;;;:::i;37363:400::-;37483:4;37505:228;10814:10;37555:7;37577:145;37634:15;37577:145;;;;;;;;;;;;;;;;;10814:10;37577:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;37577:34:0;;;;;;;;;;;;:38;:145::i;36001:199::-;36106:4;36128:42;10814:10;36152:9;36163:6;36128:9;:42::i;44208:172::-;12056:7;12083:6;-1:-1:-1;;;;;12083:6:0;10814:10;12230:23;12222:68;;;;-1:-1:-1;;;12222:68:0;;;;;;;:::i;:::-;44335:37:::1;44366:5;44335:26;44347:13;44335:7;;:11;;:26;;;;:::i;:::-;:30:::0;::::1;:37::i;:::-;44318:14;:54:::0;-1:-1:-1;44208:172:0:o;40589:538::-;12056:7;12083:6;-1:-1:-1;;;;;12083:6:0;10814:10;12230:23;12222:68;;;;-1:-1:-1;;;12222:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40676:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;40668:65;;;::::0;-1:-1:-1;;;40668:65:0;;10883:2:1;40668:65:0::1;::::0;::::1;10865:21:1::0;10922:2;10902:18;;;10895:30;10961:28;10941:18;;;10934:56;11007:18;;40668:65:0::1;10681:350:1::0;40668:65:0::1;40749:9;40744:376;40768:16;:23:::0;40764:27;::::1;40744:376;;;40840:7;-1:-1:-1::0;;;;;40817:30:0::1;:16;40834:1;40817:19;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;40817:19:0::1;:30:::0;40813:296:::1;;40890:16;40929:23:::0;;:27:::1;::::0;40955:1:::1;::::0;40929:27:::1;:::i;:::-;40890:85;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;40868:16:::1;:19:::0;;-1:-1:-1;;;;;40890:85:0;;::::1;::::0;40885:1;;40868:19;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:107:::0;;-1:-1:-1;;;;;;40868:107:0::1;-1:-1:-1::0;;;;;40868:107:0;;::::1;;::::0;;40994:26;;::::1;::::0;;:17:::1;:26:::0;;;;;;:34;;-1:-1:-1;;40994:34:0::1;::::0;;41047:16:::1;:22:::0;;;::::1;;;;:::i;40813:296::-;40793:3:::0;::::1;::::0;::::1;:::i;:::-;;;;40744:376;;44388:171:::0;12056:7;12083:6;-1:-1:-1;;;;;12083:6:0;10814:10;12230:23;12222:68;;;;-1:-1:-1;;;12222:68:0;;;;;;;:::i;:::-;44465:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;44465:32:0::1;-1:-1:-1::0;;;;44465:32:0;;::::1;;::::0;;44513:38:::1;::::0;::::1;::::0;::::1;::::0;44489:8;1745:14:1;1738:22;1720:41;;1708:2;1693:18;;1580:187;44513:38:0::1;;;;;;;;44388:171:::0;:::o;39934:123::-;12056:7;12083:6;-1:-1:-1;;;;;12083:6:0;10814:10;12230:23;12222:68;;;;-1:-1:-1;;;12222:68:0;;;;;;;:::i;:::-;40021:15:::1;:28:::0;;-1:-1:-1;;;;;;40021:28:0::1;-1:-1:-1::0;;;;;40021:28:0;;;::::1;::::0;;;::::1;::::0;;39934:123::o;44064:136::-;12056:7;12083:6;-1:-1:-1;;;;;12083:6:0;10814:10;12230:23;12222:68;;;;-1:-1:-1;;;12222:68:0;;;;;;;:::i;:::-;44156:36:::1;44186:5;44156:25;44168:12;44156:7;;:11;;:25;;;;:::i;:36::-;44141:12;:51:::0;-1:-1:-1;44064:136:0:o;42075:110::-;12056:7;12083:6;-1:-1:-1;;;;;12083:6:0;10814:10;12230:23;12222:68;;;;-1:-1:-1;;;12222:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;42142:27:0::1;42172:5;42142:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;42142:35:0::1;::::0;;42075:110::o;43916:140::-;12056:7;12083:6;-1:-1:-1;;;;;12083:6:0;10814:10;12230:23;12222:68;;;;-1:-1:-1;;;12222:68:0;;;;;;;:::i;:::-;44007:29:::1;:41:::0;43916:140::o;12919:201::-;12056:7;12083:6;-1:-1:-1;;;;;12083:6:0;10814:10;12230:23;12222:68;;;;-1:-1:-1;;;12222:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13008:22:0;::::1;13000:73;;;::::0;-1:-1:-1;;;13000:73:0;;11238:2:1;13000:73:0::1;::::0;::::1;11220:21:1::0;11277:2;11257:18;;;11250:30;11316:34;11296:18;;;11289:62;-1:-1:-1;;;11367:18:1;;;11360:36;11413:19;;13000:73:0::1;11036:402:1::0;13000:73:0::1;13084:28;13103:8;13084:18;:28::i;:::-;12919:201:::0;:::o;50024:371::-;-1:-1:-1;;;;;50151:19:0;;50143:68;;;;-1:-1:-1;;;50143:68:0;;11645:2:1;50143:68:0;;;11627:21:1;11684:2;11664:18;;;11657:30;11723:34;11703:18;;;11696:62;-1:-1:-1;;;11774:18:1;;;11767:34;11818:19;;50143:68:0;11443:400:1;50143:68:0;-1:-1:-1;;;;;50230:21:0;;50222:68;;;;-1:-1:-1;;;50222:68:0;;12050:2:1;50222:68:0;;;12032:21:1;12089:2;12069:18;;;12062:30;12128:34;12108:18;;;12101:62;-1:-1:-1;;;12179:18:1;;;12172:32;12221:19;;50222:68:0;11848:398:1;50222:68:0;-1:-1:-1;;;;;50303:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;50355:32;;2178:25:1;;;50355:32:0;;2151:18:1;50355:32:0;;;;;;;50024:371;;;:::o;50403:2222::-;-1:-1:-1;;;;;50525:18:0;;50517:68;;;;-1:-1:-1;;;50517:68:0;;12453:2:1;50517:68:0;;;12435:21:1;12492:2;12472:18;;;12465:30;12531:34;12511:18;;;12504:62;-1:-1:-1;;;12582:18:1;;;12575:35;12627:19;;50517:68:0;12251:401:1;50517:68:0;-1:-1:-1;;;;;50604:16:0;;50596:64;;;;-1:-1:-1;;;50596:64:0;;12859:2:1;50596:64:0;;;12841:21:1;12898:2;12878:18;;;12871:30;12937:34;12917:18;;;12910:62;-1:-1:-1;;;12988:18:1;;;12981:33;13031:19;;50596:64:0;12657:399:1;50596:64:0;50688:1;50679:6;:10;50671:64;;;;-1:-1:-1;;;50671:64:0;;13263:2:1;50671:64:0;;;13245:21:1;13302:2;13282:18;;;13275:30;13341:34;13321:18;;;13314:62;-1:-1:-1;;;13392:18:1;;;13385:39;13441:19;;50671:64:0;13061:405:1;50671:64:0;-1:-1:-1;;;;;50755:23:0;;;;;;:17;:23;;;;;;;;50754:24;50746:56;;;;-1:-1:-1;;;50746:56:0;;13673:2:1;50746:56:0;;;13655:21:1;13712:2;13692:18;;;13685:30;-1:-1:-1;;;13731:18:1;;;13724:49;13790:18;;50746:56:0;13471:343:1;50746:56:0;50840:10;50822:29;;;;:17;:29;;;;;;;;50821:30;50813:54;;;;-1:-1:-1;;;50813:54:0;;14021:2:1;50813:54:0;;;14003:21:1;14060:2;14040:18;;;14033:30;-1:-1:-1;;;14079:18:1;;;14072:41;14130:18;;50813:54:0;13819:335:1;50813:54:0;50905:9;50887:28;;;;:17;:28;;;;;;;;50886:29;50878:53;;;;-1:-1:-1;;;50878:53:0;;14021:2:1;50878:53:0;;;14003:21:1;14060:2;14040:18;;;14033:30;-1:-1:-1;;;14079:18:1;;;14072:41;14130:18;;50878:53:0;13819:335:1;50878:53:0;51226:28;51257:24;51275:4;51257:9;:24::i;:::-;51226:55;;51322:12;;51298:20;:36;51294:104;;-1:-1:-1;51374:12:0;;51294:104;51461:29;;51437:53;;;;;;;51519;;-1:-1:-1;51556:16:0;;-1:-1:-1;;;51556:16:0;;;;51555:17;51519:53;:91;;;;;51597:13;-1:-1:-1;;;;;51589:21:0;:4;-1:-1:-1;;;;;51589:21:0;;;51519:91;:129;;;;-1:-1:-1;51627:21:0;;-1:-1:-1;;;51627:21:0;;;;51519:129;51501:318;;;51698:29;;51675:52;;51771:36;51786:20;51771:14;:36::i;:::-;-1:-1:-1;;;;;52012:24:0;;51892:12;52012:24;;;:18;:24;;;;;;51907:4;;52012:24;;;:50;;-1:-1:-1;;;;;;52040:22:0;;;;;;:18;:22;;;;;;;;52012:50;52008:98;;;-1:-1:-1;52089:5:0;52008:98;52120:7;52116:382;;;-1:-1:-1;;;;;52149:26:0;;;;;;:20;:26;;;;;;;;52148:27;:56;;;;-1:-1:-1;;;;;;52180:24:0;;;;;;:20;:24;;;;;;;;52179:25;52148:56;52144:343;;;52243:12;;52233:6;:22;;52225:74;;;;-1:-1:-1;;;52225:74:0;;14361:2:1;52225:74:0;;;14343:21:1;14400:2;14380:18;;;14373:30;14439:34;14419:18;;;14412:62;-1:-1:-1;;;14490:18:1;;;14483:38;14538:19;;52225:74:0;14159:404:1;52225:74:0;52328:13;-1:-1:-1;;;;;52322:19:0;:2;-1:-1:-1;;;;;52322:19:0;;52318:154;;52400:14;;52383:13;52393:2;52383:9;:13::i;:::-;52374:22;;:6;:22;:::i;:::-;:40;;52366:86;;;;-1:-1:-1;;;52366:86:0;;14903:2:1;52366:86:0;;;14885:21:1;14942:2;14922:18;;;14915:30;14981:34;14961:18;;;14954:62;-1:-1:-1;;;15032:18:1;;;15025:32;15074:19;;52366:86:0;14701:398:1;52366:86:0;52576:41;52591:4;52597:2;52601:6;52609:7;52576:14;:41::i;:::-;50506:2119;;;50403:2222;;;:::o;8169:240::-;8289:7;8350:12;8342:6;;;;8334:29;;;;-1:-1:-1;;;8334:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;8385:5:0;;;8169:240::o;46376:164::-;46418:7;46439:15;46456;46475:19;:17;:19::i;:::-;46438:56;;-1:-1:-1;46438:56:0;-1:-1:-1;46512:20:0;46438:56;;46512:11;:20::i;:::-;46505:27;;;;46376:164;:::o;7027:98::-;7085:7;7112:5;7116:1;7112;:5;:::i;5890:98::-;5948:7;5975:5;5979:1;5975;:5;:::i;44816:742::-;44917:7;44939;44961;44983;45005;45040:12;45055:24;45071:7;45055:15;:24::i;:::-;45040:39;;45090:18;45111:30;45133:7;45111:21;:30::i;:::-;45090:51;;45152:15;45201:28;45221:7;45201:19;:28::i;:::-;45170;45190:7;45170:19;:28::i;:::-;:59;;;;:::i;:::-;45152:77;;45240:17;45260:29;45281:7;45260:20;:29::i;:::-;45240:49;-1:-1:-1;45300:23:0;45326:33;45348:10;45326:17;:7;45338:4;45326:11;:17::i;:::-;:21;;:33::i;:::-;45300:59;-1:-1:-1;45388:28:0;45300:59;45408:7;45388:19;:28::i;:::-;45370:46;-1:-1:-1;45445:30:0;45370:46;45465:9;45445:19;:30::i;:::-;45427:48;45513:4;;-1:-1:-1;45519:10:0;;-1:-1:-1;45531:7:0;;-1:-1:-1;45519:10:0;-1:-1:-1;44816:742:0;;-1:-1:-1;;;44816:742:0:o;45566:802::-;45819:7;;;;45916:24;:7;45928:11;45916;:24::i;:::-;45898:42;-1:-1:-1;45951:12:0;45966:21;:4;45975:11;45966:8;:21::i;:::-;45951:36;-1:-1:-1;45998:18:0;46019:27;:10;46034:11;46019:14;:27::i;:::-;45998:48;-1:-1:-1;46057:15:0;46075:24;:7;46087:11;46075;:24::i;:::-;46057:42;-1:-1:-1;46110:17:0;46130:26;:9;46144:11;46130:13;:26::i;:::-;46110:46;-1:-1:-1;46167:23:0;46193:117;46110:46;46193:88;46273:7;46193:88;46243:10;46193:88;:7;46219:4;46193:25;:31::i;:117::-;46329:7;;;;-1:-1:-1;46355:4:0;;-1:-1:-1;45566:802:0;;-1:-1:-1;;;;;;;;;;;45566:802:0:o;6271:98::-;6329:7;6356:5;6360:1;6356;:5;:::i;13280:191::-;13354:16;13373:6;;-1:-1:-1;;;;;13390:17:0;;;-1:-1:-1;;;;;;13390:17:0;;;;;;13423:40;;13373:6;;;;;;;13423:40;;13354:16;13423:40;13343:128;13280:191;:::o;6628:98::-;6686:7;6713:5;6717:1;6713;:5;:::i;52633:1631::-;33902:16;:23;;-1:-1:-1;;;;33902:23:0;-1:-1:-1;;;33902:23:0;;;52934:7:::1;:15:::0;52904:6:::1;:14:::0;33902:23;;52934:15:::1;-1:-1:-1::0;;;52934:15:0;;::::1;::::0;::::1;::::0;52904:14;;::::1;::::0;::::1;::::0;-1:-1:-1;;;52873:15:0;;::::1;::::0;::::1;::::0;52843:14;;::::1;::::0;::::1;::::0;52778:49:::1;::::0;52810:17;;;;::::1;::::0;::::1;::::0;52778:16;::::1;;:49;:::i;:::-;:79;;;;:::i;:::-;:110;;;;:::i;:::-;:140;;;;:::i;:::-;:171;;;;:::i;:::-;52777:177;::::0;52953:1:::1;52777:177;:::i;:::-;53030:7;:17:::0;53011:6:::1;:16:::0;52755:199:::1;::::0;;::::1;::::0;-1:-1:-1;52965:32:0::1;::::0;52755:199;;53011:36:::1;::::0;53030:17;;;;::::1;::::0;::::1;::::0;53011:16;;::::1;;:36;:::i;:::-;53001:47;::::0;::::1;;:6:::0;:47:::1;:::i;:::-;53000:63;;;;:::i;:::-;52965:98:::0;-1:-1:-1;53074:14:0::1;53091:33;52965:98:::0;53091:6;:33:::1;:::i;:::-;53162:44;::::0;-1:-1:-1;;;53162:44:0;;53200:4:::1;53162:44;::::0;::::1;1190:51:1::0;53074:50:0;;-1:-1:-1;53137:22:0::1;::::0;-1:-1:-1;;;;;53169:11:0::1;53162:29;::::0;::::1;::::0;1163:18:1;;53162:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;53137:69;;53219:25;53237:6;53219:17;:25::i;:::-;53280:44;::::0;-1:-1:-1;;;53280:44:0;;53318:4:::1;53280:44;::::0;::::1;1190:51:1::0;53257:20:0::1;::::0;53327:14;;-1:-1:-1;;;;;53287:11:0::1;53280:29;::::0;::::1;::::0;1163:18:1;;53280:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:61;;;;:::i;:::-;53424:7;:17:::0;53405:6:::1;:16:::0;53257:84;;-1:-1:-1;53352:19:0::1;::::0;53405:36:::1;::::0;53424:17:::1;::::0;;;;::::1;::::0;::::1;::::0;53405:16;;;::::1;;:36;:::i;:::-;53390:52;::::0;::::1;;:11:::0;:52:::1;:::i;:::-;53374:69;::::0;:12;:69:::1;:::i;:::-;53521:7;:17:::0;53502:6:::1;:16:::0;53352:91;;-1:-1:-1;53454:30:0::1;::::0;53502:36:::1;::::0;53521:17:::1;::::0;;;;::::1;::::0;::::1;::::0;53502:16;;;::::1;;:36;:::i;:::-;53487:52;::::0;::::1;;:11:::0;:52:::1;:::i;:::-;53454:85:::0;-1:-1:-1;53556:26:0;;53552:155:::1;;53629:66;53646:24;53672:22;53629:16;:66::i;:::-;53808:7;:15:::0;53791:6:::1;:14:::0;53751:18:::1;::::0;53791:32:::1;::::0;53808:15:::1;-1:-1:-1::0;;;53808:15:0;;;::::1;::::0;::::1;::::0;53791:14;;::::1;;:32;:::i;:::-;53772:52;;:15;:11:::0;53786:1:::1;53772:15;:::i;:::-;:52;;;;:::i;:::-;53892:7;:15:::0;53875:6:::1;:14:::0;53751:73;;-1:-1:-1;53835:18:0::1;::::0;53911:21:::1;::::0;53875:32:::1;::::0;53892:15:::1;-1:-1:-1::0;;;53892:15:0;;;::::1;::::0;::::1;::::0;53875:14;;::::1;;:32;:::i;:::-;53856:52;;:15;:11:::0;53870:1:::1;53856:15;:::i;:::-;:52;;;;:::i;:::-;:76;:168;;54008:7;:15:::0;53991:6:::1;:14:::0;:32:::1;::::0;54008:15:::1;-1:-1:-1::0;;;54008:15:0;;;::::1;::::0;::::1;::::0;53991:14;;;::::1;;:32;:::i;:::-;53972:52;;:15;:11:::0;53986:1:::1;53972:15;:::i;:::-;:52;;;;:::i;:::-;53856:168;;;53948:21;53856:168;53835:189:::0;-1:-1:-1;54041:14:0;;54037:104:::1;;54101:15;::::0;54072:57:::1;::::0;-1:-1:-1;;;54072:57:0;;-1:-1:-1;;;;;54101:15:0;;::::1;54072:57;::::0;::::1;16362:51:1::0;16429:18;;;16422:34;;;54079:11:0::1;54072:28:::0;;::::1;::::0;::::1;::::0;16335:18:1;;54072:57:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;54037:104;54157:14:::0;;54153:104:::1;;54217:15;::::0;54188:57:::1;::::0;-1:-1:-1;;;54188:57:0;;-1:-1:-1;;;;;54217:15:0;;::::1;54188:57;::::0;::::1;16362:51:1::0;16429:18;;;16422:34;;;54195:11:0::1;54188:28:::0;;::::1;::::0;::::1;::::0;16335:18:1;;54188:57:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;54153:104;-1:-1:-1::0;;33948:16:0;:24;;-1:-1:-1;;;;33948:24:0;;;-1:-1:-1;;;;;;;;52633:1631:0:o;55641:1022::-;55796:7;55792:230;;;55820:14;49146:7;:11;;-1:-1:-1;;49249:15:0;;;49103:169;55820:14;55863:13;-1:-1:-1;;;;;55853:23:0;:6;-1:-1:-1;;;;;55853:23:0;;55849:72;;49327:6;:10;49317:7;:20;;49327:10;;;;-1:-1:-1;;49348:32:0;;;;;;;49364:16;;;;;;49348:32;;-1:-1:-1;;49430:30:0;-1:-1:-1;;;49405:14:0;;;;;49391:28;-1:-1:-1;;;;49430:30:0;;-1:-1:-1;;;49445:15:0;;;;;49430:30;;-1:-1:-1;;;;49471:28:0;-1:-1:-1;;;49485:14:0;;;;;;;;49471:28;;;;;;;;;55897:8;55952:13;-1:-1:-1;;;;;55939:26:0;:9;-1:-1:-1;;;;;55939:26:0;;55935:76;;49563:7;:11;49553:7;:21;;49563:11;;;;-1:-1:-1;;49585:33:0;;;;;;;49601:17;;;;;;49585:33;;-1:-1:-1;;49669:31:0;-1:-1:-1;;;49643:15:0;;;;;49629:29;-1:-1:-1;;;;49669:31:0;;-1:-1:-1;;;49684:16:0;;;;;49669:31;;-1:-1:-1;;;;49711:29:0;-1:-1:-1;;;49725:15:0;;;;;;;;49711:29;;;;;;;;;55986:9;-1:-1:-1;;;;;56038:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;56062:22:0;;;;;;:11;:22;;;;;;;;56061:23;56038:46;56034:597;;;56101:48;56123:6;56131:9;56142:6;56101:21;:48::i;:::-;56034:597;;;-1:-1:-1;;;;;56172:19:0;;;;;;:11;:19;;;;;;;;56171:20;:46;;;;-1:-1:-1;;;;;;56195:22:0;;;;;;:11;:22;;;;;;;;56171:46;56167:464;;;56234:46;56254:6;56262:9;56273:6;56234:19;:46::i;56167:464::-;-1:-1:-1;;;;;56303:19:0;;;;;;:11;:19;;;;;;;;56302:20;:47;;;;-1:-1:-1;;;;;;56327:22:0;;;;;;:11;:22;;;;;;;;56326:23;56302:47;56298:333;;;56366:44;56384:6;56392:9;56403:6;56366:17;:44::i;56298:333::-;-1:-1:-1;;;;;56432:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;56455:22:0;;;;;;:11;:22;;;;;;;;56432:45;56428:203;;;56494:48;56516:6;56524:9;56535:6;56494:21;:48::i;56428:203::-;56575:44;56593:6;56601:9;56612:6;56575:17;:44::i;:::-;56641:14;49146:7;:11;;-1:-1:-1;;49249:15:0;;;49103:169;56641:14;55641:1022;;;;:::o;46548:605::-;46646:7;;46682;;46599;;;;;46700:338;46724:9;:16;46720:20;;46700:338;;;46808:7;46784;:21;46792:9;46802:1;46792:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;46792:12:0;46784:21;;;;;;;;;;;;;:31;;:83;;;46860:7;46836;:21;46844:9;46854:1;46844:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;46844:12:0;46836:21;;;;;;;;;;;;;:31;46784:83;46762:146;;;46891:7;;46900;;46883:25;;;;;;;46548:605;;:::o;46762:146::-;46933:34;46945:7;:21;46953:9;46963:1;46953:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;46953:12:0;46945:21;;;;;;;;;;;;;46933:7;;:11;:34::i;:::-;46923:44;;46992:34;47004:7;:21;47012:9;47022:1;47012:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;47012:12:0;47004:21;;;;;;;;;;;;;46992:7;;:11;:34::i;:::-;46982:44;-1:-1:-1;46742:3:0;;;;:::i;:::-;;;;46700:338;;;-1:-1:-1;47074:7:0;;47062;;:20;;:11;:20::i;:::-;47052:7;:30;47048:61;;;47092:7;;47101;;47084:25;;;;;;46548:605;;:::o;47048:61::-;47128:7;;47137;;-1:-1:-1;46548:605:0;-1:-1:-1;46548:605:0:o;48279:130::-;48382:7;;48343;;48370:31;;48395:5;;48370:20;;:7;;48382;;48370:11;:20::i;48417:174::-;48558:13;;48514:7;;48546:37;;48577:5;;48546:26;;:7;;48558:13;;;;;48546:11;:26::i;48957:138::-;49064:11;;49025:7;;49052:35;;49081:5;;49052:24;;:7;;-1:-1:-1;;;49064:11:0;;;;49052;:24::i;48599:170::-;48738:11;;48694:7;;48726:35;;48755:5;;48726:24;;:7;;-1:-1:-1;;;48738:11:0;;;;48726;:24::i;48777:172::-;48917:12;;48873:7;;48905:36;;48935:5;;48905:25;;:7;;-1:-1:-1;;;48917:12:0;;;;48905:11;:25::i;54272:649::-;54423:16;;;54437:1;54423:16;;;;;;;;54399:21;;54423:16;;;;;;;;;;-1:-1:-1;54423:16:0;54399:40;;54468:4;54450;54455:1;54450:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;54450:23:0;;;-1:-1:-1;;;;;54450:23:0;;;;;54494:11;54484:4;54489:1;54484:7;;;;;;;;:::i;:::-;;;;;;:21;-1:-1:-1;;;;;54484:21:0;;;-1:-1:-1;;;;;54484:21:0;;;;;54518:62;54535:4;54550:15;54568:11;54518:8;:62::i;:::-;54641:251;;-1:-1:-1;;;54641:251:0;;-1:-1:-1;;;;;54641:15:0;:69;;;;:251;;54729:11;;54759:1;;54807:4;;54838;;54862:15;;54641:251;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;54593:321;;;54328:593;54272:649;:::o;54929:631::-;55082:62;55099:4;55114:15;55132:11;55082:8;:62::i;:::-;55208:324;;-1:-1:-1;;;55208:324:0;;55263:4;55208:324;;;18231:34:1;;;-1:-1:-1;;;;;55287:11:0;18301:15:1;;18281:18;;;18274:43;18333:18;;;18326:34;;;18376:18;;;18369:34;;;-1:-1:-1;18419:19:1;;;18412:35;;;18463:19;;;18456:35;18507:19;;;18500:44;;;;55502:15:0;18560:19:1;;;18553:35;55208:15:0;:28;;;;18165:19:1;;55208:324:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;55208:324:0;;;;;;;;-1:-1:-1;;55208:324:0;;;;;;;;;;;;:::i;:::-;;;55157:396;;;;;;54929:631;;:::o;58554:957::-;58705:23;58743:12;58770:18;58803:15;58833:17;58864:20;58876:7;58864:11;:20::i;:::-;58690:194;;;;;;;;;;58896:15;58913:23;58938:12;58954:159;58980:7;59002:4;59021:10;59046:7;59068:9;59092:10;:8;:10::i;58954:159::-;-1:-1:-1;;;;;59144:15:0;;;;;;:7;:15;;;;;;58895:218;;-1:-1:-1;58895:218:0;;-1:-1:-1;58895:218:0;-1:-1:-1;59144:28:0;;59164:7;59144:19;:28::i;:::-;-1:-1:-1;;;;;59126:15:0;;;;;;:7;:15;;;;;;;;:46;;;;59201:7;:15;;;;:28;;59221:7;59201:19;:28::i;:::-;-1:-1:-1;;;;;59183:15:0;;;;;;;:7;:15;;;;;;:46;;;;59261:18;;;;;;;:39;;59284:15;59261:22;:39::i;:::-;-1:-1:-1;;;;;59240:18:0;;;;;;:7;:18;;;;;:60;59311:26;59326:10;59311:14;:26::i;:::-;59348:23;59363:7;59348:14;:23::i;:::-;59382:27;59399:9;59382:16;:27::i;:::-;59420:23;59432:4;59438;59420:11;:23::i;:::-;59476:9;-1:-1:-1;;;;;59459:44:0;59468:6;-1:-1:-1;;;;;59459:44:0;;59487:15;59459:44;;;;2178:25:1;;2166:2;2151:18;;2032:177;59459:44:0;;;;;;;;58679:832;;;;;;;;58554:957;;;:::o;57577:969::-;57726:23;57764:12;57791:18;57824:15;57854:17;57885:20;57897:7;57885:11;:20::i;:::-;57711:194;;;;;;;;;;57917:15;57934:23;57959:12;57975:159;58001:7;58023:4;58042:10;58067:7;58089:9;58113:10;:8;:10::i;57975:159::-;-1:-1:-1;;;;;58165:15:0;;;;;;:7;:15;;;;;;57916:218;;-1:-1:-1;57916:218:0;;-1:-1:-1;57916:218:0;-1:-1:-1;58165:28:0;;57916:218;58165:19;:28::i;:::-;-1:-1:-1;;;;;58147:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;58225:18;;;;;:7;:18;;;;;:39;;58248:15;58225:22;:39::i;:::-;-1:-1:-1;;;;;58204:18:0;;;;;;:7;:18;;;;;;;;:60;;;;58296:7;:18;;;;:39;;58319:15;58296:22;:39::i;56671:896::-;56818:23;56856:12;56883:18;56916:15;56946:17;56977:20;56989:7;56977:11;:20::i;:::-;56803:194;;;;;;;;;;57009:15;57026:23;57051:12;57067:159;57093:7;57115:4;57134:10;57159:7;57181:9;57205:10;:8;:10::i;57067:159::-;-1:-1:-1;;;;;57257:15:0;;;;;;:7;:15;;;;;;57008:218;;-1:-1:-1;57008:218:0;;-1:-1:-1;57008:218:0;-1:-1:-1;57257:28:0;;57008:218;57257:19;:28::i;59519:1028::-;59670:23;59708:12;59735:18;59768:15;59798:17;59829:20;59841:7;59829:11;:20::i;:::-;59655:194;;;;;;;;;;59861:15;59878:23;59903:12;59919:159;59945:7;59967:4;59986:10;60011:7;60033:9;60057:10;:8;:10::i;59919:159::-;-1:-1:-1;;;;;60109:15:0;;;;;;:7;:15;;;;;;59860:218;;-1:-1:-1;59860:218:0;;-1:-1:-1;59860:218:0;-1:-1:-1;60109:28:0;;60129:7;60109:19;:28::i;:::-;-1:-1:-1;;;;;60091:15:0;;;;;;:7;:15;;;;;;;;:46;;;;60166:7;:15;;;;:28;;60186:7;60166:19;:28::i;47161:355::-;47224:19;47246:10;:8;:10::i;:::-;47224:32;-1:-1:-1;47267:18:0;47288:27;:10;47224:32;47288:14;:27::i;:::-;47367:4;47351:22;;;;:7;:22;;;;;;47267:48;;-1:-1:-1;47351:38:0;;47267:48;47351:26;:38::i;:::-;47342:4;47326:22;;;;:7;:22;;;;;;;;:63;;;;47404:11;:26;;;;;;47400:108;;;47486:4;47470:22;;;;:7;:22;;;;;;:38;;47497:10;47470:26;:38::i;:::-;47461:4;47445:22;;;;:7;:22;;;;;:63;47400:108;47213:303;;47161:355;:::o;47872:399::-;47936:19;47958:10;:8;:10::i;:::-;47936:32;-1:-1:-1;47979:17:0;47999:26;:9;47936:32;47999:13;:26::i;:::-;48072:16;;-1:-1:-1;;;;;48072:16:0;48064:25;;;;:7;:25;;;;;;47979:46;;-1:-1:-1;48064:40:0;;47979:46;48064:29;:40::i;:::-;48044:16;;;-1:-1:-1;;;;;48044:16:0;;;48036:25;;;;:7;:25;;;;;;;;:68;;;;48131:16;;;;;48119:29;;:11;:29;;;;;;;48115:148;;;48199:16;;-1:-1:-1;;;;;48199:16:0;48191:25;;;;:7;:25;;;;;;:72;;48239:9;48191:29;:72::i;:::-;48171:16;;-1:-1:-1;;;;;48171:16:0;48163:25;;;;:7;:25;;;;;:100;47925:346;;47872:399;:::o;44661:147::-;44739:7;;:17;;44751:4;44739:11;:17::i;:::-;44729:7;:27;44780:10;;:20;;44795:4;44780:14;:20::i;:::-;44767:10;:33;-1:-1:-1;;44661:147:0:o;14:139:1:-;-1:-1:-1;;;;;97:31:1;;87:42;;77:70;;143:1;140;133:12;158:263;225:6;278:2;266:9;257:7;253:23;249:32;246:52;;;294:1;291;284:12;246:52;333:9;320:23;352:39;385:5;352:39;:::i;426:597::-;538:4;567:2;596;585:9;578:21;628:6;622:13;671:6;666:2;655:9;651:18;644:34;696:1;706:140;720:6;717:1;714:13;706:140;;;815:14;;;811:23;;805:30;781:17;;;800:2;777:26;770:66;735:10;;706:140;;;864:6;861:1;858:13;855:91;;;934:1;929:2;920:6;909:9;905:22;901:31;894:42;855:91;-1:-1:-1;1007:2:1;986:15;-1:-1:-1;;982:29:1;967:45;;;;1014:2;963:54;;426:597;-1:-1:-1;;;426:597:1:o;1252:323::-;1320:6;1328;1381:2;1369:9;1360:7;1356:23;1352:32;1349:52;;;1397:1;1394;1387:12;1349:52;1436:9;1423:23;1455:39;1488:5;1455:39;:::i;:::-;1513:5;1565:2;1550:18;;;;1537:32;;-1:-1:-1;;;1252:323:1:o;2214:159::-;2281:20;;2341:6;2330:18;;2320:29;;2310:57;;2363:1;2360;2353:12;2310:57;2214:159;;;:::o;2378:474::-;2468:6;2476;2484;2492;2500;2553:3;2541:9;2532:7;2528:23;2524:33;2521:53;;;2570:1;2567;2560:12;2521:53;2593:28;2611:9;2593:28;:::i;:::-;2583:38;;2640:37;2673:2;2662:9;2658:18;2640:37;:::i;:::-;2630:47;;2696:37;2729:2;2718:9;2714:18;2696:37;:::i;:::-;2686:47;;2752:37;2785:2;2774:9;2770:18;2752:37;:::i;:::-;2742:47;;2808:38;2841:3;2830:9;2826:19;2808:38;:::i;:::-;2798:48;;2378:474;;;;;;;;:::o;3092:472::-;3169:6;3177;3185;3238:2;3226:9;3217:7;3213:23;3209:32;3206:52;;;3254:1;3251;3244:12;3206:52;3293:9;3280:23;3312:39;3345:5;3312:39;:::i;:::-;3370:5;-1:-1:-1;3427:2:1;3412:18;;3399:32;3440:41;3399:32;3440:41;:::i;:::-;3092:472;;3500:7;;-1:-1:-1;;;3554:2:1;3539:18;;;;3526:32;;3092:472::o;4097:180::-;4156:6;4209:2;4197:9;4188:7;4184:23;4180:32;4177:52;;;4225:1;4222;4215:12;4177:52;-1:-1:-1;4248:23:1;;4097:180;-1:-1:-1;4097:180:1:o;4471:118::-;4557:5;4550:13;4543:21;4536:5;4533:32;4523:60;;4579:1;4576;4569:12;4594:309;4659:6;4667;4720:2;4708:9;4699:7;4695:23;4691:32;4688:52;;;4736:1;4733;4726:12;4688:52;4772:9;4759:23;4749:33;;4832:2;4821:9;4817:18;4804:32;4845:28;4867:5;4845:28;:::i;:::-;4892:5;4882:15;;;4594:309;;;;;:::o;4908:839::-;5038:6;5046;5054;5062;5070;5078;5086;5094;5102;5110;5163:3;5151:9;5142:7;5138:23;5134:33;5131:53;;;5180:1;5177;5170:12;5131:53;5203:28;5221:9;5203:28;:::i;:::-;5193:38;;5250:37;5283:2;5272:9;5268:18;5250:37;:::i;:::-;5240:47;;5306:37;5339:2;5328:9;5324:18;5306:37;:::i;:::-;5296:47;;5362:37;5395:2;5384:9;5380:18;5362:37;:::i;:::-;5352:47;;5418:38;5451:3;5440:9;5436:19;5418:38;:::i;:::-;5408:48;;5475:38;5508:3;5497:9;5493:19;5475:38;:::i;:::-;5465:48;;5532:38;5565:3;5554:9;5550:19;5532:38;:::i;:::-;5522:48;;5589:38;5622:3;5611:9;5607:19;5589:38;:::i;:::-;5579:48;;5646:38;5679:3;5668:9;5664:19;5646:38;:::i;:::-;5636:48;;5703:38;5736:3;5725:9;5721:19;5703:38;:::i;:::-;5693:48;;4908:839;;;;;;;;;;;;;:::o;5960:241::-;6016:6;6069:2;6057:9;6048:7;6044:23;6040:32;6037:52;;;6085:1;6082;6075:12;6037:52;6124:9;6111:23;6143:28;6165:5;6143:28;:::i;6206:404::-;6274:6;6282;6335:2;6323:9;6314:7;6310:23;6306:32;6303:52;;;6351:1;6348;6341:12;6303:52;6390:9;6377:23;6409:39;6442:5;6409:39;:::i;:::-;6467:5;-1:-1:-1;6524:2:1;6509:18;;6496:32;6537:41;6496:32;6537:41;:::i;6615:356::-;6817:2;6799:21;;;6836:18;;;6829:30;6895:34;6890:2;6875:18;;6868:62;6962:2;6947:18;;6615:356::o;6976:380::-;7055:1;7051:12;;;;7098;;;7119:61;;7173:4;7165:6;7161:17;7151:27;;7119:61;7226:2;7218:6;7215:14;7195:18;7192:38;7189:161;;7272:10;7267:3;7263:20;7260:1;7253:31;7307:4;7304:1;7297:15;7335:4;7332:1;7325:15;7189:161;;6976:380;;;:::o;8886:127::-;8947:10;8942:3;8938:20;8935:1;8928:31;8978:4;8975:1;8968:15;9002:4;8999:1;8992:15;9018:127;9079:10;9074:3;9070:20;9067:1;9060:31;9110:4;9107:1;9100:15;9134:4;9131:1;9124:15;9150:125;9190:4;9218:1;9215;9212:8;9209:34;;;9223:18;;:::i;:::-;-1:-1:-1;9260:9:1;;9150:125::o;9280:127::-;9341:10;9336:3;9332:20;9329:1;9322:31;9372:4;9369:1;9362:15;9396:4;9393:1;9386:15;9412:135;9451:3;9472:17;;;9469:43;;9492:18;;:::i;:::-;-1:-1:-1;9539:1:1;9528:13;;9412:135::o;14568:128::-;14608:3;14639:1;14635:6;14632:1;14629:13;14626:39;;;14645:18;;:::i;:::-;-1:-1:-1;14681:9:1;;14568:128::o;15104:217::-;15144:1;15170;15160:132;;15214:10;15209:3;15205:20;15202:1;15195:31;15249:4;15246:1;15239:15;15277:4;15274:1;15267:15;15160:132;-1:-1:-1;15306:9:1;;15104:217::o;15326:168::-;15366:7;15432:1;15428;15424:6;15420:14;15417:1;15414:21;15409:1;15402:9;15395:17;15391:45;15388:71;;;15439:18;;:::i;:::-;-1:-1:-1;15479:9:1;;15326:168::o;15499:224::-;15538:3;15566:6;15599:2;15596:1;15592:10;15629:2;15626:1;15622:10;15660:3;15656:2;15652:12;15647:3;15644:21;15641:47;;;15668:18;;:::i;:::-;15704:13;;15499:224;-1:-1:-1;;;;15499:224:1:o;15728:258::-;15767:7;15799:6;15832:2;15829:1;15825:10;15862:2;15859:1;15855:10;15918:3;15914:2;15910:12;15905:3;15902:21;15895:3;15888:11;15881:19;15877:47;15874:73;;;15927:18;;:::i;:::-;15967:13;;15728:258;-1:-1:-1;;;;15728:258:1:o;15991:184::-;16061:6;16114:2;16102:9;16093:7;16089:23;16085:32;16082:52;;;16130:1;16127;16120:12;16082:52;-1:-1:-1;16153:16:1;;15991:184;-1:-1:-1;15991:184:1:o;16467:245::-;16534:6;16587:2;16575:9;16566:7;16562:23;16558:32;16555:52;;;16603:1;16600;16593:12;16555:52;16635:9;16629:16;16654:28;16676:5;16654:28;:::i;16849:980::-;17111:4;17159:3;17148:9;17144:19;17190:6;17179:9;17172:25;17216:2;17254:6;17249:2;17238:9;17234:18;17227:34;17297:3;17292:2;17281:9;17277:18;17270:31;17321:6;17356;17350:13;17387:6;17379;17372:22;17425:3;17414:9;17410:19;17403:26;;17464:2;17456:6;17452:15;17438:29;;17485:1;17495:195;17509:6;17506:1;17503:13;17495:195;;;17574:13;;-1:-1:-1;;;;;17570:39:1;17558:52;;17665:15;;;;17630:12;;;;17606:1;17524:9;17495:195;;;-1:-1:-1;;;;;;;17746:32:1;;;;17741:2;17726:18;;17719:60;-1:-1:-1;;;17810:3:1;17795:19;17788:35;17707:3;16849:980;-1:-1:-1;;;16849:980:1:o;18599:306::-;18687:6;18695;18703;18756:2;18744:9;18735:7;18731:23;18727:32;18724:52;;;18772:1;18769;18762:12;18724:52;18801:9;18795:16;18785:26;;18851:2;18840:9;18836:18;18830:25;18820:35;;18895:2;18884:9;18880:18;18874:25;18864:35;;18599:306;;;;;:::o
Swarm Source
ipfs://b9c628b2fd378c429a074194ddd857aa0fbe3c1ab3b6f3be647bce8671b8d7b6
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.