Contract Overview
Balance:
0 ETH
ETH Value:
$0.00
My Name Tag:
Not Available
TokenTracker:
Txn Hash | Method |
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|---|
0x67e789c2054c7276894d68a0055268563d8faf240e804d70ce68318109100f6f | Approve | 65167715 | 20 days 23 hrs ago | 0x4eebbc806007c4e8d9f8d0ed4e1c10c59a1fee44 | IN | 0x9309b664682af0f3b551a5f3563ceef99badc014 | 0 ETH | 0.0000451 | |
0xa39c8d92f1b00fbfb8d655432eccbebcbba0ba840b035205241e1158d2f3196e | 0x60c06040 | 65166529 | 20 days 23 hrs ago | 0x4eebbc806007c4e8d9f8d0ed4e1c10c59a1fee44 | IN | Create: Cerebreum | 0 ETH | 0.00205187 |
[ Download CSV Export ]
Latest 7 internal transactions
[ Download CSV Export ]
Contract Name:
Cerebreum
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Arbiscan on 2023-02-27 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.9; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface 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 `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ 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; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { 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); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } 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 () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view 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 { emit OwnershipTransferred(_owner, address(0)); _owner = 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"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } /** * @dev Subtracts two int256 variables and fails on overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } /** * @dev Adds two int256 variables and fails on overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Converts to absolute value, and fails on overflow. */ function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract Cerebreum is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address public marketingWallet; uint8 private _decimals; bool public tradingActive = false; bool public swapEnabled = false; bool public rescueSwap = false; uint256 public buyTotalFees; uint256 public sellTotalFees; /******************/ // exlcude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event devWalletUpdated(address indexed newWallet, address indexed oldWallet); event rewardWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event RewardTriggered(uint256 amount); event OwnerForcedSwapBack(uint256 timestamp); constructor() ERC20("Cerebreum", "CERAI") { address _owner = 0x4EEBbc806007C4e8d9F8D0eD4e1C10C59A1FEE44; _decimals = 9; uint256 totalSupply = 1 * 1e8 * (10**_decimals); buyTotalFees = 15; sellTotalFees = 15; marketingWallet = address(0x4EEBbc806007C4e8d9F8D0eD4e1C10C59A1FEE44); // set as marketing wallet address currentRouter = 0x863e9610E9E0C3986DCc6fb2cD335e11D88f7D5f; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(currentRouter); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); // exclude from paying fees or having max transaction amount excludeFromFees(_owner, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(_owner, totalSupply); transferOwnership(_owner); } receive() external payable { } // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; } function airdropToWallets(address[] memory airdropWallets, uint256[] memory amounts) external onlyOwner returns (bool){ require(!tradingActive, "Trading is already active, cannot airdrop after launch."); require(airdropWallets.length == amounts.length, "arrays must be the same length"); require(airdropWallets.length < 200, "Can only airdrop 200 wallets per txn due to gas limits"); // allows for airdrop + launch at the same exact time, reducing delays and reducing sniper input. for(uint256 i = 0; i < airdropWallets.length; i++){ address wallet = airdropWallets[i]; uint256 amount = amounts[i]; _transfer(msg.sender, wallet, amount); } return true; } function decimals() public view override returns (uint8) { return _decimals; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } // only use this to disable swapback and send tax in form of tokens function updateRescueSwap(bool enabled) external onlyOwner(){ rescueSwap = enabled; } function updateBuyFees(uint256 _buyTotalFees) external onlyOwner { buyTotalFees = _buyTotalFees; require(buyTotalFees <= 30, "Must keep fees at 30% or less"); } function updateSellFees(uint256 _sellTotalFees) external onlyOwner { sellTotalFees = _sellTotalFees; require(sellTotalFees <= 30, "Must keep fees at 30% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function isExcludedFromFees(address account) external view returns(bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } if(amount == 0) { super._transfer(from, to, 0); return; } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance > 0; if( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ if (automatedMarketMakerPairs[to]){ if (sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); } } // on buy else if(automatedMarketMakerPairs[from]) { if (buyTotalFees > 0){ fees = amount.mul(buyTotalFees).div(100); } } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadAddress, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); if (rescueSwap){ if (contractBalance > 0){ super._transfer(address(this), marketingWallet, contractBalance); } return; } bool success; if(contractBalance == 0 ) {return;} swapTokensForEth(contractBalance); (success,) = address(marketingWallet).call{value: address(this).balance}(""); } }
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":"amount","type":"uint256"}],"name":"RewardTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"rewardWalletUpdated","type":"event"},{"inputs":[{"internalType":"address[]","name":"airdropWallets","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropToWallets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","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":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"uint256","name":"_buyTotalFees","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateRescueSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellTotalFees","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526000600660156101000a81548160ff0219169083151502179055506000600660166101000a81548160ff0219169083151502179055506000600660176101000a81548160ff0219169083151502179055503480156200006257600080fd5b506040518060400160405280600981526020017f43657265627265756d00000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f43455241490000000000000000000000000000000000000000000000000000008152508160039080519060200190620000e792919062000afa565b5080600490805190602001906200010092919062000afa565b5050506000620001156200051860201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000734eebbc806007c4e8d9f8d0ed4e1c10c59a1fee4490506009600660146101000a81548160ff021916908360ff1602179055506000600660149054906101000a900460ff16600a62000209919062000d44565b6305f5e1006200021a919062000d95565b9050600f600781905550600f600881905550734eebbc806007c4e8d9f8d0ed4e1c10c59a1fee44600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073863e9610e9e0c3986dcc6fb2cd335e11d88f7d5f905060008190508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200031a57600080fd5b505afa1580156200032f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000355919062000e60565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003b857600080fd5b505afa158015620003cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f3919062000e60565b6040518363ffffffff1660e01b81526004016200041292919062000ea3565b602060405180830381600087803b1580156200042d57600080fd5b505af115801562000442573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000468919062000e60565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620004b060a05160016200052060201b60201c565b620004c3846001620005c160201b60201c565b620004d6306001620005c160201b60201c565b620004eb61dead6001620005c160201b60201c565b620004fd84846200070e60201b60201c565b6200050e84620008bd60201b60201c565b50505050620011f9565b600033905090565b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b620005d16200051860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000663576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200065a9062000f31565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000702919062000f70565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000781576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007789062000fdd565b60405180910390fd5b620007956000838362000a9260201b60201c565b620007b18160025462000a9760201b62001b121790919060201c565b6002819055506200080f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000a9760201b62001b121790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008b1919062001010565b60405180910390a35050565b620008cd6200051860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200095f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009569062000f31565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620009d2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009c990620010a3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b505050565b600080828462000aa89190620010c5565b90508381101562000af0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ae79062001172565b60405180910390fd5b8091505092915050565b82805462000b0890620011c3565b90600052602060002090601f01602090048101928262000b2c576000855562000b78565b82601f1062000b4757805160ff191683800117855562000b78565b8280016001018555821562000b78579182015b8281111562000b7757825182559160200191906001019062000b5a565b5b50905062000b87919062000b8b565b5090565b5b8082111562000ba657600081600090555060010162000b8c565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c385780860481111562000c105762000c0f62000baa565b5b600185161562000c205780820291505b808102905062000c308562000bd9565b945062000bf0565b94509492505050565b60008262000c53576001905062000d26565b8162000c63576000905062000d26565b816001811462000c7c576002811462000c875762000cbd565b600191505062000d26565b60ff84111562000c9c5762000c9b62000baa565b5b8360020a91508482111562000cb65762000cb562000baa565b5b5062000d26565b5060208310610133831016604e8410600b841016171562000cf75782820a90508381111562000cf15762000cf062000baa565b5b62000d26565b62000d06848484600162000be6565b9250905081840481111562000d205762000d1f62000baa565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000d518262000d2d565b915062000d5e8362000d37565b925062000d8d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c41565b905092915050565b600062000da28262000d2d565b915062000daf8362000d2d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000deb5762000dea62000baa565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e288262000dfb565b9050919050565b62000e3a8162000e1b565b811462000e4657600080fd5b50565b60008151905062000e5a8162000e2f565b92915050565b60006020828403121562000e795762000e7862000df6565b5b600062000e898482850162000e49565b91505092915050565b62000e9d8162000e1b565b82525050565b600060408201905062000eba600083018562000e92565b62000ec9602083018462000e92565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f1960208362000ed0565b915062000f268262000ee1565b602082019050919050565b6000602082019050818103600083015262000f4c8162000f0a565b9050919050565b60008115159050919050565b62000f6a8162000f53565b82525050565b600060208201905062000f87600083018462000f5f565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000fc5601f8362000ed0565b915062000fd28262000f8d565b602082019050919050565b6000602082019050818103600083015262000ff88162000fb6565b9050919050565b6200100a8162000d2d565b82525050565b600060208201905062001027600083018462000fff565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006200108b60268362000ed0565b915062001098826200102d565b604082019050919050565b60006020820190508181036000830152620010be816200107c565b9050919050565b6000620010d28262000d2d565b9150620010df8362000d2d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562001117576200111662000baa565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200115a601b8362000ed0565b9150620011678262001122565b602082019050919050565b600060208201905081810360008301526200118d816200114b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620011dc57607f821691505b60208210811415620011f357620011f262001194565b5b50919050565b60805160a051613dea6200123b60003960008181610caa01526113870152600081816108ed015281816128e5015281816129d501526129fc0152613dea6000f3fe6080604052600436106101fd5760003560e01c806375f0a8741161010d578063a9059cbb116100a0578063c02466681161006f578063c024666814610758578063d85ba06314610781578063dd62ed3e146107ac578063eba4c333146107e9578063f2fde38b1461081257610204565b8063a9059cbb1461068a578063aacebbe3146106c7578063b62496f5146106f0578063bbc0c7421461072d57610204565b8063955b225b116100dc578063955b225b146105d057806395d89b41146105f95780639a7a23d614610624578063a457c2d71461064d57610204565b806375f0a8741461053a5780638a8c523c146105655780638da5cb5b1461057c578063924de9b7146105a757610204565b806339509351116101905780636a486a8e1161015f5780636a486a8e146104675780636ddd17131461049257806370a08231146104bd578063715018a6146104fa57806371fc46881461051157610204565b8063395093511461039757806349bd5a5e146103d45780634c24c51d146103ff5780634fbee1931461042a57610204565b80632307b441116101cc5780632307b441146102c757806323b872dd1461030457806327c8f83514610341578063313ce5671461036c57610204565b806306fdde0314610209578063095ea7b3146102345780631694505e1461027157806318160ddd1461029c57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e61083b565b60405161022b9190612b8e565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190612c58565b6108cd565b6040516102689190612cb3565b60405180910390f35b34801561027d57600080fd5b506102866108eb565b6040516102939190612d2d565b60405180910390f35b3480156102a857600080fd5b506102b161090f565b6040516102be9190612d57565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e99190612f7d565b610919565b6040516102fb9190612cb3565b60405180910390f35b34801561031057600080fd5b5061032b60048036038101906103269190612ff5565b610aff565b6040516103389190612cb3565b60405180910390f35b34801561034d57600080fd5b50610356610bd8565b6040516103639190613057565b60405180910390f35b34801561037857600080fd5b50610381610bde565b60405161038e919061308e565b60405180910390f35b3480156103a357600080fd5b506103be60048036038101906103b99190612c58565b610bf5565b6040516103cb9190612cb3565b60405180910390f35b3480156103e057600080fd5b506103e9610ca8565b6040516103f69190613057565b60405180910390f35b34801561040b57600080fd5b50610414610ccc565b6040516104219190612cb3565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c91906130a9565b610cdf565b60405161045e9190612cb3565b60405180910390f35b34801561047357600080fd5b5061047c610d35565b6040516104899190612d57565b60405180910390f35b34801561049e57600080fd5b506104a7610d3b565b6040516104b49190612cb3565b60405180910390f35b3480156104c957600080fd5b506104e460048036038101906104df91906130a9565b610d4e565b6040516104f19190612d57565b60405180910390f35b34801561050657600080fd5b5061050f610d96565b005b34801561051d57600080fd5b50610538600480360381019061053391906130d6565b610eee565b005b34801561054657600080fd5b5061054f610fd5565b60405161055c9190613057565b60405180910390f35b34801561057157600080fd5b5061057a610ffb565b005b34801561058857600080fd5b506105916110ca565b60405161059e9190613057565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c9919061312f565b6110f4565b005b3480156105dc57600080fd5b506105f760048036038101906105f2919061312f565b6111a8565b005b34801561060557600080fd5b5061060e61125c565b60405161061b9190612b8e565b60405180910390f35b34801561063057600080fd5b5061064b6004803603810190610646919061315c565b6112ee565b005b34801561065957600080fd5b50610674600480360381019061066f9190612c58565b611422565b6040516106819190612cb3565b60405180910390f35b34801561069657600080fd5b506106b160048036038101906106ac9190612c58565b6114ef565b6040516106be9190612cb3565b60405180910390f35b3480156106d357600080fd5b506106ee60048036038101906106e991906130a9565b61150d565b005b3480156106fc57600080fd5b50610717600480360381019061071291906130a9565b611664565b6040516107249190612cb3565b60405180910390f35b34801561073957600080fd5b50610742611684565b60405161074f9190612cb3565b60405180910390f35b34801561076457600080fd5b5061077f600480360381019061077a919061315c565b611697565b005b34801561078d57600080fd5b506107966117d7565b6040516107a39190612d57565b60405180910390f35b3480156107b857600080fd5b506107d360048036038101906107ce919061319c565b6117dd565b6040516107e09190612d57565b60405180910390f35b3480156107f557600080fd5b50610810600480360381019061080b91906130d6565b611864565b005b34801561081e57600080fd5b50610839600480360381019061083491906130a9565b61194b565b005b60606003805461084a9061320b565b80601f01602080910402602001604051908101604052809291908181526020018280546108769061320b565b80156108c35780601f10610898576101008083540402835291602001916108c3565b820191906000526020600020905b8154815290600101906020018083116108a657829003601f168201915b5050505050905090565b60006108e16108da611b70565b8484611b78565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b6000610923611b70565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a990613289565b60405180910390fd5b600660159054906101000a900460ff1615610a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f99061331b565b60405180910390fd5b8151835114610a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3d90613387565b60405180910390fd5b60c8835110610a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8190613419565b60405180910390fd5b60005b8351811015610af4576000848281518110610aab57610aaa613439565b5b602002602001015190506000848381518110610aca57610ac9613439565b5b60200260200101519050610adf338383611d43565b50508080610aec90613497565b915050610a8d565b506001905092915050565b6000610b0c848484611d43565b610bcd84610b18611b70565b610bc885604051806060016040528060288152602001613d6860289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b7e611b70565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122d69092919063ffffffff16565b611b78565b600190509392505050565b61dead81565b6000600660149054906101000a900460ff16905090565b6000610c9e610c02611b70565b84610c998560016000610c13611b70565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b1290919063ffffffff16565b611b78565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600660179054906101000a900460ff1681565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60085481565b600660169054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d9e611b70565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2490613289565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ef6611b70565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c90613289565b60405180910390fd5b80600781905550601e6007541115610fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc99061352c565b60405180910390fd5b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611003611b70565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108990613289565b60405180910390fd5b6001600660156101000a81548160ff0219169083151502179055506001600660166101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110fc611b70565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461118b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118290613289565b60405180910390fd5b80600660166101000a81548160ff02191690831515021790555050565b6111b0611b70565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461123f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123690613289565b60405180910390fd5b80600660176101000a81548160ff02191690831515021790555050565b60606004805461126b9061320b565b80601f01602080910402602001604051908101604052809291908181526020018280546112979061320b565b80156112e45780601f106112b9576101008083540402835291602001916112e4565b820191906000526020600020905b8154815290600101906020018083116112c757829003601f168201915b5050505050905090565b6112f6611b70565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137c90613289565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140b906135be565b60405180910390fd5b61141e828261233a565b5050565b60006114e561142f611b70565b846114e085604051806060016040528060258152602001613d906025913960016000611459611b70565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122d69092919063ffffffff16565b611b78565b6001905092915050565b60006115036114fc611b70565b8484611d43565b6001905092915050565b611515611b70565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159b90613289565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600660159054906101000a900460ff1681565b61169f611b70565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461172e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172590613289565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516117cb9190612cb3565b60405180910390a25050565b60075481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61186c611b70565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f290613289565b60405180910390fd5b80600881905550601e6008541115611948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193f9061352c565b60405180910390fd5b50565b611953611b70565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d990613289565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4990613650565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808284611b219190613670565b905083811015611b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5d90613712565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdf906137a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4f90613836565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d369190612d57565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daa906138c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1a9061395a565b60405180910390fd5b600660159054906101000a900460ff16611f1857600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ed85750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0e906139c6565b60405180910390fd5b5b6000811415611f3257611f2d838360006123db565b6122d1565b6000611f3d30610d4e565b905060008082119050808015611f5f5750600660169054906101000a900460ff165b8015611f785750600560149054906101000a900460ff16155b8015611fce5750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120245750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561207a5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120be576001600560146101000a81548160ff0219169083151502179055506120a2612670565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121745750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561217e57600090505b600081156122c157600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612213576000600854111561220e5761220b60646121fd6008548861277c90919063ffffffff16565b6127f790919063ffffffff16565b90505b61229d565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561229c576000600754111561229b57612298606461228a6007548861277c90919063ffffffff16565b6127f790919063ffffffff16565b90505b5b5b60008111156122b2576122b18730836123db565b5b80856122be91906139e6565b94505b6122cc8787876123db565b505050505b505050565b600083831115829061231e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123159190612b8e565b60405180910390fd5b506000838561232d91906139e6565b9050809150509392505050565b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561244b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612442906138c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b29061395a565b60405180910390fd5b6124c6838383612841565b61253181604051806060016040528060268152602001613d42602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122d69092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125c4816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b1290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126639190612d57565b60405180910390a3505050565b600061267b30610d4e565b9050600660179054906101000a900460ff16156126cf5760008111156126c9576126c830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836123db565b5b5061277a565b6000808214156126e057505061277a565b6126e982612846565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161272f90613a4b565b60006040518083038185875af1925050503d806000811461276c576040519150601f19603f3d011682016040523d82523d6000602084013e612771565b606091505b50508091505050505b565b60008083141561278f57600090506127f1565b6000828461279d9190613a60565b90508284826127ac9190613ae9565b146127ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e390613b8c565b60405180910390fd5b809150505b92915050565b600061283983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a92565b905092915050565b505050565b6000600267ffffffffffffffff81111561286357612862612d77565b5b6040519080825280602002602001820160405280156128915781602001602082028036833780820191505090505b50905030816000815181106128a9576128a8613439565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561294957600080fd5b505afa15801561295d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129819190613bc1565b8160018151811061299557612994613439565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506129fa307f000000000000000000000000000000000000000000000000000000000000000084611b78565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a5c959493929190613ce7565b600060405180830381600087803b158015612a7657600080fd5b505af1158015612a8a573d6000803e3d6000fd5b505050505050565b60008083118290612ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad09190612b8e565b60405180910390fd5b5060008385612ae89190613ae9565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b2f578082015181840152602081019050612b14565b83811115612b3e576000848401525b50505050565b6000601f19601f8301169050919050565b6000612b6082612af5565b612b6a8185612b00565b9350612b7a818560208601612b11565b612b8381612b44565b840191505092915050565b60006020820190508181036000830152612ba88184612b55565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612bef82612bc4565b9050919050565b612bff81612be4565b8114612c0a57600080fd5b50565b600081359050612c1c81612bf6565b92915050565b6000819050919050565b612c3581612c22565b8114612c4057600080fd5b50565b600081359050612c5281612c2c565b92915050565b60008060408385031215612c6f57612c6e612bba565b5b6000612c7d85828601612c0d565b9250506020612c8e85828601612c43565b9150509250929050565b60008115159050919050565b612cad81612c98565b82525050565b6000602082019050612cc86000830184612ca4565b92915050565b6000819050919050565b6000612cf3612cee612ce984612bc4565b612cce565b612bc4565b9050919050565b6000612d0582612cd8565b9050919050565b6000612d1782612cfa565b9050919050565b612d2781612d0c565b82525050565b6000602082019050612d426000830184612d1e565b92915050565b612d5181612c22565b82525050565b6000602082019050612d6c6000830184612d48565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612daf82612b44565b810181811067ffffffffffffffff82111715612dce57612dcd612d77565b5b80604052505050565b6000612de1612bb0565b9050612ded8282612da6565b919050565b600067ffffffffffffffff821115612e0d57612e0c612d77565b5b602082029050602081019050919050565b600080fd5b6000612e36612e3184612df2565b612dd7565b90508083825260208201905060208402830185811115612e5957612e58612e1e565b5b835b81811015612e825780612e6e8882612c0d565b845260208401935050602081019050612e5b565b5050509392505050565b600082601f830112612ea157612ea0612d72565b5b8135612eb1848260208601612e23565b91505092915050565b600067ffffffffffffffff821115612ed557612ed4612d77565b5b602082029050602081019050919050565b6000612ef9612ef484612eba565b612dd7565b90508083825260208201905060208402830185811115612f1c57612f1b612e1e565b5b835b81811015612f455780612f318882612c43565b845260208401935050602081019050612f1e565b5050509392505050565b600082601f830112612f6457612f63612d72565b5b8135612f74848260208601612ee6565b91505092915050565b60008060408385031215612f9457612f93612bba565b5b600083013567ffffffffffffffff811115612fb257612fb1612bbf565b5b612fbe85828601612e8c565b925050602083013567ffffffffffffffff811115612fdf57612fde612bbf565b5b612feb85828601612f4f565b9150509250929050565b60008060006060848603121561300e5761300d612bba565b5b600061301c86828701612c0d565b935050602061302d86828701612c0d565b925050604061303e86828701612c43565b9150509250925092565b61305181612be4565b82525050565b600060208201905061306c6000830184613048565b92915050565b600060ff82169050919050565b61308881613072565b82525050565b60006020820190506130a3600083018461307f565b92915050565b6000602082840312156130bf576130be612bba565b5b60006130cd84828501612c0d565b91505092915050565b6000602082840312156130ec576130eb612bba565b5b60006130fa84828501612c43565b91505092915050565b61310c81612c98565b811461311757600080fd5b50565b60008135905061312981613103565b92915050565b60006020828403121561314557613144612bba565b5b60006131538482850161311a565b91505092915050565b6000806040838503121561317357613172612bba565b5b600061318185828601612c0d565b92505060206131928582860161311a565b9150509250929050565b600080604083850312156131b3576131b2612bba565b5b60006131c185828601612c0d565b92505060206131d285828601612c0d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061322357607f821691505b60208210811415613237576132366131dc565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613273602083612b00565b915061327e8261323d565b602082019050919050565b600060208201905081810360008301526132a281613266565b9050919050565b7f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60008201527f742061697264726f70206166746572206c61756e63682e000000000000000000602082015250565b6000613305603783612b00565b9150613310826132a9565b604082019050919050565b60006020820190508181036000830152613334816132f8565b9050919050565b7f617272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b6000613371601e83612b00565b915061337c8261333b565b602082019050919050565b600060208201905081810360008301526133a081613364565b9050919050565b7f43616e206f6e6c792061697264726f70203230302077616c6c6574732070657260008201527f2074786e2064756520746f20676173206c696d69747300000000000000000000602082015250565b6000613403603683612b00565b915061340e826133a7565b604082019050919050565b60006020820190508181036000830152613432816133f6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134a282612c22565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156134d5576134d4613468565b5b600182019050919050565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b6000613516601d83612b00565b9150613521826134e0565b602082019050919050565b6000602082019050818103600083015261354581613509565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006135a8603983612b00565b91506135b38261354c565b604082019050919050565b600060208201905081810360008301526135d78161359b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061363a602683612b00565b9150613645826135de565b604082019050919050565b600060208201905081810360008301526136698161362d565b9050919050565b600061367b82612c22565b915061368683612c22565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136bb576136ba613468565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006136fc601b83612b00565b9150613707826136c6565b602082019050919050565b6000602082019050818103600083015261372b816136ef565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061378e602483612b00565b915061379982613732565b604082019050919050565b600060208201905081810360008301526137bd81613781565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613820602283612b00565b915061382b826137c4565b604082019050919050565b6000602082019050818103600083015261384f81613813565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006138b2602583612b00565b91506138bd82613856565b604082019050919050565b600060208201905081810360008301526138e1816138a5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613944602383612b00565b915061394f826138e8565b604082019050919050565b6000602082019050818103600083015261397381613937565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006139b0601683612b00565b91506139bb8261397a565b602082019050919050565b600060208201905081810360008301526139df816139a3565b9050919050565b60006139f182612c22565b91506139fc83612c22565b925082821015613a0f57613a0e613468565b5b828203905092915050565b600081905092915050565b50565b6000613a35600083613a1a565b9150613a4082613a25565b600082019050919050565b6000613a5682613a28565b9150819050919050565b6000613a6b82612c22565b9150613a7683612c22565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613aaf57613aae613468565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613af482612c22565b9150613aff83612c22565b925082613b0f57613b0e613aba565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b76602183612b00565b9150613b8182613b1a565b604082019050919050565b60006020820190508181036000830152613ba581613b69565b9050919050565b600081519050613bbb81612bf6565b92915050565b600060208284031215613bd757613bd6612bba565b5b6000613be584828501613bac565b91505092915050565b6000819050919050565b6000613c13613c0e613c0984613bee565b612cce565b612c22565b9050919050565b613c2381613bf8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613c5e81612be4565b82525050565b6000613c708383613c55565b60208301905092915050565b6000602082019050919050565b6000613c9482613c29565b613c9e8185613c34565b9350613ca983613c45565b8060005b83811015613cda578151613cc18882613c64565b9750613ccc83613c7c565b925050600181019050613cad565b5085935050505092915050565b600060a082019050613cfc6000830188612d48565b613d096020830187613c1a565b8181036040830152613d1b8186613c89565b9050613d2a6060830185613048565b613d376080830184612d48565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220696e2b3dd7b2408ec96309cea31b1b7553e5a5f2658d45a761cac23c4f6622d864736f6c63430008090033
Deployed ByteCode Sourcemap
29434:9456:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7590:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9757:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29513:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8710:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32571:752;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10408:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29616:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33335:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11172:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29571:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29861:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35071:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29946:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29823:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8881:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22055:148;;;;;;;;;;;;;:::i;:::-;;33820:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29708:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32447:112;;;;;;;;;;;;;:::i;:::-;;21413:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33527:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33709:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7809:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34401:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11893:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9221:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34855:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30279:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29783:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34211:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29912:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9459:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34015:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22358:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7590:100;7644:13;7677:5;7670:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7590:100;:::o;9757:169::-;9840:4;9857:39;9866:12;:10;:12::i;:::-;9880:7;9889:6;9857:8;:39::i;:::-;9914:4;9907:11;;9757:169;;;;:::o;29513:51::-;;;:::o;8710:108::-;8771:7;8798:12;;8791:19;;8710:108;:::o;32571:752::-;32684:4;21635:12;:10;:12::i;:::-;21625:22;;:6;;;;;;;;;;;:22;;;21617:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32709:13:::1;;;;;;;;;;;32708:14;32700:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;32826:7;:14;32801;:21;:39;32793:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;32918:3;32894:14;:21;:27;32886:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;33093:9;33089:205;33112:14;:21;33108:1;:25;33089:205;;;33154:14;33171;33186:1;33171:17;;;;;;;;:::i;:::-;;;;;;;;33154:34;;33203:14;33220:7;33228:1;33220:10;;;;;;;;:::i;:::-;;;;;;;;33203:27;;33245:37;33255:10;33267:6;33275;33245:9;:37::i;:::-;33139:155;;33135:3;;;;;:::i;:::-;;;;33089:205;;;;33311:4;33304:11;;32571:752:::0;;;;:::o;10408:355::-;10548:4;10565:36;10575:6;10583:9;10594:6;10565:9;:36::i;:::-;10612:121;10621:6;10629:12;:10;:12::i;:::-;10643:89;10681:6;10643:89;;;;;;;;;;;;;;;;;:11;:19;10655:6;10643:19;;;;;;;;;;;;;;;:33;10663:12;:10;:12::i;:::-;10643:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10612:8;:121::i;:::-;10751:4;10744:11;;10408:355;;;;;:::o;29616:53::-;29662:6;29616:53;:::o;33335:92::-;33385:5;33410:9;;;;;;;;;;;33403:16;;33335:92;:::o;11172:218::-;11260:4;11277:83;11286:12;:10;:12::i;:::-;11300:7;11309:50;11348:10;11309:11;:25;11321:12;:10;:12::i;:::-;11309:25;;;;;;;;;;;;;;;:34;11335:7;11309:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11277:8;:83::i;:::-;11378:4;11371:11;;11172:218;;;;:::o;29571:38::-;;;:::o;29861:30::-;;;;;;;;;;;;;:::o;35071:127::-;35138:4;35162:19;:28;35182:7;35162:28;;;;;;;;;;;;;;;;;;;;;;;;;35155:35;;35071:127;;;:::o;29946:28::-;;;;:::o;29823:31::-;;;;;;;;;;;;;:::o;8881:127::-;8955:7;8982:9;:18;8992:7;8982:18;;;;;;;;;;;;;;;;8975:25;;8881:127;;;:::o;22055:148::-;21635:12;:10;:12::i;:::-;21625:22;;:6;;;;;;;;;;;:22;;;21617:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22162:1:::1;22125:40;;22146:6;;;;;;;;;;;22125:40;;;;;;;;;;;;22193:1;22176:6;;:19;;;;;;;;;;;;;;;;;;22055:148::o:0;33820:183::-;21635:12;:10;:12::i;:::-;21625:22;;:6;;;;;;;;;;;:22;;;21617:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33911:13:::1;33896:12;:28;;;;33959:2;33943:12;;:18;;33935:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;33820:183:::0;:::o;29708:30::-;;;;;;;;;;;;;:::o;32447:112::-;21635:12;:10;:12::i;:::-;21625:22;;:6;;;;;;;;;;;:22;;;21617:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32518:4:::1;32502:13;;:20;;;;;;;;;;;;;;;;;;32547:4;32533:11;;:18;;;;;;;;;;;;;;;;;;32447:112::o:0;21413:79::-;21451:7;21478:6;;;;;;;;;;;21471:13;;21413:79;:::o;33527:101::-;21635:12;:10;:12::i;:::-;21625:22;;:6;;;;;;;;;;;:22;;;21617:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33613:7:::1;33599:11;;:21;;;;;;;;;;;;;;;;;;33527:101:::0;:::o;33709:99::-;21635:12;:10;:12::i;:::-;21625:22;;:6;;;;;;;;;;;:22;;;21617:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33793:7:::1;33780:10;;:20;;;;;;;;;;;;;;;;;;33709:99:::0;:::o;7809:104::-;7865:13;7898:7;7891:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7809:104;:::o;34401:246::-;21635:12;:10;:12::i;:::-;21625:22;;:6;;;;;;;;;;;:22;;;21617:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34510:13:::1;34502:21;;:4;:21;;;;34494:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;34598:41;34627:4;34633:5;34598:28;:41::i;:::-;34401:246:::0;;:::o;11893:269::-;11986:4;12003:129;12012:12;:10;:12::i;:::-;12026:7;12035:96;12074:15;12035:96;;;;;;;;;;;;;;;;;:11;:25;12047:12;:10;:12::i;:::-;12035:25;;;;;;;;;;;;;;;:34;12061:7;12035:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;12003:8;:129::i;:::-;12150:4;12143:11;;11893:269;;;;:::o;9221:175::-;9307:4;9324:42;9334:12;:10;:12::i;:::-;9348:9;9359:6;9324:9;:42::i;:::-;9384:4;9377:11;;9221:175;;;;:::o;34855:208::-;21635:12;:10;:12::i;:::-;21625:22;;:6;;;;;;;;;;;:22;;;21617:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34992:15:::1;;;;;;;;;;;34949:59;;34972:18;34949:59;;;;;;;;;;;;35037:18;35019:15;;:36;;;;;;;;;;;;;;;;;;34855:208:::0;:::o;30279:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;29783:33::-;;;;;;;;;;;;;:::o;34211:182::-;21635:12;:10;:12::i;:::-;21625:22;;:6;;;;;;;;;;;:22;;;21617:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34327:8:::1;34296:19;:28;34316:7;34296:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;34367:7;34351:34;;;34376:8;34351:34;;;;;;:::i;:::-;;;;;;;;34211:182:::0;;:::o;29912:27::-;;;;:::o;9459:151::-;9548:7;9575:11;:18;9587:5;9575:18;;;;;;;;;;;;;;;:27;9594:7;9575:27;;;;;;;;;;;;;;;;9568:34;;9459:151;;;;:::o;34015:188::-;21635:12;:10;:12::i;:::-;21625:22;;:6;;;;;;;;;;;:22;;;21617:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34109:14:::1;34093:13;:30;;;;34159:2;34142:13;;:19;;34134:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;34015:188:::0;:::o;22358:244::-;21635:12;:10;:12::i;:::-;21625:22;;:6;;;;;;;;;;;:22;;;21617:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22467:1:::1;22447:22;;:8;:22;;;;22439:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22557:8;22528:38;;22549:6;;;;;;;;;;;22528:38;;;;;;;;;;;;22586:8;22577:6;;:17;;;;;;;;;;;;;;;;;;22358:244:::0;:::o;16457:181::-;16515:7;16535:9;16551:1;16547;:5;;;;:::i;:::-;16535:17;;16576:1;16571;:6;;16563:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;16629:1;16622:8;;;16457:181;;;;:::o;226:98::-;279:7;306:10;299:17;;226:98;:::o;15079:380::-;15232:1;15215:19;;:5;:19;;;;15207:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15313:1;15294:21;;:7;:21;;;;15286:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15397:6;15367:11;:18;15379:5;15367:18;;;;;;;;;;;;;;;:27;15386:7;15367:27;;;;;;;;;;;;;;;:36;;;;15435:7;15419:32;;15428:5;15419:32;;;15444:6;15419:32;;;;;;:::i;:::-;;;;;;;;15079:380;;;:::o;35210:2015::-;35358:1;35342:18;;:4;:18;;;;35334:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35435:1;35421:16;;:2;:16;;;;35413:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;35492:13;;;;;;;;;;;35488:132;;35529:19;:25;35549:4;35529:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;35558:19;:23;35578:2;35558:23;;;;;;;;;;;;;;;;;;;;;;;;;35529:52;35521:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;35488:132;35644:1;35634:6;:11;35631:92;;;35662:28;35678:4;35684:2;35688:1;35662:15;:28::i;:::-;35705:7;;35631:92;35745:28;35776:24;35794:4;35776:9;:24::i;:::-;35745:55;;35821:12;35859:1;35836:20;:24;35821:39;;35891:7;:35;;;;;35915:11;;;;;;;;;;;35891:35;:61;;;;;35944:8;;;;;;;;;;;35943:9;35891:61;:110;;;;;35970:25;:31;35996:4;35970:31;;;;;;;;;;;;;;;;;;;;;;;;;35969:32;35891:110;:153;;;;;36019:19;:25;36039:4;36019:25;;;;;;;;;;;;;;;;;;;;;;;;;36018:26;35891:153;:194;;;;;36062:19;:23;36082:2;36062:23;;;;;;;;;;;;;;;;;;;;;;;;;36061:24;35891:194;35873:338;;;36123:4;36112:8;;:15;;;;;;;;;;;;;;;;;;36156:10;:8;:10::i;:::-;36194:5;36183:8;;:16;;;;;;;;;;;;;;;;;;35873:338;36231:12;36247:8;;;;;;;;;;;36246:9;36231:24;;36356:19;:25;36376:4;36356:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;36385:19;:23;36405:2;36385:23;;;;;;;;;;;;;;;;;;;;;;;;;36356:52;36353:99;;;36435:5;36425:15;;36353:99;36472:12;36576:7;36573:599;;;36617:25;:29;36643:2;36617:29;;;;;;;;;;;;;;;;;;;;;;;;;36613:390;;;36686:1;36670:13;;:17;36666:106;;;36718:34;36748:3;36718:25;36729:13;;36718:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;36711:41;;36666:106;36613:390;;;36832:25;:31;36858:4;36832:31;;;;;;;;;;;;;;;;;;;;;;;;;36829:174;;;36903:1;36888:12;;:16;36884:104;;;36935:33;36964:3;36935:24;36946:12;;36935:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;36928:40;;36884:104;36829:174;36613:390;37041:1;37034:4;:8;37031:93;;;37066:42;37082:4;37096;37103;37066:15;:42::i;:::-;37031:93;37156:4;37146:14;;;;;:::i;:::-;;;36573:599;37184:33;37200:4;37206:2;37210:6;37184:15;:33::i;:::-;35323:1902;;;;35210:2015;;;;:::o;17360:192::-;17446:7;17479:1;17474;:6;;17482:12;17466:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17506:9;17522:1;17518;:5;;;;:::i;:::-;17506:17;;17543:1;17536:8;;;17360:192;;;;;:::o;34659:188::-;34776:5;34742:25;:31;34768:4;34742:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;34833:5;34799:40;;34827:4;34799:40;;;;;;;;;;;;34659:188;;:::o;12652:573::-;12810:1;12792:20;;:6;:20;;;;12784:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12894:1;12873:23;;:9;:23;;;;12865:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12949:47;12970:6;12978:9;12989:6;12949:20;:47::i;:::-;13029:71;13051:6;13029:71;;;;;;;;;;;;;;;;;:9;:17;13039:6;13029:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;13009:9;:17;13019:6;13009:17;;;;;;;;;;;;;;;:91;;;;13134:32;13159:6;13134:9;:20;13144:9;13134:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13111:9;:20;13121:9;13111:20;;;;;;;;;;;;;;;:55;;;;13199:9;13182:35;;13191:6;13182:35;;;13210:6;13182:35;;;;;;:::i;:::-;;;;;;;;12652:573;;;:::o;38371:516::-;38410:23;38436:24;38454:4;38436:9;:24::i;:::-;38410:50;;38477:10;;;;;;;;;;;38473:185;;;38525:1;38507:15;:19;38503:123;;;38546:64;38570:4;38577:15;;;;;;;;;;;38594;38546;:64::i;:::-;38503:123;38640:7;;;38473:185;38670:12;38717:1;38698:15;:20;38695:35;;;38722:7;;;;38695:35;38740:33;38757:15;38740:16;:33::i;:::-;38814:15;;;;;;;;;;;38806:29;;38843:21;38806:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38793:76;;;;;38399:488;;38371:516;:::o;17811:471::-;17869:7;18119:1;18114;:6;18110:47;;;18144:1;18137:8;;;;18110:47;18169:9;18185:1;18181;:5;;;;:::i;:::-;18169:17;;18214:1;18209;18205;:5;;;;:::i;:::-;:10;18197:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18273:1;18266:8;;;17811:471;;;;;:::o;18758:132::-;18816:7;18843:39;18847:1;18850;18843:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;18836:46;;18758:132;;;;:::o;16062:125::-;;;;:::o;37233:601::-;37361:21;37399:1;37385:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37361:40;;37430:4;37412;37417:1;37412:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;37456:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37446:4;37451:1;37446:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;37491:62;37508:4;37523:15;37541:11;37491:8;:62::i;:::-;37592:15;:66;;;37673:11;37699:1;37743:4;37770;37790:15;37592:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37288:546;37233:601;:::o;19386:278::-;19472:7;19504:1;19500;:5;19507:12;19492:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;19531:9;19547:1;19543;:5;;;;:::i;:::-;19531:17;;19655:1;19648:8;;;19386:278;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:153::-;3917:9;3950:37;3981:5;3950:37;:::i;:::-;3937:50;;3840:153;;;:::o;3999:185::-;4113:64;4171:5;4113:64;:::i;:::-;4108:3;4101:77;3999:185;;:::o;4190:276::-;4310:4;4348:2;4337:9;4333:18;4325:26;;4361:98;4456:1;4445:9;4441:17;4432:6;4361:98;:::i;:::-;4190:276;;;;:::o;4472:118::-;4559:24;4577:5;4559:24;:::i;:::-;4554:3;4547:37;4472:118;;:::o;4596:222::-;4689:4;4727:2;4716:9;4712:18;4704:26;;4740:71;4808:1;4797:9;4793:17;4784:6;4740:71;:::i;:::-;4596:222;;;;:::o;4824:117::-;4933:1;4930;4923:12;4947:180;4995:77;4992:1;4985:88;5092:4;5089:1;5082:15;5116:4;5113:1;5106:15;5133:281;5216:27;5238:4;5216:27;:::i;:::-;5208:6;5204:40;5346:6;5334:10;5331:22;5310:18;5298:10;5295:34;5292:62;5289:88;;;5357:18;;:::i;:::-;5289:88;5397:10;5393:2;5386:22;5176:238;5133:281;;:::o;5420:129::-;5454:6;5481:20;;:::i;:::-;5471:30;;5510:33;5538:4;5530:6;5510:33;:::i;:::-;5420:129;;;:::o;5555:311::-;5632:4;5722:18;5714:6;5711:30;5708:56;;;5744:18;;:::i;:::-;5708:56;5794:4;5786:6;5782:17;5774:25;;5854:4;5848;5844:15;5836:23;;5555:311;;;:::o;5872:117::-;5981:1;5978;5971:12;6012:710;6108:5;6133:81;6149:64;6206:6;6149:64;:::i;:::-;6133:81;:::i;:::-;6124:90;;6234:5;6263:6;6256:5;6249:21;6297:4;6290:5;6286:16;6279:23;;6350:4;6342:6;6338:17;6330:6;6326:30;6379:3;6371:6;6368:15;6365:122;;;6398:79;;:::i;:::-;6365:122;6513:6;6496:220;6530:6;6525:3;6522:15;6496:220;;;6605:3;6634:37;6667:3;6655:10;6634:37;:::i;:::-;6629:3;6622:50;6701:4;6696:3;6692:14;6685:21;;6572:144;6556:4;6551:3;6547:14;6540:21;;6496:220;;;6500:21;6114:608;;6012:710;;;;;:::o;6745:370::-;6816:5;6865:3;6858:4;6850:6;6846:17;6842:27;6832:122;;6873:79;;:::i;:::-;6832:122;6990:6;6977:20;7015:94;7105:3;7097:6;7090:4;7082:6;7078:17;7015:94;:::i;:::-;7006:103;;6822:293;6745:370;;;;:::o;7121:311::-;7198:4;7288:18;7280:6;7277:30;7274:56;;;7310:18;;:::i;:::-;7274:56;7360:4;7352:6;7348:17;7340:25;;7420:4;7414;7410:15;7402:23;;7121:311;;;:::o;7455:710::-;7551:5;7576:81;7592:64;7649:6;7592:64;:::i;:::-;7576:81;:::i;:::-;7567:90;;7677:5;7706:6;7699:5;7692:21;7740:4;7733:5;7729:16;7722:23;;7793:4;7785:6;7781:17;7773:6;7769:30;7822:3;7814:6;7811:15;7808:122;;;7841:79;;:::i;:::-;7808:122;7956:6;7939:220;7973:6;7968:3;7965:15;7939:220;;;8048:3;8077:37;8110:3;8098:10;8077:37;:::i;:::-;8072:3;8065:50;8144:4;8139:3;8135:14;8128:21;;8015:144;7999:4;7994:3;7990:14;7983:21;;7939:220;;;7943:21;7557:608;;7455:710;;;;;:::o;8188:370::-;8259:5;8308:3;8301:4;8293:6;8289:17;8285:27;8275:122;;8316:79;;:::i;:::-;8275:122;8433:6;8420:20;8458:94;8548:3;8540:6;8533:4;8525:6;8521:17;8458:94;:::i;:::-;8449:103;;8265:293;8188:370;;;;:::o;8564:894::-;8682:6;8690;8739:2;8727:9;8718:7;8714:23;8710:32;8707:119;;;8745:79;;:::i;:::-;8707:119;8893:1;8882:9;8878:17;8865:31;8923:18;8915:6;8912:30;8909:117;;;8945:79;;:::i;:::-;8909:117;9050:78;9120:7;9111:6;9100:9;9096:22;9050:78;:::i;:::-;9040:88;;8836:302;9205:2;9194:9;9190:18;9177:32;9236:18;9228:6;9225:30;9222:117;;;9258:79;;:::i;:::-;9222:117;9363:78;9433:7;9424:6;9413:9;9409:22;9363:78;:::i;:::-;9353:88;;9148:303;8564:894;;;;;:::o;9464:619::-;9541:6;9549;9557;9606:2;9594:9;9585:7;9581:23;9577:32;9574:119;;;9612:79;;:::i;:::-;9574:119;9732:1;9757:53;9802:7;9793:6;9782:9;9778:22;9757:53;:::i;:::-;9747:63;;9703:117;9859:2;9885:53;9930:7;9921:6;9910:9;9906:22;9885:53;:::i;:::-;9875:63;;9830:118;9987:2;10013:53;10058:7;10049:6;10038:9;10034:22;10013:53;:::i;:::-;10003:63;;9958:118;9464:619;;;;;:::o;10089:118::-;10176:24;10194:5;10176:24;:::i;:::-;10171:3;10164:37;10089:118;;:::o;10213:222::-;10306:4;10344:2;10333:9;10329:18;10321:26;;10357:71;10425:1;10414:9;10410:17;10401:6;10357:71;:::i;:::-;10213:222;;;;:::o;10441:86::-;10476:7;10516:4;10509:5;10505:16;10494:27;;10441:86;;;:::o;10533:112::-;10616:22;10632:5;10616:22;:::i;:::-;10611:3;10604:35;10533:112;;:::o;10651:214::-;10740:4;10778:2;10767:9;10763:18;10755:26;;10791:67;10855:1;10844:9;10840:17;10831:6;10791:67;:::i;:::-;10651:214;;;;:::o;10871:329::-;10930:6;10979:2;10967:9;10958:7;10954:23;10950:32;10947:119;;;10985:79;;:::i;:::-;10947:119;11105:1;11130:53;11175:7;11166:6;11155:9;11151:22;11130:53;:::i;:::-;11120:63;;11076:117;10871:329;;;;:::o;11206:::-;11265:6;11314:2;11302:9;11293:7;11289:23;11285:32;11282:119;;;11320:79;;:::i;:::-;11282:119;11440:1;11465:53;11510:7;11501:6;11490:9;11486:22;11465:53;:::i;:::-;11455:63;;11411:117;11206:329;;;;:::o;11541:116::-;11611:21;11626:5;11611:21;:::i;:::-;11604:5;11601:32;11591:60;;11647:1;11644;11637:12;11591:60;11541:116;:::o;11663:133::-;11706:5;11744:6;11731:20;11722:29;;11760:30;11784:5;11760:30;:::i;:::-;11663:133;;;;:::o;11802:323::-;11858:6;11907:2;11895:9;11886:7;11882:23;11878:32;11875:119;;;11913:79;;:::i;:::-;11875:119;12033:1;12058:50;12100:7;12091:6;12080:9;12076:22;12058:50;:::i;:::-;12048:60;;12004:114;11802:323;;;;:::o;12131:468::-;12196:6;12204;12253:2;12241:9;12232:7;12228:23;12224:32;12221:119;;;12259:79;;:::i;:::-;12221:119;12379:1;12404:53;12449:7;12440:6;12429:9;12425:22;12404:53;:::i;:::-;12394:63;;12350:117;12506:2;12532:50;12574:7;12565:6;12554:9;12550:22;12532:50;:::i;:::-;12522:60;;12477:115;12131:468;;;;;:::o;12605:474::-;12673:6;12681;12730:2;12718:9;12709:7;12705:23;12701:32;12698:119;;;12736:79;;:::i;:::-;12698:119;12856:1;12881:53;12926:7;12917:6;12906:9;12902:22;12881:53;:::i;:::-;12871:63;;12827:117;12983:2;13009:53;13054:7;13045:6;13034:9;13030:22;13009:53;:::i;:::-;12999:63;;12954:118;12605:474;;;;;:::o;13085:180::-;13133:77;13130:1;13123:88;13230:4;13227:1;13220:15;13254:4;13251:1;13244:15;13271:320;13315:6;13352:1;13346:4;13342:12;13332:22;;13399:1;13393:4;13389:12;13420:18;13410:81;;13476:4;13468:6;13464:17;13454:27;;13410:81;13538:2;13530:6;13527:14;13507:18;13504:38;13501:84;;;13557:18;;:::i;:::-;13501:84;13322:269;13271:320;;;:::o;13597:182::-;13737:34;13733:1;13725:6;13721:14;13714:58;13597:182;:::o;13785:366::-;13927:3;13948:67;14012:2;14007:3;13948:67;:::i;:::-;13941:74;;14024:93;14113:3;14024:93;:::i;:::-;14142:2;14137:3;14133:12;14126:19;;13785:366;;;:::o;14157:419::-;14323:4;14361:2;14350:9;14346:18;14338:26;;14410:9;14404:4;14400:20;14396:1;14385:9;14381:17;14374:47;14438:131;14564:4;14438:131;:::i;:::-;14430:139;;14157:419;;;:::o;14582:242::-;14722:34;14718:1;14710:6;14706:14;14699:58;14791:25;14786:2;14778:6;14774:15;14767:50;14582:242;:::o;14830:366::-;14972:3;14993:67;15057:2;15052:3;14993:67;:::i;:::-;14986:74;;15069:93;15158:3;15069:93;:::i;:::-;15187:2;15182:3;15178:12;15171:19;;14830:366;;;:::o;15202:419::-;15368:4;15406:2;15395:9;15391:18;15383:26;;15455:9;15449:4;15445:20;15441:1;15430:9;15426:17;15419:47;15483:131;15609:4;15483:131;:::i;:::-;15475:139;;15202:419;;;:::o;15627:180::-;15767:32;15763:1;15755:6;15751:14;15744:56;15627:180;:::o;15813:366::-;15955:3;15976:67;16040:2;16035:3;15976:67;:::i;:::-;15969:74;;16052:93;16141:3;16052:93;:::i;:::-;16170:2;16165:3;16161:12;16154:19;;15813:366;;;:::o;16185:419::-;16351:4;16389:2;16378:9;16374:18;16366:26;;16438:9;16432:4;16428:20;16424:1;16413:9;16409:17;16402:47;16466:131;16592:4;16466:131;:::i;:::-;16458:139;;16185:419;;;:::o;16610:241::-;16750:34;16746:1;16738:6;16734:14;16727:58;16819:24;16814:2;16806:6;16802:15;16795:49;16610:241;:::o;16857:366::-;16999:3;17020:67;17084:2;17079:3;17020:67;:::i;:::-;17013:74;;17096:93;17185:3;17096:93;:::i;:::-;17214:2;17209:3;17205:12;17198:19;;16857:366;;;:::o;17229:419::-;17395:4;17433:2;17422:9;17418:18;17410:26;;17482:9;17476:4;17472:20;17468:1;17457:9;17453:17;17446:47;17510:131;17636:4;17510:131;:::i;:::-;17502:139;;17229:419;;;:::o;17654:180::-;17702:77;17699:1;17692:88;17799:4;17796:1;17789:15;17823:4;17820:1;17813:15;17840:180;17888:77;17885:1;17878:88;17985:4;17982:1;17975:15;18009:4;18006:1;17999:15;18026:233;18065:3;18088:24;18106:5;18088:24;:::i;:::-;18079:33;;18134:66;18127:5;18124:77;18121:103;;;18204:18;;:::i;:::-;18121:103;18251:1;18244:5;18240:13;18233:20;;18026:233;;;:::o;18265:179::-;18405:31;18401:1;18393:6;18389:14;18382:55;18265:179;:::o;18450:366::-;18592:3;18613:67;18677:2;18672:3;18613:67;:::i;:::-;18606:74;;18689:93;18778:3;18689:93;:::i;:::-;18807:2;18802:3;18798:12;18791:19;;18450:366;;;:::o;18822:419::-;18988:4;19026:2;19015:9;19011:18;19003:26;;19075:9;19069:4;19065:20;19061:1;19050:9;19046:17;19039:47;19103:131;19229:4;19103:131;:::i;:::-;19095:139;;18822:419;;;:::o;19247:244::-;19387:34;19383:1;19375:6;19371:14;19364:58;19456:27;19451:2;19443:6;19439:15;19432:52;19247:244;:::o;19497:366::-;19639:3;19660:67;19724:2;19719:3;19660:67;:::i;:::-;19653:74;;19736:93;19825:3;19736:93;:::i;:::-;19854:2;19849:3;19845:12;19838:19;;19497:366;;;:::o;19869:419::-;20035:4;20073:2;20062:9;20058:18;20050:26;;20122:9;20116:4;20112:20;20108:1;20097:9;20093:17;20086:47;20150:131;20276:4;20150:131;:::i;:::-;20142:139;;19869:419;;;:::o;20294:225::-;20434:34;20430:1;20422:6;20418:14;20411:58;20503:8;20498:2;20490:6;20486:15;20479:33;20294:225;:::o;20525:366::-;20667:3;20688:67;20752:2;20747:3;20688:67;:::i;:::-;20681:74;;20764:93;20853:3;20764:93;:::i;:::-;20882:2;20877:3;20873:12;20866:19;;20525:366;;;:::o;20897:419::-;21063:4;21101:2;21090:9;21086:18;21078:26;;21150:9;21144:4;21140:20;21136:1;21125:9;21121:17;21114:47;21178:131;21304:4;21178:131;:::i;:::-;21170:139;;20897:419;;;:::o;21322:305::-;21362:3;21381:20;21399:1;21381:20;:::i;:::-;21376:25;;21415:20;21433:1;21415:20;:::i;:::-;21410:25;;21569:1;21501:66;21497:74;21494:1;21491:81;21488:107;;;21575:18;;:::i;:::-;21488:107;21619:1;21616;21612:9;21605:16;;21322:305;;;;:::o;21633:177::-;21773:29;21769:1;21761:6;21757:14;21750:53;21633:177;:::o;21816:366::-;21958:3;21979:67;22043:2;22038:3;21979:67;:::i;:::-;21972:74;;22055:93;22144:3;22055:93;:::i;:::-;22173:2;22168:3;22164:12;22157:19;;21816:366;;;:::o;22188:419::-;22354:4;22392:2;22381:9;22377:18;22369:26;;22441:9;22435:4;22431:20;22427:1;22416:9;22412:17;22405:47;22469:131;22595:4;22469:131;:::i;:::-;22461:139;;22188:419;;;:::o;22613:223::-;22753:34;22749:1;22741:6;22737:14;22730:58;22822:6;22817:2;22809:6;22805:15;22798:31;22613:223;:::o;22842:366::-;22984:3;23005:67;23069:2;23064:3;23005:67;:::i;:::-;22998:74;;23081:93;23170:3;23081:93;:::i;:::-;23199:2;23194:3;23190:12;23183:19;;22842:366;;;:::o;23214:419::-;23380:4;23418:2;23407:9;23403:18;23395:26;;23467:9;23461:4;23457:20;23453:1;23442:9;23438:17;23431:47;23495:131;23621:4;23495:131;:::i;:::-;23487:139;;23214:419;;;:::o;23639:221::-;23779:34;23775:1;23767:6;23763:14;23756:58;23848:4;23843:2;23835:6;23831:15;23824:29;23639:221;:::o;23866:366::-;24008:3;24029:67;24093:2;24088:3;24029:67;:::i;:::-;24022:74;;24105:93;24194:3;24105:93;:::i;:::-;24223:2;24218:3;24214:12;24207:19;;23866:366;;;:::o;24238:419::-;24404:4;24442:2;24431:9;24427:18;24419:26;;24491:9;24485:4;24481:20;24477:1;24466:9;24462:17;24455:47;24519:131;24645:4;24519:131;:::i;:::-;24511:139;;24238:419;;;:::o;24663:224::-;24803:34;24799:1;24791:6;24787:14;24780:58;24872:7;24867:2;24859:6;24855:15;24848:32;24663:224;:::o;24893:366::-;25035:3;25056:67;25120:2;25115:3;25056:67;:::i;:::-;25049:74;;25132:93;25221:3;25132:93;:::i;:::-;25250:2;25245:3;25241:12;25234:19;;24893:366;;;:::o;25265:419::-;25431:4;25469:2;25458:9;25454:18;25446:26;;25518:9;25512:4;25508:20;25504:1;25493:9;25489:17;25482:47;25546:131;25672:4;25546:131;:::i;:::-;25538:139;;25265:419;;;:::o;25690:222::-;25830:34;25826:1;25818:6;25814:14;25807:58;25899:5;25894:2;25886:6;25882:15;25875:30;25690:222;:::o;25918:366::-;26060:3;26081:67;26145:2;26140:3;26081:67;:::i;:::-;26074:74;;26157:93;26246:3;26157:93;:::i;:::-;26275:2;26270:3;26266:12;26259:19;;25918:366;;;:::o;26290:419::-;26456:4;26494:2;26483:9;26479:18;26471:26;;26543:9;26537:4;26533:20;26529:1;26518:9;26514:17;26507:47;26571:131;26697:4;26571:131;:::i;:::-;26563:139;;26290:419;;;:::o;26715:172::-;26855:24;26851:1;26843:6;26839:14;26832:48;26715:172;:::o;26893:366::-;27035:3;27056:67;27120:2;27115:3;27056:67;:::i;:::-;27049:74;;27132:93;27221:3;27132:93;:::i;:::-;27250:2;27245:3;27241:12;27234:19;;26893:366;;;:::o;27265:419::-;27431:4;27469:2;27458:9;27454:18;27446:26;;27518:9;27512:4;27508:20;27504:1;27493:9;27489:17;27482:47;27546:131;27672:4;27546:131;:::i;:::-;27538:139;;27265:419;;;:::o;27690:191::-;27730:4;27750:20;27768:1;27750:20;:::i;:::-;27745:25;;27784:20;27802:1;27784:20;:::i;:::-;27779:25;;27823:1;27820;27817:8;27814:34;;;27828:18;;:::i;:::-;27814:34;27873:1;27870;27866:9;27858:17;;27690:191;;;;:::o;27887:147::-;27988:11;28025:3;28010:18;;27887:147;;;;:::o;28040:114::-;;:::o;28160:398::-;28319:3;28340:83;28421:1;28416:3;28340:83;:::i;:::-;28333:90;;28432:93;28521:3;28432:93;:::i;:::-;28550:1;28545:3;28541:11;28534:18;;28160:398;;;:::o;28564:379::-;28748:3;28770:147;28913:3;28770:147;:::i;:::-;28763:154;;28934:3;28927:10;;28564:379;;;:::o;28949:348::-;28989:7;29012:20;29030:1;29012:20;:::i;:::-;29007:25;;29046:20;29064:1;29046:20;:::i;:::-;29041:25;;29234:1;29166:66;29162:74;29159:1;29156:81;29151:1;29144:9;29137:17;29133:105;29130:131;;;29241:18;;:::i;:::-;29130:131;29289:1;29286;29282:9;29271:20;;28949:348;;;;:::o;29303:180::-;29351:77;29348:1;29341:88;29448:4;29445:1;29438:15;29472:4;29469:1;29462:15;29489:185;29529:1;29546:20;29564:1;29546:20;:::i;:::-;29541:25;;29580:20;29598:1;29580:20;:::i;:::-;29575:25;;29619:1;29609:35;;29624:18;;:::i;:::-;29609:35;29666:1;29663;29659:9;29654:14;;29489:185;;;;:::o;29680:220::-;29820:34;29816:1;29808:6;29804:14;29797:58;29889:3;29884:2;29876:6;29872:15;29865:28;29680:220;:::o;29906:366::-;30048:3;30069:67;30133:2;30128:3;30069:67;:::i;:::-;30062:74;;30145:93;30234:3;30145:93;:::i;:::-;30263:2;30258:3;30254:12;30247:19;;29906:366;;;:::o;30278:419::-;30444:4;30482:2;30471:9;30467:18;30459:26;;30531:9;30525:4;30521:20;30517:1;30506:9;30502:17;30495:47;30559:131;30685:4;30559:131;:::i;:::-;30551:139;;30278:419;;;:::o;30703:143::-;30760:5;30791:6;30785:13;30776:22;;30807:33;30834:5;30807:33;:::i;:::-;30703:143;;;;:::o;30852:351::-;30922:6;30971:2;30959:9;30950:7;30946:23;30942:32;30939:119;;;30977:79;;:::i;:::-;30939:119;31097:1;31122:64;31178:7;31169:6;31158:9;31154:22;31122:64;:::i;:::-;31112:74;;31068:128;30852:351;;;;:::o;31209:85::-;31254:7;31283:5;31272:16;;31209:85;;;:::o;31300:158::-;31358:9;31391:61;31409:42;31418:32;31444:5;31418:32;:::i;:::-;31409:42;:::i;:::-;31391:61;:::i;:::-;31378:74;;31300:158;;;:::o;31464:147::-;31559:45;31598:5;31559:45;:::i;:::-;31554:3;31547:58;31464:147;;:::o;31617:114::-;31684:6;31718:5;31712:12;31702:22;;31617:114;;;:::o;31737:184::-;31836:11;31870:6;31865:3;31858:19;31910:4;31905:3;31901:14;31886:29;;31737:184;;;;:::o;31927:132::-;31994:4;32017:3;32009:11;;32047:4;32042:3;32038:14;32030:22;;31927:132;;;:::o;32065:108::-;32142:24;32160:5;32142:24;:::i;:::-;32137:3;32130:37;32065:108;;:::o;32179:179::-;32248:10;32269:46;32311:3;32303:6;32269:46;:::i;:::-;32347:4;32342:3;32338:14;32324:28;;32179:179;;;;:::o;32364:113::-;32434:4;32466;32461:3;32457:14;32449:22;;32364:113;;;:::o;32513:732::-;32632:3;32661:54;32709:5;32661:54;:::i;:::-;32731:86;32810:6;32805:3;32731:86;:::i;:::-;32724:93;;32841:56;32891:5;32841:56;:::i;:::-;32920:7;32951:1;32936:284;32961:6;32958:1;32955:13;32936:284;;;33037:6;33031:13;33064:63;33123:3;33108:13;33064:63;:::i;:::-;33057:70;;33150:60;33203:6;33150:60;:::i;:::-;33140:70;;32996:224;32983:1;32980;32976:9;32971:14;;32936:284;;;32940:14;33236:3;33229:10;;32637:608;;;32513:732;;;;:::o;33251:831::-;33514:4;33552:3;33541:9;33537:19;33529:27;;33566:71;33634:1;33623:9;33619:17;33610:6;33566:71;:::i;:::-;33647:80;33723:2;33712:9;33708:18;33699:6;33647:80;:::i;:::-;33774:9;33768:4;33764:20;33759:2;33748:9;33744:18;33737:48;33802:108;33905:4;33896:6;33802:108;:::i;:::-;33794:116;;33920:72;33988:2;33977:9;33973:18;33964:6;33920:72;:::i;:::-;34002:73;34070:3;34059:9;34055:19;34046:6;34002:73;:::i;:::-;33251:831;;;;;;;;:::o
Metadata Hash
696e2b3dd7b2408ec96309cea31b1b7553e5a5f2658d45a761cac23c4f6622d8
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.