Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 33 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Convert Single A... | 12798516 | 1702 days ago | IN | 0 ETH | 0.00504003 | ||||
| Convert Single A... | 12760454 | 1707 days ago | IN | 0 ETH | 0.00706756 | ||||
| Convert Single A... | 12760454 | 1707 days ago | IN | 0 ETH | 0.00253695 | ||||
| Convert Single A... | 12753163 | 1709 days ago | IN | 0 ETH | 0.00507391 | ||||
| Convert Single A... | 12752820 | 1709 days ago | IN | 0 ETH | 0.00219615 | ||||
| Convert Single A... | 12749702 | 1709 days ago | IN | 0 ETH | 0.01242339 | ||||
| Convert Single A... | 12748505 | 1709 days ago | IN | 0 ETH | 0.00618813 | ||||
| Convert Single A... | 12748465 | 1709 days ago | IN | 0 ETH | 0.00613408 | ||||
| Convert Single A... | 12748455 | 1709 days ago | IN | 0.33897096 ETH | 0.00737431 | ||||
| Convert Single A... | 12748039 | 1709 days ago | IN | 0 ETH | 0.00550315 | ||||
| Convert Single A... | 12747644 | 1709 days ago | IN | 9.5 ETH | 0.00522237 | ||||
| Convert Single A... | 12747509 | 1709 days ago | IN | 0 ETH | 0.00510198 | ||||
| Convert Single A... | 12747506 | 1709 days ago | IN | 0 ETH | 0.0051395 | ||||
| Convert Single A... | 12745753 | 1710 days ago | IN | 0 ETH | 0.00691857 | ||||
| Convert Single A... | 12745742 | 1710 days ago | IN | 0 ETH | 0.00659577 | ||||
| Convert Single A... | 12745269 | 1710 days ago | IN | 0.11 ETH | 0.00760223 | ||||
| Convert Single A... | 12743928 | 1710 days ago | IN | 0 ETH | 0.00925153 | ||||
| Convert Single A... | 12742935 | 1710 days ago | IN | 0 ETH | 0.00837398 | ||||
| Convert Single A... | 12742650 | 1710 days ago | IN | 0 ETH | 0.00064238 | ||||
| Convert Single A... | 12742647 | 1710 days ago | IN | 0 ETH | 0.00963008 | ||||
| Convert Single A... | 12742624 | 1710 days ago | IN | 0 ETH | 0.01224083 | ||||
| Convert Single A... | 12742414 | 1710 days ago | IN | 0.36918894 ETH | 0.01604393 | ||||
| Convert Single A... | 12742407 | 1710 days ago | IN | 0.38 ETH | 0.01827849 | ||||
| Convert Single A... | 12742353 | 1710 days ago | IN | 0 ETH | 0.01568358 | ||||
| Convert Single A... | 12742344 | 1710 days ago | IN | 0.33 ETH | 0.01305561 |
Latest 7 internal transactions
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
SingleAsssetAddLiquidity
Compiler Version
v0.5.5+commit.47a71e8f
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2021-06-28
*/
pragma solidity ^0.5.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP. Does not include
* the optional functions; to access them see {ERC20Detailed}.
*/
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);
}
pragma solidity ^0.5.0;
interface IUnifiFactory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
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 feeTo() external returns(address);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
function feeController() external view returns (address);
function router() external view returns (address);
}
// File: openzeppelin-contracts-2.5.1/contracts/math/SafeMath.sol
pragma solidity ^0.5.0;
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
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.
*
* _Available since v2.4.0._
*/
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.
*
* _Available since v2.4.0._
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
// Solidity only automatically asserts when dividing by 0
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.
*
* _Available since v2.4.0._
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
pragma solidity ^0.5.0;
interface IWETH {
function deposit() external payable;
function transfer(address to, uint value) external returns (bool);
function withdraw(uint) external;
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
}
// File: openzeppelin-contracts-2.5.1/contracts/math/Math.sol
pragma solidity ^0.5.0;
/**
* @dev Standard math utilities missing in the Solidity language.
*/
library Math {
/**
* @dev Returns the largest of two numbers.
*/
function max(uint256 a, uint256 b) internal pure returns (uint256) {
return a >= b ? a : b;
}
/**
* @dev Returns the smallest of two numbers.
*/
function min(uint256 a, uint256 b) internal pure returns (uint256) {
return a < b ? a : b;
}
/**
* @dev Returns the average of two numbers. The result is rounded towards
* zero.
*/
function average(uint256 a, uint256 b) internal pure returns (uint256) {
// (a + b) / 2 can overflow, so we distribute
return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);
}
}
// File: openzeppelin-contracts-2.5.1/contracts/utils/Address.sol
pragma solidity ^0.5.5;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*/
function isContract(address account) internal view returns (bool) {
// According to EIP-1052, 0x0 is the value returned for not-yet created accounts
// and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
// for accounts without code, i.e. `keccak256('')`
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly { codehash := extcodehash(account) }
return (codehash != accountHash && codehash != 0x0);
}
/**
* @dev Converts an `address` into `address payable`. Note that this is
* simply a type cast: the actual underlying value is not changed.
*
* _Available since v2.4.0._
*/
function toPayable(address account) internal pure returns (address payable) {
return address(uint160(account));
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*
* _Available since v2.4.0._
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-call-value
(bool success, ) = recipient.call.value(amount)("");
require(success, "Address: unable to send value, recipient may have reverted");
}
}
// File: openzeppelin-contracts-2.5.1/contracts/token/ERC20/SafeERC20.sol
pragma solidity ^0.5.0;
/**
* @title SafeERC20
* @dev Wrappers around ERC20 operations that throw on failure (when the token
* contract returns false). Tokens that return no value (and instead revert or
* throw on failure) are also supported, non-reverting calls are assumed to be
* successful.
* To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
using SafeMath for uint256;
using Address for address;
function safeTransfer(IERC20 token, address to, uint256 value) internal {
callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
function safeApprove(IERC20 token, address spender, uint256 value) internal {
// safeApprove should only be called when setting an initial allowance,
// or when resetting it to zero. To increase and decrease it, use
// 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
// solhint-disable-next-line max-line-length
require((value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).add(value);
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*/
function callOptionalReturn(IERC20 token, bytes memory data) private {
// We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
// we're implementing it ourselves.
// A Solidity high level call has three parts:
// 1. The target address is checked to verify it contains contract code
// 2. The call itself is made, and success asserted
// 3. The return value is decoded, which in turn checks the size of the returned data.
// solhint-disable-next-line max-line-length
require(address(token).isContract(), "SafeERC20: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = address(token).call(data);
require(success, "SafeERC20: low-level call failed");
if (returndata.length > 0) { // Return data is optional
// solhint-disable-next-line max-line-length
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}
interface UnifiRouter {
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
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 removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
}
contract SingleAsssetAddLiquidity {
using SafeERC20 for IERC20;
using Address for address;
using SafeMath for uint256;
using Math for uint256;
address public owner ;
address public router ;
address public wETH ;
address payable owners;
address public pancakeRouter ;
address public unifiRouter;
IUnifiFactory public otherFactory;
constructor(address _pancakeRouter,address _unifiRouter,address _routerAdd, address _weth, address _otherFactory) public {
owner = msg.sender;
router = _routerAdd;
pancakeRouter = _pancakeRouter;
unifiRouter = _unifiRouter;
wETH = _weth;
otherFactory = IUnifiFactory(_otherFactory);
}
function updateRouter (address _newRouter) public {
require(msg.sender == owner);
router = _newRouter;
}
function updatePancakeRouter (address _tradeRouter) public {
require(msg.sender == owner);
pancakeRouter = _tradeRouter;
}
function updateOtherFactory (address _factory) public {
require(msg.sender == owner);
otherFactory = IUnifiFactory(_factory);
}
function updateUnifiRouter (address _tradeRouter) public {
require(msg.sender == owner);
unifiRouter = _tradeRouter;
}
function updateWETH (address _newWETH) public {
require(msg.sender == owner);
wETH = _newWETH;
}
function getName() external pure returns (string memory) {
return "singleAssetDepositor";
}
function withdrawSupplyAsSingleAsset( address receiveToken , address liquidityToken ,address tokenA,address tokenB, address payable to,uint amount, bool toReceiveWNative,uint minOut) external {
IERC20(liquidityToken).safeTransferFrom(msg.sender,address(this), amount);
IERC20(liquidityToken).safeApprove(router, 0);
IERC20(liquidityToken).safeApprove(router, amount);
UnifiRouter(router).removeLiquidity(
tokenA,
tokenB,
amount,
1,
1,
address(this),
now.add(1800)
);
if(address(tokenA) == address(receiveToken)){
//sell tokenB to wETH
uint tokenBBalance = IERC20(tokenB).balanceOf(address(this));
_convertToken(tokenBBalance, tokenB, receiveToken, minOut) ;
}else if (address(tokenB) == address(receiveToken)){
uint tokenABalance = IERC20(tokenA).balanceOf(address(this));
_convertToken(tokenABalance, tokenA,receiveToken , minOut) ;
}
uint receivingTokenBalance = IERC20(receiveToken).balanceOf(address(this));
if(toReceiveWNative){
IERC20(wETH).safeApprove(router, 0);
IERC20(wETH).safeApprove(router,receivingTokenBalance );
IWETH(wETH).withdraw(receivingTokenBalance);
address(to).transfer(receivingTokenBalance);
}else{
IERC20(receiveToken).safeTransfer(to,receivingTokenBalance);
}
}
function withdrawSupplyAsOtherSingleAsset( address receiveToken , address liquidityToken ,address tokenA,address tokenB, address payable to,uint amount, address[] calldata path1, address[] calldata path2, bool toReceiveWNative,uint minOut) external {
require(path1[path1.length - 1] == path2[path2.length -1] , 'Needs to be same token ');
IERC20(liquidityToken).safeTransferFrom(msg.sender,address(this), amount);
IERC20(liquidityToken).safeApprove(router, 0);
IERC20(liquidityToken).safeApprove(router, amount);
UnifiRouter(router).removeLiquidity(
tokenA,
tokenB,
amount,
1,
1,
address(this),
now.add(1800)
);
_convertOtherToken(IERC20(tokenA).balanceOf(address(this)),path1, minOut);
_convertOtherToken(IERC20(tokenB).balanceOf(address(this)),path2, minOut);
uint receivingTokenBalance = IERC20(receiveToken).balanceOf(address(this));
if(address(receiveToken) == address(wETH) && toReceiveWNative == true){
IERC20(wETH).safeApprove(router,0 );
IERC20(wETH).safeApprove(router,receivingTokenBalance );
IWETH(wETH).withdraw(receivingTokenBalance);
address(to).transfer(receivingTokenBalance);
}else{
}
IERC20(receiveToken).safeTransfer(address(to),receivingTokenBalance);
}
function convertSingleAssetToLiquidityEth( address requireToken , address to,uint minOut)payable external {
require(msg.value > 0);
IWETH(wETH).deposit.value( msg.value)();
uint256 tokenABalance = IERC20(wETH).balanceOf(address(this));
if(tokenABalance > 0 ) {
_convertToken(tokenABalance.div(2),wETH,requireToken,minOut);
uint256 tokenBBalance = IERC20(requireToken).balanceOf(address(this));
tokenABalance = IERC20(wETH).balanceOf(address(this));
IERC20(wETH).safeApprove(router,0 );
IERC20(wETH).safeApprove(router,tokenABalance );
IERC20(requireToken).safeApprove(router, 0);
IERC20(requireToken).safeApprove(router, tokenBBalance);
UnifiRouter(router).addLiquidity(
wETH,
requireToken,
tokenABalance,
tokenBBalance,
0,
0,
to,
now.add(1800)
);
}
tokenABalance = IERC20(wETH).balanceOf(address(this));
uint256 requireTokenBalance = IERC20(requireToken).balanceOf(address(this));
if(tokenABalance > 0 ){
IERC20(wETH).safeTransfer(to,tokenABalance);
}
if(requireTokenBalance > 0 ){
IERC20(requireToken).safeTransfer(to,requireTokenBalance);
}
}
function convertSingleAssetToLiquidity(address tokenA, address requireToken , uint amount , address to,uint minOut) external {
IERC20(tokenA).safeTransferFrom(msg.sender,address(this), amount);
uint256 tokenABalance = IERC20(tokenA).balanceOf(address(this));
if(tokenABalance > 0 ) {
_convertToken(tokenABalance.div(2),tokenA,requireToken,minOut);
uint256 tokenBBalance = IERC20(requireToken).balanceOf(address(this));
tokenABalance = IERC20(tokenA).balanceOf(address(this));
IERC20(tokenA).safeApprove(router,0 );
IERC20(requireToken).safeApprove(router, 0);
IERC20(tokenA).safeApprove(router,tokenABalance );
IERC20(requireToken).safeApprove(router, tokenBBalance);
UnifiRouter(router).addLiquidity(
tokenA,
requireToken,
tokenABalance,
tokenBBalance,
0,
0,
to,
now.add(1800)
);
}
tokenABalance = IERC20(tokenA).balanceOf(address(this));
uint256 requireTokenBalance = IERC20(requireToken).balanceOf(address(this));
if(tokenABalance > 0 ){
IERC20(tokenA).safeTransfer(to,tokenABalance);
}
if(requireTokenBalance > 0 ){
IERC20(requireToken).safeTransfer(to,requireTokenBalance);
}
}
function convertSingleAssetToOtherLiquidity(address depositToken, address requireTokenA,address requireTokenB , uint amount , address to, address[] calldata path1, address[] calldata path2,uint minOut) external {
IERC20(depositToken).safeTransferFrom(msg.sender,address(this), amount);
uint256 tokenABalance = 0 ;
uint256 tokenBBalance = 0 ;
if(amount > 0 ) {
_convertOtherToken(amount.div(2),path1,minOut);
_convertOtherToken(amount.div(2),path2,minOut);
tokenABalance = IERC20(requireTokenA).balanceOf(address(this));
tokenBBalance = IERC20(requireTokenB).balanceOf(address(this));
IERC20(requireTokenA).safeApprove(router,0 );
IERC20(requireTokenB).safeApprove(router,0 );
IERC20(requireTokenA).safeApprove(router,tokenABalance );
IERC20(requireTokenB).safeApprove(router,tokenBBalance );
UnifiRouter(router).addLiquidity(
requireTokenA,
requireTokenB,
tokenABalance,
tokenBBalance,
0,
0,
to,
now.add(1800)
);
}
tokenABalance = IERC20(requireTokenA).balanceOf(address(this));
tokenBBalance = IERC20(requireTokenB).balanceOf(address(this));
uint256 baseBalance = IERC20(depositToken).balanceOf(address(this));
if(tokenABalance > 0 ){
IERC20(requireTokenA).safeTransfer(to,tokenABalance);
}
if(tokenBBalance > 0 ){
IERC20(requireTokenB).safeTransfer(to,tokenBBalance);
}
if(baseBalance > 0 ){
IERC20(depositToken).safeTransfer(to,baseBalance);
}
}
function convertSingleAssetToOtherLiquidityETH( address requireTokenA,address requireTokenB , address to, address[] calldata path1, address[] calldata path2,uint minOut) payable external {
require(msg.value > 0);
IWETH(wETH).deposit.value( msg.value)();
uint256 tokenABalance = 0;
uint256 tokenBBalance = 0;
if( msg.value > 0 ) {
_convertOtherToken( msg.value.div(2),path1,minOut);
_convertOtherToken( msg.value.div(2),path2,minOut);
tokenABalance = IERC20(requireTokenA).balanceOf(address(this));
tokenBBalance = IERC20(requireTokenB).balanceOf(address(this));
IERC20(requireTokenA).safeApprove(router,0 );
IERC20(requireTokenB).safeApprove(router,0 );
IERC20(requireTokenA).safeApprove(router,tokenABalance );
IERC20(requireTokenB).safeApprove(router,tokenBBalance );
UnifiRouter(router).addLiquidity(
requireTokenA,
requireTokenB,
tokenABalance,
tokenBBalance,
0,
0,
to,
now.add(10000)
);
}
tokenABalance = IERC20(requireTokenA).balanceOf(address(this));
tokenBBalance = IERC20(requireTokenB).balanceOf(address(this));
uint256 baseBalance = IERC20(wETH).balanceOf(address(this));
if(tokenABalance > 0 ){
IERC20(requireTokenA).safeTransfer(to,tokenABalance);
}
if(tokenBBalance > 0 ){
IERC20(requireTokenB).safeTransfer(to,tokenBBalance);
}
if(baseBalance > 0 ){
IERC20(wETH).safeTransfer(to,baseBalance);
}
}
function _convertToken(uint _amount, address _tokenIn, address _tokenOut,uint minOut) internal {
address[] memory path = new address[](2);
path[0] = _tokenIn;
path[1] = _tokenOut;
if(otherFactory.getPair(_tokenIn,_tokenOut) == address(0)){
IERC20(_tokenIn).safeApprove(unifiRouter, 0);
IERC20(_tokenIn).safeApprove(unifiRouter, _amount);
UnifiRouter(unifiRouter).swapExactTokensForTokens(_amount, uint256(minOut), path, address(this), now.add(10000));
}else{
uint[] memory pancakeOutput = UnifiRouter(pancakeRouter).getAmountsOut(_amount, path);
uint[] memory unifiOutput = UnifiRouter(unifiRouter).getAmountsOut(_amount, path);
if(pancakeOutput[pancakeOutput.length -1 ] > unifiOutput[unifiOutput.length - 1] ){
IERC20(_tokenIn).safeApprove(pancakeRouter, 0);
IERC20(_tokenIn).safeApprove(pancakeRouter, _amount);
UnifiRouter(pancakeRouter).swapExactTokensForTokens(_amount, uint256(minOut), path, address(this), now.add(10000));
}else{
IERC20(_tokenIn).safeApprove(unifiRouter, 0);
IERC20(_tokenIn).safeApprove(unifiRouter, _amount);
UnifiRouter(unifiRouter).swapExactTokensForTokens(_amount, uint256(minOut), path, address(this), now.add(10000));
}
}
}
function _convertOtherToken(uint _amount, address [] memory path,uint minOut) internal {
uint[]memory pancakeOutput = UnifiRouter(pancakeRouter).getAmountsOut(_amount, path);
uint[]memory unifiOutput = UnifiRouter(unifiRouter).getAmountsOut(_amount, path);
if(otherFactory.getPair(path[0],path[1]) == address(0)){
IERC20(path[0]).safeApprove(unifiRouter, 0);
IERC20(path[0]).safeApprove(unifiRouter, _amount);
UnifiRouter(unifiRouter).swapExactTokensForTokens(_amount, uint256(minOut), path, address(this), now.add(10000));
}else{
if(pancakeOutput[pancakeOutput.length -1 ] > unifiOutput[unifiOutput.length - 1] ){
IERC20(path[0]).safeApprove(pancakeRouter, 0);
IERC20(path[0]).safeApprove(pancakeRouter, _amount);
UnifiRouter(pancakeRouter).swapExactTokensForTokens(_amount, uint256(minOut), path, address(this), now.add(10000));
}else{
IERC20(path[0]).safeApprove(unifiRouter, 0);
IERC20(path[0]).safeApprove(unifiRouter, _amount);
UnifiRouter(unifiRouter).swapExactTokensForTokens(_amount, uint256(minOut), path, address(this), now.add(10000));
}
}
}
function pancakeOutput(uint _amount, address[] memory path) public view returns (uint){
uint[] memory estimated = UnifiRouter(pancakeRouter).getAmountsOut(_amount, path) ;
return estimated[estimated.length-1];
}
function unifiOutput(uint _amount, address[] memory path) public view returns (uint){
uint[] memory estimated = UnifiRouter(unifiRouter).getAmountsOut(_amount, path) ;
return estimated[estimated.length-1];
}
function transferAccidentalTokens(IERC20 token ) external {
require(owner != address(0),"UnifiRouter: Not found");
uint balance = IERC20(token).balanceOf(address(this));
if(balance > 0 ){
IERC20(token).transfer(owner ,balance);
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"getName","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"depositToken","type":"address"},{"name":"requireTokenA","type":"address"},{"name":"requireTokenB","type":"address"},{"name":"amount","type":"uint256"},{"name":"to","type":"address"},{"name":"path1","type":"address[]"},{"name":"path2","type":"address[]"},{"name":"minOut","type":"uint256"}],"name":"convertSingleAssetToOtherLiquidity","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"receiveToken","type":"address"},{"name":"liquidityToken","type":"address"},{"name":"tokenA","type":"address"},{"name":"tokenB","type":"address"},{"name":"to","type":"address"},{"name":"amount","type":"uint256"},{"name":"path1","type":"address[]"},{"name":"path2","type":"address[]"},{"name":"toReceiveWNative","type":"bool"},{"name":"minOut","type":"uint256"}],"name":"withdrawSupplyAsOtherSingleAsset","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"receiveToken","type":"address"},{"name":"liquidityToken","type":"address"},{"name":"tokenA","type":"address"},{"name":"tokenB","type":"address"},{"name":"to","type":"address"},{"name":"amount","type":"uint256"},{"name":"toReceiveWNative","type":"bool"},{"name":"minOut","type":"uint256"}],"name":"withdrawSupplyAsSingleAsset","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"unifiRouter","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"transferAccidentalTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenA","type":"address"},{"name":"requireToken","type":"address"},{"name":"amount","type":"uint256"},{"name":"to","type":"address"},{"name":"minOut","type":"uint256"}],"name":"convertSingleAssetToLiquidity","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_factory","type":"address"}],"name":"updateOtherFactory","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"requireToken","type":"address"},{"name":"to","type":"address"},{"name":"minOut","type":"uint256"}],"name":"convertSingleAssetToLiquidityEth","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"otherFactory","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"requireTokenA","type":"address"},{"name":"requireTokenB","type":"address"},{"name":"to","type":"address"},{"name":"path1","type":"address[]"},{"name":"path2","type":"address[]"},{"name":"minOut","type":"uint256"}],"name":"convertSingleAssetToOtherLiquidityETH","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"pancakeRouter","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newRouter","type":"address"}],"name":"updateRouter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_amount","type":"uint256"},{"name":"path","type":"address[]"}],"name":"pancakeOutput","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tradeRouter","type":"address"}],"name":"updateUnifiRouter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_amount","type":"uint256"},{"name":"path","type":"address[]"}],"name":"unifiOutput","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tradeRouter","type":"address"}],"name":"updatePancakeRouter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"wETH","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"router","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newWETH","type":"address"}],"name":"updateWETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_pancakeRouter","type":"address"},{"name":"_unifiRouter","type":"address"},{"name":"_routerAdd","type":"address"},{"name":"_weth","type":"address"},{"name":"_otherFactory","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]Contract Creation Code
608060405234801561001057600080fd5b5060405160a080613d8e833981018060405260a081101561003057600080fd5b50805160208201516040830151606084015160809094015160008054336001600160a01b03199182161782556001805482166001600160a01b03958616179055600480548216968516969096179095556005805486169484169490941790935560028054851695831695909517909455600680549093169316929092179055613ccf9081906100bf90396000f3fe60806040526004361061012a5760003560e01c80639bf05475116100ab578063d4afd5701161006f578063d4afd57014610760578063d609ac4214610793578063d880cd8514610848578063f24286211461087b578063f887ea4014610890578063fe9440d7146108a55761012a565b80639bf054751461055d578063b91dde1b14610572578063c21ebd0714610651578063c851cc3214610666578063cac561c4146106995761012a565b80637673a1a9116100f25780637673a1a91461045b57806379fa87fd1461048e5780638da5cb5b146104df5780638f76369b146104f45780639031c871146105275761012a565b806317d7de7c1461012f5780633863264d146101b95780633998dcff146102b65780636d34112d146103c257806374b1f8db1461042a575b600080fd5b34801561013b57600080fd5b506101446108d8565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017e578181015183820152602001610166565b50505050905090810190601f1680156101ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101c557600080fd5b506102b460048036036101008110156101dd57600080fd5b6001600160a01b0382358116926020810135821692604082013583169260608301359260808101359091169181019060c0810160a0820135600160201b81111561022657600080fd5b82018360208201111561023857600080fd5b803590602001918460208302840111600160201b8311171561025957600080fd5b919390929091602081019035600160201b81111561027657600080fd5b82018360208201111561028857600080fd5b803590602001918460208302840111600160201b831117156102a957600080fd5b91935091503561090f565b005b3480156102c257600080fd5b506102b460048036036101408110156102da57600080fd5b6001600160a01b03823581169260208101358216926040820135831692606083013581169260808101359091169160a0820135919081019060e0810160c0820135600160201b81111561032c57600080fd5b82018360208201111561033e57600080fd5b803590602001918460208302840111600160201b8311171561035f57600080fd5b919390929091602081019035600160201b81111561037c57600080fd5b82018360208201111561038e57600080fd5b803590602001918460208302840111600160201b831117156103af57600080fd5b9193509150803515159060200135610def565b3480156103ce57600080fd5b506102b460048036036101008110156103e657600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101358216916080820135169060a08101359060c081013515159060e001356112c8565b34801561043657600080fd5b5061043f6116c2565b604080516001600160a01b039092168252519081900360200190f35b34801561046757600080fd5b506102b46004803603602081101561047e57600080fd5b50356001600160a01b03166116d1565b34801561049a57600080fd5b506102b4600480360360a08110156104b157600080fd5b506001600160a01b03813581169160208101358216916040820135916060810135909116906080013561183f565b3480156104eb57600080fd5b5061043f611c7b565b34801561050057600080fd5b506102b46004803603602081101561051757600080fd5b50356001600160a01b0316611c8a565b6102b46004803603606081101561053d57600080fd5b506001600160a01b03813581169160208101359091169060400135611cc3565b34801561056957600080fd5b5061043f61217f565b6102b4600480360360c081101561058857600080fd5b6001600160a01b0382358116926020810135821692604082013590921691810190608081016060820135600160201b8111156105c357600080fd5b8201836020820111156105d557600080fd5b803590602001918460208302840111600160201b831117156105f657600080fd5b919390929091602081019035600160201b81111561061357600080fd5b82018360208201111561062557600080fd5b803590602001918460208302840111600160201b8311171561064657600080fd5b91935091503561218e565b34801561065d57600080fd5b5061043f61265b565b34801561067257600080fd5b506102b46004803603602081101561068957600080fd5b50356001600160a01b031661266a565b3480156106a557600080fd5b5061074e600480360360408110156106bc57600080fd5b81359190810190604081016020820135600160201b8111156106dd57600080fd5b8201836020820111156106ef57600080fd5b803590602001918460208302840111600160201b8311171561071057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506126a3945050505050565b60408051918252519081900360200190f35b34801561076c57600080fd5b506102b46004803603602081101561078357600080fd5b50356001600160a01b03166127e8565b34801561079f57600080fd5b5061074e600480360360408110156107b657600080fd5b81359190810190604081016020820135600160201b8111156107d757600080fd5b8201836020820111156107e957600080fd5b803590602001918460208302840111600160201b8311171561080a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612821945050505050565b34801561085457600080fd5b506102b46004803603602081101561086b57600080fd5b50356001600160a01b0316612891565b34801561088757600080fd5b5061043f6128ca565b34801561089c57600080fd5b5061043f6128d9565b3480156108b157600080fd5b506102b4600480360360208110156108c857600080fd5b50356001600160a01b03166128e8565b60408051808201909152601481527f73696e676c6541737365744465706f7369746f72000000000000000000000000602082015290565b61092a6001600160a01b038b1633308a63ffffffff61292116565b6000808815610c15576109826109478a600263ffffffff61297e16565b8888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892506129c7915050565b6109d16109968a600263ffffffff61297e16565b8686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892506129c7915050565b60408051600160e01b6370a0823102815230600482015290516001600160a01b038d16916370a08231916024808301926020929190829003018186803b158015610a1a57600080fd5b505afa158015610a2e573d6000803e3d6000fd5b505050506040513d6020811015610a4457600080fd5b505160408051600160e01b6370a0823102815230600482015290519193506001600160a01b038c16916370a0823191602480820192602092909190829003018186803b158015610a9357600080fd5b505afa158015610aa7573d6000803e3d6000fd5b505050506040513d6020811015610abd57600080fd5b5051600154909150610ae3906001600160a01b038d81169116600063ffffffff6130bf16565b600154610b04906001600160a01b038c81169116600063ffffffff6130bf16565b600154610b24906001600160a01b038d811691168463ffffffff6130bf16565b600154610b44906001600160a01b038c811691168363ffffffff6130bf16565b6001546001600160a01b031663e8e337008c8c85856000808f610b6f4261070863ffffffff6131e216565b6040805163ffffffff8b1660e01b81526001600160a01b03998a166004820152978916602489015260448801969096526064870194909452608486019290925260a485015290931660c483015260e482019290925290516101048083019260609291908290030181600087803b158015610be857600080fd5b505af1158015610bfc573d6000803e3d6000fd5b505050506040513d6060811015610c1257600080fd5b50505b60408051600160e01b6370a0823102815230600482015290516001600160a01b038d16916370a08231916024808301926020929190829003018186803b158015610c5e57600080fd5b505afa158015610c72573d6000803e3d6000fd5b505050506040513d6020811015610c8857600080fd5b505160408051600160e01b6370a0823102815230600482015290519193506001600160a01b038c16916370a0823191602480820192602092909190829003018186803b158015610cd757600080fd5b505afa158015610ceb573d6000803e3d6000fd5b505050506040513d6020811015610d0157600080fd5b505160408051600160e01b6370a0823102815230600482015290519192506000916001600160a01b038f16916370a08231916024808301926020929190829003018186803b158015610d5257600080fd5b505afa158015610d66573d6000803e3d6000fd5b505050506040513d6020811015610d7c57600080fd5b505190508215610da057610da06001600160a01b038d168a8563ffffffff61323f16565b8115610dc057610dc06001600160a01b038c168a8463ffffffff61323f16565b8015610de057610de06001600160a01b038e168a8363ffffffff61323f16565b50505050505050505050505050565b83836000198101818110610dff57fe5b905060200201356001600160a01b03166001600160a01b03168686600189899050038181101515610e2c57fe5b905060200201356001600160a01b03166001600160a01b0316141515610e9c5760408051600160e51b62461bcd02815260206004820152601760248201527f4e6565647320746f2062652073616d6520746f6b656e20000000000000000000604482015290519081900360640190fd5b610eb76001600160a01b038c1633308a63ffffffff61292116565b600154610ed8906001600160a01b038d81169116600063ffffffff6130bf16565b600154610ef8906001600160a01b038d811691168963ffffffff6130bf16565b600180546001600160a01b03169063baa2abde908c908c908b908030610f264261070863ffffffff6131e216565b6040805163ffffffff8a1660e01b81526001600160a01b039889166004820152968816602488015260448701959095526064860193909352608485019190915290931660a483015260c4820192909252815160e480830193928290030181600087803b158015610f9557600080fd5b505af1158015610fa9573d6000803e3d6000fd5b505050506040513d6040811015610fbf57600080fd5b505060408051600160e01b6370a082310281523060048201529051611074916001600160a01b038d16916370a0823191602480820192602092909190829003018186803b15801561100f57600080fd5b505afa158015611023573d6000803e3d6000fd5b505050506040513d602081101561103957600080fd5b5051604080516020898102828101820190935289825290918a918a9182918501908490808284376000920191909152508692506129c7915050565b60408051600160e01b6370a082310281523060048201529051611127916001600160a01b038c16916370a0823191602480820192602092909190829003018186803b1580156110c257600080fd5b505afa1580156110d6573d6000803e3d6000fd5b505050506040513d60208110156110ec57600080fd5b5051604080516020878102828101820190935287825290918891889182918501908490808284376000920191909152508692506129c7915050565b60408051600160e01b6370a0823102815230600482015290516000916001600160a01b038f16916370a0823191602480820192602092909190829003018186803b15801561117457600080fd5b505afa158015611188573d6000803e3d6000fd5b505050506040513d602081101561119e57600080fd5b50516002549091506001600160a01b038e811691161480156111c257506001831515145b156112ae576001546002546111eb916001600160a01b039182169116600063ffffffff6130bf16565b60015460025461120e916001600160a01b0391821691168363ffffffff6130bf16565b60025460408051600160e01b632e1a7d4d0281526004810184905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b15801561125e57600080fd5b505af1158015611272573d6000803e3d6000fd5b50506040516001600160a01b038c16925083156108fc02915083906000818181858888f193505050501580156112ac573d6000803e3d6000fd5b505b610de06001600160a01b038e168a8363ffffffff61323f16565b6112e36001600160a01b03881633308663ffffffff61292116565b600154611304906001600160a01b038981169116600063ffffffff6130bf16565b600154611324906001600160a01b0389811691168563ffffffff6130bf16565b600180546001600160a01b03169063baa2abde9088908890879080306113524261070863ffffffff6131e216565b6040805163ffffffff8a1660e01b81526001600160a01b039889166004820152968816602488015260448701959095526064860193909352608485019190915290931660a483015260c4820192909252815160e480830193928290030181600087803b1580156113c157600080fd5b505af11580156113d5573d6000803e3d6000fd5b505050506040513d60408110156113eb57600080fd5b50506001600160a01b03868116908916141561148e5760408051600160e01b6370a0823102815230600482015290516000916001600160a01b038816916370a0823191602480820192602092909190829003018186803b15801561144e57600080fd5b505afa158015611462573d6000803e3d6000fd5b505050506040513d602081101561147857600080fd5b5051905061148881878b85613294565b50611531565b876001600160a01b0316856001600160a01b031614156115315760408051600160e01b6370a0823102815230600482015290516000916001600160a01b038916916370a0823191602480820192602092909190829003018186803b1580156114f557600080fd5b505afa158015611509573d6000803e3d6000fd5b505050506040513d602081101561151f57600080fd5b5051905061152f81888b85613294565b505b60408051600160e01b6370a0823102815230600482015290516000916001600160a01b038b16916370a0823191602480820192602092909190829003018186803b15801561157e57600080fd5b505afa158015611592573d6000803e3d6000fd5b505050506040513d60208110156115a857600080fd5b50519050821561169d576001546002546115d6916001600160a01b039182169116600063ffffffff6130bf16565b6001546002546115f9916001600160a01b0391821691168363ffffffff6130bf16565b60025460408051600160e01b632e1a7d4d0281526004810184905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b15801561164957600080fd5b505af115801561165d573d6000803e3d6000fd5b50506040516001600160a01b038816925083156108fc02915083906000818181858888f19350505050158015611697573d6000803e3d6000fd5b506116b7565b6116b76001600160a01b038a16868363ffffffff61323f16565b505050505050505050565b6005546001600160a01b031681565b6000546001600160a01b031615156117335760408051600160e51b62461bcd02815260206004820152601660248201527f556e696669526f757465723a204e6f7420666f756e6400000000000000000000604482015290519081900360640190fd5b60408051600160e01b6370a0823102815230600482015290516000916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561178057600080fd5b505afa158015611794573d6000803e3d6000fd5b505050506040513d60208110156117aa57600080fd5b50519050801561183b576000805460408051600160e01b63a9059cbb0281526001600160a01b0392831660048201526024810185905290519185169263a9059cbb926044808401936020939083900390910190829087803b15801561180e57600080fd5b505af1158015611822573d6000803e3d6000fd5b505050506040513d602081101561183857600080fd5b50505b5050565b61185a6001600160a01b03861633308663ffffffff61292116565b60408051600160e01b6370a0823102815230600482015290516000916001600160a01b038816916370a0823191602480820192602092909190829003018186803b1580156118a757600080fd5b505afa1580156118bb573d6000803e3d6000fd5b505050506040513d60208110156118d157600080fd5b505190508015611b40576118f76118ef82600263ffffffff61297e16565b878785613294565b60408051600160e01b6370a0823102815230600482015290516000916001600160a01b038816916370a0823191602480820192602092909190829003018186803b15801561194457600080fd5b505afa158015611958573d6000803e3d6000fd5b505050506040513d602081101561196e57600080fd5b505160408051600160e01b6370a0823102815230600482015290519192506001600160a01b038916916370a0823191602480820192602092909190829003018186803b1580156119bd57600080fd5b505afa1580156119d1573d6000803e3d6000fd5b505050506040513d60208110156119e757600080fd5b5051600154909250611a0d906001600160a01b038981169116600063ffffffff6130bf16565b600154611a2e906001600160a01b038881169116600063ffffffff6130bf16565b600154611a4e906001600160a01b0389811691168463ffffffff6130bf16565b600154611a6e906001600160a01b0388811691168363ffffffff6130bf16565b6001546001600160a01b031663e8e33700888885856000808b611a994261070863ffffffff6131e216565b6040805163ffffffff8b1660e01b81526001600160a01b03998a166004820152978916602489015260448801969096526064870194909452608486019290925260a485015290931660c483015260e482019290925290516101048083019260609291908290030181600087803b158015611b1257600080fd5b505af1158015611b26573d6000803e3d6000fd5b505050506040513d6060811015611b3c57600080fd5b5050505b60408051600160e01b6370a0823102815230600482015290516001600160a01b038816916370a08231916024808301926020929190829003018186803b158015611b8957600080fd5b505afa158015611b9d573d6000803e3d6000fd5b505050506040513d6020811015611bb357600080fd5b505160408051600160e01b6370a0823102815230600482015290519192506000916001600160a01b038816916370a08231916024808301926020929190829003018186803b158015611c0457600080fd5b505afa158015611c18573d6000803e3d6000fd5b505050506040513d6020811015611c2e57600080fd5b505190508115611c5257611c526001600160a01b038816858463ffffffff61323f16565b8015611c7257611c726001600160a01b038716858363ffffffff61323f16565b50505050505050565b6000546001600160a01b031681565b6000546001600160a01b03163314611ca157600080fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b341515611ccf57600080fd5b600260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015611d1f57600080fd5b505af1158015611d33573d6000803e3d6000fd5b505060025460408051600160e01b6370a082310281523060048201529051600095506001600160a01b0390921693506370a082319250602480820192602092909190829003018186803b158015611d8957600080fd5b505afa158015611d9d573d6000803e3d6000fd5b505050506040513d6020811015611db357600080fd5b50519050801561203e57611de4611dd182600263ffffffff61297e16565b6002546001600160a01b03168685613294565b60408051600160e01b6370a0823102815230600482015290516000916001600160a01b038716916370a0823191602480820192602092909190829003018186803b158015611e3157600080fd5b505afa158015611e45573d6000803e3d6000fd5b505050506040513d6020811015611e5b57600080fd5b505160025460408051600160e01b6370a0823102815230600482015290519293506001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015611eae57600080fd5b505afa158015611ec2573d6000803e3d6000fd5b505050506040513d6020811015611ed857600080fd5b5051600154600254919350611f01916001600160a01b039081169116600063ffffffff6130bf16565b600154600254611f24916001600160a01b0391821691168463ffffffff6130bf16565b600154611f45906001600160a01b038781169116600063ffffffff6130bf16565b600154611f65906001600160a01b0387811691168363ffffffff6130bf16565b6001546002546001600160a01b039182169163e8e3370091168785856000808b611f974261070863ffffffff6131e216565b6040805163ffffffff8b1660e01b81526001600160a01b03998a166004820152978916602489015260448801969096526064870194909452608486019290925260a485015290931660c483015260e482019290925290516101048083019260609291908290030181600087803b15801561201057600080fd5b505af1158015612024573d6000803e3d6000fd5b505050506040513d606081101561203a57600080fd5b5050505b60025460408051600160e01b6370a0823102815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561208c57600080fd5b505afa1580156120a0573d6000803e3d6000fd5b505050506040513d60208110156120b657600080fd5b505160408051600160e01b6370a0823102815230600482015290519192506000916001600160a01b038716916370a08231916024808301926020929190829003018186803b15801561210757600080fd5b505afa15801561211b573d6000803e3d6000fd5b505050506040513d602081101561213157600080fd5b50519050811561215857600254612158906001600160a01b0316858463ffffffff61323f16565b8015612178576121786001600160a01b038616858363ffffffff61323f16565b5050505050565b6006546001600160a01b031681565b34151561219a57600080fd5b600260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156121ea57600080fd5b505af11580156121fe573d6000803e3d6000fd5b5060009350839250503415905061247b5761222361094734600263ffffffff61297e16565b61223761099634600263ffffffff61297e16565b60408051600160e01b6370a0823102815230600482015290516001600160a01b038c16916370a08231916024808301926020929190829003018186803b15801561228057600080fd5b505afa158015612294573d6000803e3d6000fd5b505050506040513d60208110156122aa57600080fd5b505160408051600160e01b6370a0823102815230600482015290519193506001600160a01b038b16916370a0823191602480820192602092909190829003018186803b1580156122f957600080fd5b505afa15801561230d573d6000803e3d6000fd5b505050506040513d602081101561232357600080fd5b5051600154909150612349906001600160a01b038c81169116600063ffffffff6130bf16565b60015461236a906001600160a01b038b81169116600063ffffffff6130bf16565b60015461238a906001600160a01b038c811691168463ffffffff6130bf16565b6001546123aa906001600160a01b038b811691168363ffffffff6130bf16565b6001546001600160a01b031663e8e337008b8b85856000808f6123d54261271063ffffffff6131e216565b6040805163ffffffff8b1660e01b81526001600160a01b03998a166004820152978916602489015260448801969096526064870194909452608486019290925260a485015290931660c483015260e482019290925290516101048083019260609291908290030181600087803b15801561244e57600080fd5b505af1158015612462573d6000803e3d6000fd5b505050506040513d606081101561247857600080fd5b50505b60408051600160e01b6370a0823102815230600482015290516001600160a01b038c16916370a08231916024808301926020929190829003018186803b1580156124c457600080fd5b505afa1580156124d8573d6000803e3d6000fd5b505050506040513d60208110156124ee57600080fd5b505160408051600160e01b6370a0823102815230600482015290519193506001600160a01b038b16916370a0823191602480820192602092909190829003018186803b15801561253d57600080fd5b505afa158015612551573d6000803e3d6000fd5b505050506040513d602081101561256757600080fd5b505160025460408051600160e01b6370a0823102815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156125bd57600080fd5b505afa1580156125d1573d6000803e3d6000fd5b505050506040513d60208110156125e757600080fd5b50519050821561260b5761260b6001600160a01b038c168a8563ffffffff61323f16565b811561262b5761262b6001600160a01b038b168a8463ffffffff61323f16565b801561264e5760025461264e906001600160a01b03168a8363ffffffff61323f16565b5050505050505050505050565b6004546001600160a01b031681565b6000546001600160a01b0316331461268157600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6004805460408051600160e01b63d06ca61f028152928301858152602484019182528451604485015284516000946060946001600160a01b03169363d06ca61f938993899391929160640190602080860191028083838d5b838110156127135781810151838201526020016126fb565b50505050905001935050505060006040518083038186803b15801561273757600080fd5b505afa15801561274b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561277457600080fd5b810190808051600160201b81111561278b57600080fd5b8201602081018481111561279e57600080fd5b81518560208202830111600160201b821117156127ba57600080fd5b5050805190945084935060001981019250821090506127d557fe5b9060200190602002015191505092915050565b6000546001600160a01b031633146127ff57600080fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b60055460408051600160e01b63d06ca61f02815260048101858152602482019283528451604483015284516000946060946001600160a01b039091169363d06ca61f9389938993919260640190602080860191028083838d838110156127135781810151838201526020016126fb565b6000546001600160a01b031633146128a857600080fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031681565b6001546001600160a01b031681565b6000546001600160a01b031633146128ff57600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b0316600160e01b6323b872dd02179052611838908590613997565b60006129c083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b5e565b9392505050565b6004805460408051600160e01b63d06ca61f028152928301868152602484019182528551604485015285516060946001600160a01b039094169363d06ca61f93899389939092606401906020808601910280838360005b83811015612a36578181015183820152602001612a1e565b50505050905001935050505060006040518083038186803b158015612a5a57600080fd5b505afa158015612a6e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612a9757600080fd5b810190808051600160201b811115612aae57600080fd5b82016020810184811115612ac157600080fd5b81518560208202830111600160201b82111715612add57600080fd5b505060055460408051600160e01b63d06ca61f028152600481018b8152602482019283528a5160448301528a51949850606097506001600160a01b03909316955063d06ca61f94508a938a939291606401906020808601910280838360005b83811015612b54578181015183820152602001612b3c565b50505050905001935050505060006040518083038186803b158015612b7857600080fd5b505afa158015612b8c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612bb557600080fd5b810190808051600160201b811115612bcc57600080fd5b82016020810184811115612bdf57600080fd5b81518560208202830111600160201b82111715612bfb57600080fd5b50506006548851919550600094506001600160a01b0316925063e6a439059150879084908110612c2757fe5b90602001906020020151876001815181101515612c4057fe5b60209081029091018101516040805163ffffffff861660e01b81526001600160a01b03948516600482015293909116602484015251604480840193829003018186803b158015612c8f57600080fd5b505afa158015612ca3573d6000803e3d6000fd5b505050506040513d6020811015612cb957600080fd5b50516001600160a01b03161415612e86576005548451612d0c916001600160a01b031690600090879082908110612cec57fe5b602090810290910101516001600160a01b0316919063ffffffff6130bf16565b6005548451612d2e916001600160a01b031690879087906000908110612cec57fe5b6005546001600160a01b03166338ed173986858730612d554261271063ffffffff6131e216565b6040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612dce578181015183820152602001612db6565b505050509050019650505050505050600060405180830381600087803b158015612df757600080fd5b505af1158015612e0b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612e3457600080fd5b810190808051600160201b811115612e4b57600080fd5b82016020810184811115612e5e57600080fd5b81518560208202830111600160201b82111715612e7a57600080fd5b50612178945050505050565b805181906000198101908110612e9857fe5b90602001906020020151826001845103815181101515612eb457fe5b906020019060200201511115612f2f576004548451612ee6916001600160a01b031690600090879082908110612cec57fe5b6004548451612f08916001600160a01b031690879087906000908110612cec57fe5b6004546001600160a01b03166338ed173986858730612d554261271063ffffffff6131e216565b6005548451612f51916001600160a01b031690600090879082908110612cec57fe5b6005548451612f73916001600160a01b031690879087906000908110612cec57fe5b6005546001600160a01b03166338ed173986858730612f9a4261271063ffffffff6131e216565b6040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613013578181015183820152602001612ffb565b505050509050019650505050505050600060405180830381600087803b15801561303c57600080fd5b505af1158015613050573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561307957600080fd5b810190808051600160201b81111561309057600080fd5b820160208101848111156130a357600080fd5b81518560208202830111600160201b8211171561264e57600080fd5b801580613148575060408051600160e11b636eb1769f0281523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561311a57600080fd5b505afa15801561312e573d6000803e3d6000fd5b505050506040513d602081101561314457600080fd5b5051155b151561318857604051600160e51b62461bcd028152600401808060200182810382526036815260200180613c6e6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0316600160e01b63095ea7b3021790526131dd908490613997565b505050565b6000828201838110156129c05760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0316600160e01b63a9059cbb021790526131dd908490613997565b6040805160028082526060808301845292602083019080388339019050509050838160008151811015156132c457fe5b6001600160a01b0390921660209283029091019091015280518390829060019081106132ec57fe5b6001600160a01b03928316602091820290920181019190915260065460408051600160e01b63e6a43905028152888516600482015287851660248201529051600094929092169263e6a4390592604480840193829003018186803b15801561335357600080fd5b505afa158015613367573d6000803e3d6000fd5b505050506040513d602081101561337d57600080fd5b50516001600160a01b031614156133f6576005546133af906001600160a01b038681169116600063ffffffff6130bf16565b6005546133cf906001600160a01b0386811691168763ffffffff6130bf16565b6005546001600160a01b03166338ed173986848430612d554261271063ffffffff6131e216565b6004805460408051600160e01b63d06ca61f028152928301888152602484019182528451604485015284516060946001600160a01b039094169363d06ca61f938b9388939092606401906020808601910280838360005b8381101561346557818101518382015260200161344d565b50505050905001935050505060006040518083038186803b15801561348957600080fd5b505afa15801561349d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156134c657600080fd5b810190808051600160201b8111156134dd57600080fd5b820160208101848111156134f057600080fd5b81518560208202830111600160201b8211171561350c57600080fd5b505060055460408051600160e01b63d06ca61f028152600481018d815260248201928352895160448301528951949850606097506001600160a01b03909316955063d06ca61f94508c9389939291606401906020808601910280838360005b8381101561358357818101518382015260200161356b565b50505050905001935050505060006040518083038186803b1580156135a757600080fd5b505afa1580156135bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156135e457600080fd5b810190808051600160201b8111156135fb57600080fd5b8201602081018481111561360e57600080fd5b81518560208202830111600160201b8211171561362a57600080fd5b50508051909450849350600019810192508210905061364557fe5b9060200190602002015182600184510381518110151561366157fe5b90602001906020020151111561380a57600454613692906001600160a01b038881169116600063ffffffff6130bf16565b6004546136b2906001600160a01b0388811691168963ffffffff6130bf16565b6004546001600160a01b03166338ed1739888686306136d94261271063ffffffff6131e216565b6040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561375257818101518382015260200161373a565b505050509050019650505050505050600060405180830381600087803b15801561377b57600080fd5b505af115801561378f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156137b857600080fd5b810190808051600160201b8111156137cf57600080fd5b820160208101848111156137e257600080fd5b81518560208202830111600160201b821117156137fe57600080fd5b50611c72945050505050565b60055461382b906001600160a01b038881169116600063ffffffff6130bf16565b60055461384b906001600160a01b0388811691168963ffffffff6130bf16565b6005546001600160a01b03166338ed1739888686306138724261271063ffffffff6131e216565b6040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156138eb5781810151838201526020016138d3565b505050509050019650505050505050600060405180830381600087803b15801561391457600080fd5b505af1158015613928573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561395157600080fd5b810190808051600160201b81111561396857600080fd5b8201602081018481111561397b57600080fd5b81518560208202830111600160201b82111715610de057600080fd5b6139a9826001600160a01b0316613c07565b15156139ff5760408051600160e51b62461bcd02815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310613a3d5780518252601f199092019160209182019101613a1e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613a9f576040519150601f19603f3d011682016040523d82523d6000602084013e613aa4565b606091505b5091509150811515613b005760408051600160e51b62461bcd02815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561183857808060200190516020811015613b1c57600080fd5b5051151561183857604051600160e51b62461bcd02815260040180806020018281038252602a815260200180613c44602a913960400191505060405180910390fd5b600081831515613bef57604051600160e51b62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613bb4578181015183820152602001613b9c565b50505050905090810190601f168015613be15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385811515613bfd57fe5b0495945050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590613c3b57508115155b94935050505056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a165627a7a72305820611857737e6014b583b79adeeb75c8265f637fd207aa079ab66b785ac7d48a1b00290000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000079f12d68631ec6396aab3cdf31f07c90d0023c9a00000000000000000000000079f12d68631ec6396aab3cdf31f07c90d0023c9a000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f
Deployed Bytecode
0x60806040526004361061012a5760003560e01c80639bf05475116100ab578063d4afd5701161006f578063d4afd57014610760578063d609ac4214610793578063d880cd8514610848578063f24286211461087b578063f887ea4014610890578063fe9440d7146108a55761012a565b80639bf054751461055d578063b91dde1b14610572578063c21ebd0714610651578063c851cc3214610666578063cac561c4146106995761012a565b80637673a1a9116100f25780637673a1a91461045b57806379fa87fd1461048e5780638da5cb5b146104df5780638f76369b146104f45780639031c871146105275761012a565b806317d7de7c1461012f5780633863264d146101b95780633998dcff146102b65780636d34112d146103c257806374b1f8db1461042a575b600080fd5b34801561013b57600080fd5b506101446108d8565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017e578181015183820152602001610166565b50505050905090810190601f1680156101ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101c557600080fd5b506102b460048036036101008110156101dd57600080fd5b6001600160a01b0382358116926020810135821692604082013583169260608301359260808101359091169181019060c0810160a0820135600160201b81111561022657600080fd5b82018360208201111561023857600080fd5b803590602001918460208302840111600160201b8311171561025957600080fd5b919390929091602081019035600160201b81111561027657600080fd5b82018360208201111561028857600080fd5b803590602001918460208302840111600160201b831117156102a957600080fd5b91935091503561090f565b005b3480156102c257600080fd5b506102b460048036036101408110156102da57600080fd5b6001600160a01b03823581169260208101358216926040820135831692606083013581169260808101359091169160a0820135919081019060e0810160c0820135600160201b81111561032c57600080fd5b82018360208201111561033e57600080fd5b803590602001918460208302840111600160201b8311171561035f57600080fd5b919390929091602081019035600160201b81111561037c57600080fd5b82018360208201111561038e57600080fd5b803590602001918460208302840111600160201b831117156103af57600080fd5b9193509150803515159060200135610def565b3480156103ce57600080fd5b506102b460048036036101008110156103e657600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101358216916080820135169060a08101359060c081013515159060e001356112c8565b34801561043657600080fd5b5061043f6116c2565b604080516001600160a01b039092168252519081900360200190f35b34801561046757600080fd5b506102b46004803603602081101561047e57600080fd5b50356001600160a01b03166116d1565b34801561049a57600080fd5b506102b4600480360360a08110156104b157600080fd5b506001600160a01b03813581169160208101358216916040820135916060810135909116906080013561183f565b3480156104eb57600080fd5b5061043f611c7b565b34801561050057600080fd5b506102b46004803603602081101561051757600080fd5b50356001600160a01b0316611c8a565b6102b46004803603606081101561053d57600080fd5b506001600160a01b03813581169160208101359091169060400135611cc3565b34801561056957600080fd5b5061043f61217f565b6102b4600480360360c081101561058857600080fd5b6001600160a01b0382358116926020810135821692604082013590921691810190608081016060820135600160201b8111156105c357600080fd5b8201836020820111156105d557600080fd5b803590602001918460208302840111600160201b831117156105f657600080fd5b919390929091602081019035600160201b81111561061357600080fd5b82018360208201111561062557600080fd5b803590602001918460208302840111600160201b8311171561064657600080fd5b91935091503561218e565b34801561065d57600080fd5b5061043f61265b565b34801561067257600080fd5b506102b46004803603602081101561068957600080fd5b50356001600160a01b031661266a565b3480156106a557600080fd5b5061074e600480360360408110156106bc57600080fd5b81359190810190604081016020820135600160201b8111156106dd57600080fd5b8201836020820111156106ef57600080fd5b803590602001918460208302840111600160201b8311171561071057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506126a3945050505050565b60408051918252519081900360200190f35b34801561076c57600080fd5b506102b46004803603602081101561078357600080fd5b50356001600160a01b03166127e8565b34801561079f57600080fd5b5061074e600480360360408110156107b657600080fd5b81359190810190604081016020820135600160201b8111156107d757600080fd5b8201836020820111156107e957600080fd5b803590602001918460208302840111600160201b8311171561080a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612821945050505050565b34801561085457600080fd5b506102b46004803603602081101561086b57600080fd5b50356001600160a01b0316612891565b34801561088757600080fd5b5061043f6128ca565b34801561089c57600080fd5b5061043f6128d9565b3480156108b157600080fd5b506102b4600480360360208110156108c857600080fd5b50356001600160a01b03166128e8565b60408051808201909152601481527f73696e676c6541737365744465706f7369746f72000000000000000000000000602082015290565b61092a6001600160a01b038b1633308a63ffffffff61292116565b6000808815610c15576109826109478a600263ffffffff61297e16565b8888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892506129c7915050565b6109d16109968a600263ffffffff61297e16565b8686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892506129c7915050565b60408051600160e01b6370a0823102815230600482015290516001600160a01b038d16916370a08231916024808301926020929190829003018186803b158015610a1a57600080fd5b505afa158015610a2e573d6000803e3d6000fd5b505050506040513d6020811015610a4457600080fd5b505160408051600160e01b6370a0823102815230600482015290519193506001600160a01b038c16916370a0823191602480820192602092909190829003018186803b158015610a9357600080fd5b505afa158015610aa7573d6000803e3d6000fd5b505050506040513d6020811015610abd57600080fd5b5051600154909150610ae3906001600160a01b038d81169116600063ffffffff6130bf16565b600154610b04906001600160a01b038c81169116600063ffffffff6130bf16565b600154610b24906001600160a01b038d811691168463ffffffff6130bf16565b600154610b44906001600160a01b038c811691168363ffffffff6130bf16565b6001546001600160a01b031663e8e337008c8c85856000808f610b6f4261070863ffffffff6131e216565b6040805163ffffffff8b1660e01b81526001600160a01b03998a166004820152978916602489015260448801969096526064870194909452608486019290925260a485015290931660c483015260e482019290925290516101048083019260609291908290030181600087803b158015610be857600080fd5b505af1158015610bfc573d6000803e3d6000fd5b505050506040513d6060811015610c1257600080fd5b50505b60408051600160e01b6370a0823102815230600482015290516001600160a01b038d16916370a08231916024808301926020929190829003018186803b158015610c5e57600080fd5b505afa158015610c72573d6000803e3d6000fd5b505050506040513d6020811015610c8857600080fd5b505160408051600160e01b6370a0823102815230600482015290519193506001600160a01b038c16916370a0823191602480820192602092909190829003018186803b158015610cd757600080fd5b505afa158015610ceb573d6000803e3d6000fd5b505050506040513d6020811015610d0157600080fd5b505160408051600160e01b6370a0823102815230600482015290519192506000916001600160a01b038f16916370a08231916024808301926020929190829003018186803b158015610d5257600080fd5b505afa158015610d66573d6000803e3d6000fd5b505050506040513d6020811015610d7c57600080fd5b505190508215610da057610da06001600160a01b038d168a8563ffffffff61323f16565b8115610dc057610dc06001600160a01b038c168a8463ffffffff61323f16565b8015610de057610de06001600160a01b038e168a8363ffffffff61323f16565b50505050505050505050505050565b83836000198101818110610dff57fe5b905060200201356001600160a01b03166001600160a01b03168686600189899050038181101515610e2c57fe5b905060200201356001600160a01b03166001600160a01b0316141515610e9c5760408051600160e51b62461bcd02815260206004820152601760248201527f4e6565647320746f2062652073616d6520746f6b656e20000000000000000000604482015290519081900360640190fd5b610eb76001600160a01b038c1633308a63ffffffff61292116565b600154610ed8906001600160a01b038d81169116600063ffffffff6130bf16565b600154610ef8906001600160a01b038d811691168963ffffffff6130bf16565b600180546001600160a01b03169063baa2abde908c908c908b908030610f264261070863ffffffff6131e216565b6040805163ffffffff8a1660e01b81526001600160a01b039889166004820152968816602488015260448701959095526064860193909352608485019190915290931660a483015260c4820192909252815160e480830193928290030181600087803b158015610f9557600080fd5b505af1158015610fa9573d6000803e3d6000fd5b505050506040513d6040811015610fbf57600080fd5b505060408051600160e01b6370a082310281523060048201529051611074916001600160a01b038d16916370a0823191602480820192602092909190829003018186803b15801561100f57600080fd5b505afa158015611023573d6000803e3d6000fd5b505050506040513d602081101561103957600080fd5b5051604080516020898102828101820190935289825290918a918a9182918501908490808284376000920191909152508692506129c7915050565b60408051600160e01b6370a082310281523060048201529051611127916001600160a01b038c16916370a0823191602480820192602092909190829003018186803b1580156110c257600080fd5b505afa1580156110d6573d6000803e3d6000fd5b505050506040513d60208110156110ec57600080fd5b5051604080516020878102828101820190935287825290918891889182918501908490808284376000920191909152508692506129c7915050565b60408051600160e01b6370a0823102815230600482015290516000916001600160a01b038f16916370a0823191602480820192602092909190829003018186803b15801561117457600080fd5b505afa158015611188573d6000803e3d6000fd5b505050506040513d602081101561119e57600080fd5b50516002549091506001600160a01b038e811691161480156111c257506001831515145b156112ae576001546002546111eb916001600160a01b039182169116600063ffffffff6130bf16565b60015460025461120e916001600160a01b0391821691168363ffffffff6130bf16565b60025460408051600160e01b632e1a7d4d0281526004810184905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b15801561125e57600080fd5b505af1158015611272573d6000803e3d6000fd5b50506040516001600160a01b038c16925083156108fc02915083906000818181858888f193505050501580156112ac573d6000803e3d6000fd5b505b610de06001600160a01b038e168a8363ffffffff61323f16565b6112e36001600160a01b03881633308663ffffffff61292116565b600154611304906001600160a01b038981169116600063ffffffff6130bf16565b600154611324906001600160a01b0389811691168563ffffffff6130bf16565b600180546001600160a01b03169063baa2abde9088908890879080306113524261070863ffffffff6131e216565b6040805163ffffffff8a1660e01b81526001600160a01b039889166004820152968816602488015260448701959095526064860193909352608485019190915290931660a483015260c4820192909252815160e480830193928290030181600087803b1580156113c157600080fd5b505af11580156113d5573d6000803e3d6000fd5b505050506040513d60408110156113eb57600080fd5b50506001600160a01b03868116908916141561148e5760408051600160e01b6370a0823102815230600482015290516000916001600160a01b038816916370a0823191602480820192602092909190829003018186803b15801561144e57600080fd5b505afa158015611462573d6000803e3d6000fd5b505050506040513d602081101561147857600080fd5b5051905061148881878b85613294565b50611531565b876001600160a01b0316856001600160a01b031614156115315760408051600160e01b6370a0823102815230600482015290516000916001600160a01b038916916370a0823191602480820192602092909190829003018186803b1580156114f557600080fd5b505afa158015611509573d6000803e3d6000fd5b505050506040513d602081101561151f57600080fd5b5051905061152f81888b85613294565b505b60408051600160e01b6370a0823102815230600482015290516000916001600160a01b038b16916370a0823191602480820192602092909190829003018186803b15801561157e57600080fd5b505afa158015611592573d6000803e3d6000fd5b505050506040513d60208110156115a857600080fd5b50519050821561169d576001546002546115d6916001600160a01b039182169116600063ffffffff6130bf16565b6001546002546115f9916001600160a01b0391821691168363ffffffff6130bf16565b60025460408051600160e01b632e1a7d4d0281526004810184905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b15801561164957600080fd5b505af115801561165d573d6000803e3d6000fd5b50506040516001600160a01b038816925083156108fc02915083906000818181858888f19350505050158015611697573d6000803e3d6000fd5b506116b7565b6116b76001600160a01b038a16868363ffffffff61323f16565b505050505050505050565b6005546001600160a01b031681565b6000546001600160a01b031615156117335760408051600160e51b62461bcd02815260206004820152601660248201527f556e696669526f757465723a204e6f7420666f756e6400000000000000000000604482015290519081900360640190fd5b60408051600160e01b6370a0823102815230600482015290516000916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561178057600080fd5b505afa158015611794573d6000803e3d6000fd5b505050506040513d60208110156117aa57600080fd5b50519050801561183b576000805460408051600160e01b63a9059cbb0281526001600160a01b0392831660048201526024810185905290519185169263a9059cbb926044808401936020939083900390910190829087803b15801561180e57600080fd5b505af1158015611822573d6000803e3d6000fd5b505050506040513d602081101561183857600080fd5b50505b5050565b61185a6001600160a01b03861633308663ffffffff61292116565b60408051600160e01b6370a0823102815230600482015290516000916001600160a01b038816916370a0823191602480820192602092909190829003018186803b1580156118a757600080fd5b505afa1580156118bb573d6000803e3d6000fd5b505050506040513d60208110156118d157600080fd5b505190508015611b40576118f76118ef82600263ffffffff61297e16565b878785613294565b60408051600160e01b6370a0823102815230600482015290516000916001600160a01b038816916370a0823191602480820192602092909190829003018186803b15801561194457600080fd5b505afa158015611958573d6000803e3d6000fd5b505050506040513d602081101561196e57600080fd5b505160408051600160e01b6370a0823102815230600482015290519192506001600160a01b038916916370a0823191602480820192602092909190829003018186803b1580156119bd57600080fd5b505afa1580156119d1573d6000803e3d6000fd5b505050506040513d60208110156119e757600080fd5b5051600154909250611a0d906001600160a01b038981169116600063ffffffff6130bf16565b600154611a2e906001600160a01b038881169116600063ffffffff6130bf16565b600154611a4e906001600160a01b0389811691168463ffffffff6130bf16565b600154611a6e906001600160a01b0388811691168363ffffffff6130bf16565b6001546001600160a01b031663e8e33700888885856000808b611a994261070863ffffffff6131e216565b6040805163ffffffff8b1660e01b81526001600160a01b03998a166004820152978916602489015260448801969096526064870194909452608486019290925260a485015290931660c483015260e482019290925290516101048083019260609291908290030181600087803b158015611b1257600080fd5b505af1158015611b26573d6000803e3d6000fd5b505050506040513d6060811015611b3c57600080fd5b5050505b60408051600160e01b6370a0823102815230600482015290516001600160a01b038816916370a08231916024808301926020929190829003018186803b158015611b8957600080fd5b505afa158015611b9d573d6000803e3d6000fd5b505050506040513d6020811015611bb357600080fd5b505160408051600160e01b6370a0823102815230600482015290519192506000916001600160a01b038816916370a08231916024808301926020929190829003018186803b158015611c0457600080fd5b505afa158015611c18573d6000803e3d6000fd5b505050506040513d6020811015611c2e57600080fd5b505190508115611c5257611c526001600160a01b038816858463ffffffff61323f16565b8015611c7257611c726001600160a01b038716858363ffffffff61323f16565b50505050505050565b6000546001600160a01b031681565b6000546001600160a01b03163314611ca157600080fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b341515611ccf57600080fd5b600260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015611d1f57600080fd5b505af1158015611d33573d6000803e3d6000fd5b505060025460408051600160e01b6370a082310281523060048201529051600095506001600160a01b0390921693506370a082319250602480820192602092909190829003018186803b158015611d8957600080fd5b505afa158015611d9d573d6000803e3d6000fd5b505050506040513d6020811015611db357600080fd5b50519050801561203e57611de4611dd182600263ffffffff61297e16565b6002546001600160a01b03168685613294565b60408051600160e01b6370a0823102815230600482015290516000916001600160a01b038716916370a0823191602480820192602092909190829003018186803b158015611e3157600080fd5b505afa158015611e45573d6000803e3d6000fd5b505050506040513d6020811015611e5b57600080fd5b505160025460408051600160e01b6370a0823102815230600482015290519293506001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015611eae57600080fd5b505afa158015611ec2573d6000803e3d6000fd5b505050506040513d6020811015611ed857600080fd5b5051600154600254919350611f01916001600160a01b039081169116600063ffffffff6130bf16565b600154600254611f24916001600160a01b0391821691168463ffffffff6130bf16565b600154611f45906001600160a01b038781169116600063ffffffff6130bf16565b600154611f65906001600160a01b0387811691168363ffffffff6130bf16565b6001546002546001600160a01b039182169163e8e3370091168785856000808b611f974261070863ffffffff6131e216565b6040805163ffffffff8b1660e01b81526001600160a01b03998a166004820152978916602489015260448801969096526064870194909452608486019290925260a485015290931660c483015260e482019290925290516101048083019260609291908290030181600087803b15801561201057600080fd5b505af1158015612024573d6000803e3d6000fd5b505050506040513d606081101561203a57600080fd5b5050505b60025460408051600160e01b6370a0823102815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561208c57600080fd5b505afa1580156120a0573d6000803e3d6000fd5b505050506040513d60208110156120b657600080fd5b505160408051600160e01b6370a0823102815230600482015290519192506000916001600160a01b038716916370a08231916024808301926020929190829003018186803b15801561210757600080fd5b505afa15801561211b573d6000803e3d6000fd5b505050506040513d602081101561213157600080fd5b50519050811561215857600254612158906001600160a01b0316858463ffffffff61323f16565b8015612178576121786001600160a01b038616858363ffffffff61323f16565b5050505050565b6006546001600160a01b031681565b34151561219a57600080fd5b600260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156121ea57600080fd5b505af11580156121fe573d6000803e3d6000fd5b5060009350839250503415905061247b5761222361094734600263ffffffff61297e16565b61223761099634600263ffffffff61297e16565b60408051600160e01b6370a0823102815230600482015290516001600160a01b038c16916370a08231916024808301926020929190829003018186803b15801561228057600080fd5b505afa158015612294573d6000803e3d6000fd5b505050506040513d60208110156122aa57600080fd5b505160408051600160e01b6370a0823102815230600482015290519193506001600160a01b038b16916370a0823191602480820192602092909190829003018186803b1580156122f957600080fd5b505afa15801561230d573d6000803e3d6000fd5b505050506040513d602081101561232357600080fd5b5051600154909150612349906001600160a01b038c81169116600063ffffffff6130bf16565b60015461236a906001600160a01b038b81169116600063ffffffff6130bf16565b60015461238a906001600160a01b038c811691168463ffffffff6130bf16565b6001546123aa906001600160a01b038b811691168363ffffffff6130bf16565b6001546001600160a01b031663e8e337008b8b85856000808f6123d54261271063ffffffff6131e216565b6040805163ffffffff8b1660e01b81526001600160a01b03998a166004820152978916602489015260448801969096526064870194909452608486019290925260a485015290931660c483015260e482019290925290516101048083019260609291908290030181600087803b15801561244e57600080fd5b505af1158015612462573d6000803e3d6000fd5b505050506040513d606081101561247857600080fd5b50505b60408051600160e01b6370a0823102815230600482015290516001600160a01b038c16916370a08231916024808301926020929190829003018186803b1580156124c457600080fd5b505afa1580156124d8573d6000803e3d6000fd5b505050506040513d60208110156124ee57600080fd5b505160408051600160e01b6370a0823102815230600482015290519193506001600160a01b038b16916370a0823191602480820192602092909190829003018186803b15801561253d57600080fd5b505afa158015612551573d6000803e3d6000fd5b505050506040513d602081101561256757600080fd5b505160025460408051600160e01b6370a0823102815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156125bd57600080fd5b505afa1580156125d1573d6000803e3d6000fd5b505050506040513d60208110156125e757600080fd5b50519050821561260b5761260b6001600160a01b038c168a8563ffffffff61323f16565b811561262b5761262b6001600160a01b038b168a8463ffffffff61323f16565b801561264e5760025461264e906001600160a01b03168a8363ffffffff61323f16565b5050505050505050505050565b6004546001600160a01b031681565b6000546001600160a01b0316331461268157600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6004805460408051600160e01b63d06ca61f028152928301858152602484019182528451604485015284516000946060946001600160a01b03169363d06ca61f938993899391929160640190602080860191028083838d5b838110156127135781810151838201526020016126fb565b50505050905001935050505060006040518083038186803b15801561273757600080fd5b505afa15801561274b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561277457600080fd5b810190808051600160201b81111561278b57600080fd5b8201602081018481111561279e57600080fd5b81518560208202830111600160201b821117156127ba57600080fd5b5050805190945084935060001981019250821090506127d557fe5b9060200190602002015191505092915050565b6000546001600160a01b031633146127ff57600080fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b60055460408051600160e01b63d06ca61f02815260048101858152602482019283528451604483015284516000946060946001600160a01b039091169363d06ca61f9389938993919260640190602080860191028083838d838110156127135781810151838201526020016126fb565b6000546001600160a01b031633146128a857600080fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031681565b6001546001600160a01b031681565b6000546001600160a01b031633146128ff57600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b0316600160e01b6323b872dd02179052611838908590613997565b60006129c083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b5e565b9392505050565b6004805460408051600160e01b63d06ca61f028152928301868152602484019182528551604485015285516060946001600160a01b039094169363d06ca61f93899389939092606401906020808601910280838360005b83811015612a36578181015183820152602001612a1e565b50505050905001935050505060006040518083038186803b158015612a5a57600080fd5b505afa158015612a6e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612a9757600080fd5b810190808051600160201b811115612aae57600080fd5b82016020810184811115612ac157600080fd5b81518560208202830111600160201b82111715612add57600080fd5b505060055460408051600160e01b63d06ca61f028152600481018b8152602482019283528a5160448301528a51949850606097506001600160a01b03909316955063d06ca61f94508a938a939291606401906020808601910280838360005b83811015612b54578181015183820152602001612b3c565b50505050905001935050505060006040518083038186803b158015612b7857600080fd5b505afa158015612b8c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612bb557600080fd5b810190808051600160201b811115612bcc57600080fd5b82016020810184811115612bdf57600080fd5b81518560208202830111600160201b82111715612bfb57600080fd5b50506006548851919550600094506001600160a01b0316925063e6a439059150879084908110612c2757fe5b90602001906020020151876001815181101515612c4057fe5b60209081029091018101516040805163ffffffff861660e01b81526001600160a01b03948516600482015293909116602484015251604480840193829003018186803b158015612c8f57600080fd5b505afa158015612ca3573d6000803e3d6000fd5b505050506040513d6020811015612cb957600080fd5b50516001600160a01b03161415612e86576005548451612d0c916001600160a01b031690600090879082908110612cec57fe5b602090810290910101516001600160a01b0316919063ffffffff6130bf16565b6005548451612d2e916001600160a01b031690879087906000908110612cec57fe5b6005546001600160a01b03166338ed173986858730612d554261271063ffffffff6131e216565b6040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612dce578181015183820152602001612db6565b505050509050019650505050505050600060405180830381600087803b158015612df757600080fd5b505af1158015612e0b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612e3457600080fd5b810190808051600160201b811115612e4b57600080fd5b82016020810184811115612e5e57600080fd5b81518560208202830111600160201b82111715612e7a57600080fd5b50612178945050505050565b805181906000198101908110612e9857fe5b90602001906020020151826001845103815181101515612eb457fe5b906020019060200201511115612f2f576004548451612ee6916001600160a01b031690600090879082908110612cec57fe5b6004548451612f08916001600160a01b031690879087906000908110612cec57fe5b6004546001600160a01b03166338ed173986858730612d554261271063ffffffff6131e216565b6005548451612f51916001600160a01b031690600090879082908110612cec57fe5b6005548451612f73916001600160a01b031690879087906000908110612cec57fe5b6005546001600160a01b03166338ed173986858730612f9a4261271063ffffffff6131e216565b6040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613013578181015183820152602001612ffb565b505050509050019650505050505050600060405180830381600087803b15801561303c57600080fd5b505af1158015613050573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561307957600080fd5b810190808051600160201b81111561309057600080fd5b820160208101848111156130a357600080fd5b81518560208202830111600160201b8211171561264e57600080fd5b801580613148575060408051600160e11b636eb1769f0281523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561311a57600080fd5b505afa15801561312e573d6000803e3d6000fd5b505050506040513d602081101561314457600080fd5b5051155b151561318857604051600160e51b62461bcd028152600401808060200182810382526036815260200180613c6e6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0316600160e01b63095ea7b3021790526131dd908490613997565b505050565b6000828201838110156129c05760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0316600160e01b63a9059cbb021790526131dd908490613997565b6040805160028082526060808301845292602083019080388339019050509050838160008151811015156132c457fe5b6001600160a01b0390921660209283029091019091015280518390829060019081106132ec57fe5b6001600160a01b03928316602091820290920181019190915260065460408051600160e01b63e6a43905028152888516600482015287851660248201529051600094929092169263e6a4390592604480840193829003018186803b15801561335357600080fd5b505afa158015613367573d6000803e3d6000fd5b505050506040513d602081101561337d57600080fd5b50516001600160a01b031614156133f6576005546133af906001600160a01b038681169116600063ffffffff6130bf16565b6005546133cf906001600160a01b0386811691168763ffffffff6130bf16565b6005546001600160a01b03166338ed173986848430612d554261271063ffffffff6131e216565b6004805460408051600160e01b63d06ca61f028152928301888152602484019182528451604485015284516060946001600160a01b039094169363d06ca61f938b9388939092606401906020808601910280838360005b8381101561346557818101518382015260200161344d565b50505050905001935050505060006040518083038186803b15801561348957600080fd5b505afa15801561349d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156134c657600080fd5b810190808051600160201b8111156134dd57600080fd5b820160208101848111156134f057600080fd5b81518560208202830111600160201b8211171561350c57600080fd5b505060055460408051600160e01b63d06ca61f028152600481018d815260248201928352895160448301528951949850606097506001600160a01b03909316955063d06ca61f94508c9389939291606401906020808601910280838360005b8381101561358357818101518382015260200161356b565b50505050905001935050505060006040518083038186803b1580156135a757600080fd5b505afa1580156135bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156135e457600080fd5b810190808051600160201b8111156135fb57600080fd5b8201602081018481111561360e57600080fd5b81518560208202830111600160201b8211171561362a57600080fd5b50508051909450849350600019810192508210905061364557fe5b9060200190602002015182600184510381518110151561366157fe5b90602001906020020151111561380a57600454613692906001600160a01b038881169116600063ffffffff6130bf16565b6004546136b2906001600160a01b0388811691168963ffffffff6130bf16565b6004546001600160a01b03166338ed1739888686306136d94261271063ffffffff6131e216565b6040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561375257818101518382015260200161373a565b505050509050019650505050505050600060405180830381600087803b15801561377b57600080fd5b505af115801561378f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156137b857600080fd5b810190808051600160201b8111156137cf57600080fd5b820160208101848111156137e257600080fd5b81518560208202830111600160201b821117156137fe57600080fd5b50611c72945050505050565b60055461382b906001600160a01b038881169116600063ffffffff6130bf16565b60055461384b906001600160a01b0388811691168963ffffffff6130bf16565b6005546001600160a01b03166338ed1739888686306138724261271063ffffffff6131e216565b6040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156138eb5781810151838201526020016138d3565b505050509050019650505050505050600060405180830381600087803b15801561391457600080fd5b505af1158015613928573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561395157600080fd5b810190808051600160201b81111561396857600080fd5b8201602081018481111561397b57600080fd5b81518560208202830111600160201b82111715610de057600080fd5b6139a9826001600160a01b0316613c07565b15156139ff5760408051600160e51b62461bcd02815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310613a3d5780518252601f199092019160209182019101613a1e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613a9f576040519150601f19603f3d011682016040523d82523d6000602084013e613aa4565b606091505b5091509150811515613b005760408051600160e51b62461bcd02815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561183857808060200190516020811015613b1c57600080fd5b5051151561183857604051600160e51b62461bcd02815260040180806020018281038252602a815260200180613c44602a913960400191505060405180910390fd5b600081831515613bef57604051600160e51b62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613bb4578181015183820152602001613b9c565b50505050905090810190601f168015613be15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385811515613bfd57fe5b0495945050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590613c3b57508115155b94935050505056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a165627a7a72305820611857737e6014b583b79adeeb75c8265f637fd207aa079ab66b785ac7d48a1b0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000079f12d68631ec6396aab3cdf31f07c90d0023c9a00000000000000000000000079f12d68631ec6396aab3cdf31f07c90d0023c9a000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f
-----Decoded View---------------
Arg [0] : _pancakeRouter (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : _unifiRouter (address): 0x79F12D68631eC6396aAB3CdF31F07C90D0023c9A
Arg [2] : _routerAdd (address): 0x79F12D68631eC6396aAB3CdF31F07C90D0023c9A
Arg [3] : _weth (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [4] : _otherFactory (address): 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 00000000000000000000000079f12d68631ec6396aab3cdf31f07c90d0023c9a
Arg [2] : 00000000000000000000000079f12d68631ec6396aab3cdf31f07c90d0023c9a
Arg [3] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [4] : 0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f
Deployed Bytecode Sourcemap
18202:14413:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19671:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19671:105:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;19671:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25574:1688;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25574:1688:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;25574:1688:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;25574:1688:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;25574:1688:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;25574:1688:0;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;25574:1688:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;25574:1688:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;25574:1688:0;;-1:-1:-1;25574:1688:0;-1:-1:-1;25574:1688:0;;:::i;:::-;;21343:1490;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21343:1490:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;21343:1490:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;21343:1490:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;21343:1490:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;21343:1490:0;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;21343:1490:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;21343:1490:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;21343:1490:0;;-1:-1:-1;21343:1490:0;-1:-1:-1;21343:1490:0;;;;;;;;;:::i;19785:1552::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19785:1552:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;19785:1552:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18522:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18522:26:0;;;:::i;:::-;;;;-1:-1:-1;;;;;18522:26:0;;;;;;;;;;;;;;32323:287;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32323:287:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;32323:287:0;-1:-1:-1;;;;;32323:287:0;;:::i;24193:1373::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24193:1373:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;24193:1373:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18370:22::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18370:22:0;;;:::i;19242:150::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19242:150:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19242:150:0;-1:-1:-1;;;;;19242:150:0;;:::i;22837:1348::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;22837:1348:0;;;;;;;;;;;;;;;;;:::i;18555:33::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18555:33:0;;;:::i;27275:1648::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;27275:1648:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;27275:1648:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;27275:1648:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;27275:1648:0;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;27275:1648:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;27275:1648:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;27275:1648:0;;-1:-1:-1;27275:1648:0;-1:-1:-1;27275:1648:0;;:::i;18486:28::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18486:28:0;;;:::i;18950:127::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18950:127:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18950:127:0;-1:-1:-1;;;;;18950:127:0;;:::i;31809:253::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31809:253:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31809:253:0;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;31809:253:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;31809:253:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;31809:253:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;31809:253:0;;-1:-1:-1;31809:253:0;;-1:-1:-1;;;;;31809:253:0:i;:::-;;;;;;;;;;;;;;;;19398:141;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19398:141:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19398:141:0;-1:-1:-1;;;;;19398:141:0;;:::i;32074:233::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32074:233:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32074:233:0;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;32074:233:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;32074:233:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;32074:233:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;32074:233:0;;-1:-1:-1;32074:233:0;;-1:-1:-1;;;;;32074:233:0:i;19089:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19089:145:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19089:145:0;-1:-1:-1;;;;;19089:145:0;;:::i;18430:19::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18430:19:0;;;:::i;18400:22::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18400:22:0;;;:::i;19545:120::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19545:120:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19545:120:0;-1:-1:-1;;;;;19545:120:0;;:::i;19671:105::-;19739:29;;;;;;;;;;;;;;;;;19671:105;:::o;25574:1688::-;25794:71;-1:-1:-1;;;;;25794:37:0;;25832:10;25851:4;25858:6;25794:71;:37;:71;:::i;:::-;25879:21;;25957:10;;25954:772;;25981:46;26000:13;:6;26011:1;26000:13;:10;:13;:::i;:::-;26014:5;;25981:46;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;26020:6:0;;-1:-1:-1;25981:18:0;;-1:-1:-1;;25981:46:0:i;:::-;26038;26057:13;:6;26068:1;26057:13;:10;:13;:::i;:::-;26071:5;;26038:46;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;26077:6:0;;-1:-1:-1;26038:18:0;;-1:-1:-1;;26038:46:0:i;:::-;26116;;;-1:-1:-1;;;;;26116:46:0;;26156:4;26116:46;;;;;;-1:-1:-1;;;;;26116:31:0;;;;;:46;;;;;;;;;;;;;;:31;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;26116:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26116:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26116:46:0;26190;;;-1:-1:-1;;;;;26190:46:0;;26230:4;26190:46;;;;;;26116;;-1:-1:-1;;;;;;26190:31:0;;;;;:46;;;;;26116;;26190;;;;;;;;:31;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;26190:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26190:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26190:46:0;26283:6;;26190:46;;-1:-1:-1;26249:44:0;;-1:-1:-1;;;;;26249:33:0;;;;26283:6;;26249:44;:33;:44;:::i;:::-;26338:6;;26304:44;;-1:-1:-1;;;;;26304:33:0;;;;26338:6;;26304:44;:33;:44;:::i;:::-;26393:6;;26359:56;;-1:-1:-1;;;;;26359:33:0;;;;26393:6;26400:13;26359:56;:33;:56;:::i;:::-;26460:6;;26426:56;;-1:-1:-1;;;;;26426:33:0;;;;26460:6;26467:13;26426:56;:33;:56;:::i;:::-;26505:6;;-1:-1:-1;;;;;26505:6:0;26493:32;26538:13;26565;26592;26619;26505:6;;26676:2;26692:13;:3;26700:4;26692:13;:7;:13;:::i;:::-;26493:223;;;;;;;;;;-1:-1:-1;;;;;26493:223:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26493:223:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;26493:223:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26493:223:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;25954:772:0;26752:46;;;-1:-1:-1;;;;;26752:46:0;;26792:4;26752:46;;;;;;-1:-1:-1;;;;;26752:31:0;;;;;:46;;;;;;;;;;;;;;:31;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;26752:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26752:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26752:46:0;26825;;;-1:-1:-1;;;;;26825:46:0;;26865:4;26825:46;;;;;;26752;;-1:-1:-1;;;;;;26825:31:0;;;;;:46;;;;;26752;;26825;;;;;;;;:31;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;26825:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26825:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26825:46:0;26903:45;;;-1:-1:-1;;;;;26903:45:0;;26942:4;26903:45;;;;;;26825:46;;-1:-1:-1;26881:19:0;;-1:-1:-1;;;;;26903:30:0;;;;;:45;;;;;26825:46;;26903:45;;;;;;;:30;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;26903:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26903:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26903:45:0;;-1:-1:-1;26962:17:0;;26959:95;;26992:52;-1:-1:-1;;;;;26992:34:0;;27027:2;27030:13;26992:52;:34;:52;:::i;:::-;27065:17;;27062:95;;27095:52;-1:-1:-1;;;;;27095:34:0;;27130:2;27133:13;27095:52;:34;:52;:::i;:::-;27168:15;;27165:90;;27196:49;-1:-1:-1;;;;;27196:33:0;;27230:2;27233:11;27196:49;:33;:49;:::i;:::-;25574:1688;;;;;;;;;;;;;:::o;21343:1490::-;21636:5;;-1:-1:-1;;21642:15:0;;21636:22;;;;;;;;;;;;;-1:-1:-1;;;;;21636:22:0;-1:-1:-1;;;;;21609:49:0;:5;;21630:1;21615:5;;:12;;:16;21609:23;;;;;;;;;;;;;;;-1:-1:-1;;;;;21609:23:0;-1:-1:-1;;;;;21609:49:0;;21601:86;;;;;;;-1:-1:-1;;;;;21601:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;21696:73;-1:-1:-1;;;;;21696:39:0;;21736:10;21755:4;21762:6;21696:73;:39;:73;:::i;:::-;21813:6;;21778:45;;-1:-1:-1;;;;;21778:34:0;;;;21813:6;;21778:45;:34;:45;:::i;:::-;21869:6;;21834:50;;-1:-1:-1;;;;;21834:34:0;;;;21869:6;21877;21834:50;:34;:50;:::i;:::-;21911:6;;;-1:-1:-1;;;;;21911:6:0;;21899:35;;21947:6;;21967;;21987;;21911;22045:4;22064:13;:3;22072:4;22064:13;:7;:13;:::i;:::-;21899:189;;;;;;;;;;-1:-1:-1;;;;;21899:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21899:189:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;21899:189:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21899:189:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;21899:189:0;22118:39;;-1:-1:-1;;;;;22118:39:0;;22151:4;22118:39;;;;;;22099:73;;-1:-1:-1;;;;;22118:24:0;;;;;:39;;;;;21899:189;;22118:39;;;;;;;;:24;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;22118:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22118:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22118:39:0;22099:73;;;22118:39;22099:73;;;;;;;;;;;;;;;;22158:5;;;;;;22099:73;;;22158:5;;22099:73;22158:5;22099:73;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;22165:6:0;;-1:-1:-1;22099:18:0;;-1:-1:-1;;22099:73:0:i;:::-;22202:39;;;-1:-1:-1;;;;;22202:39:0;;22235:4;22202:39;;;;;;22183:73;;-1:-1:-1;;;;;22202:24:0;;;;;:39;;;;;;;;;;;;;;;:24;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;22202:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22202:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22202:39:0;22183:73;;;22202:39;22183:73;;;;;;;;;;;;;;;;22242:5;;;;;;22183:73;;;22242:5;;22183:73;22242:5;22183:73;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;22249:6:0;;-1:-1:-1;22183:18:0;;-1:-1:-1;;22183:73:0:i;:::-;22309:45;;;-1:-1:-1;;;;;22309:45:0;;22348:4;22309:45;;;;;;22280:26;;-1:-1:-1;;;;;22309:30:0;;;;;:45;;;;;;;;;;;;;;;:30;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;22309:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22309:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22309:45:0;22401:4;;22309:45;;-1:-1:-1;;;;;;22368:38:0;;;22401:4;;22368:38;:66;;;;-1:-1:-1;22430:4:0;22410:24;;;;22368:66;22365:368;;;22475:6;;22457:4;;22450:35;;-1:-1:-1;;;;;22457:4:0;;;;22475:6;;22450:35;:24;:35;:::i;:::-;22525:6;;22507:4;;22500:55;;-1:-1:-1;;;;;22507:4:0;;;;22525:6;22532:21;22500:55;:24;:55;:::i;:::-;22578:4;;22572:43;;;-1:-1:-1;;;;;22572:43:0;;;;;;;;;;-1:-1:-1;;;;;22578:4:0;;;;22572:20;;:43;;;;;22578:4;;22572:43;;;;;;;;22578:4;;22572:43;;;5:2:-1;;;;30:1;27;20:12;5:2;22572:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;22634:43:0;;-1:-1:-1;;;;;22634:20:0;;;-1:-1:-1;22634:43:0;;;;;-1:-1:-1;22655:21:0;;22634:43;;;;22655:21;22634:20;:43;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22634:43:0;22365:368;22743:68;-1:-1:-1;;;;;22743:33:0;;22785:2;22789:21;22743:68;:33;:68;:::i;19785:1552::-;19986:73;-1:-1:-1;;;;;19986:39:0;;20026:10;20045:4;20052:6;19986:73;:39;:73;:::i;:::-;20103:6;;20068:45;;-1:-1:-1;;;;;20068:34:0;;;;20103:6;;20068:45;:34;:45;:::i;:::-;20161:6;;20126:50;;-1:-1:-1;;;;;20126:34:0;;;;20161:6;20169;20126:50;:34;:50;:::i;:::-;20203:6;;;-1:-1:-1;;;;;20203:6:0;;20191:35;;20239:6;;20259;;20279;;20203;20337:4;20356:13;:3;20364:4;20356:13;:7;:13;:::i;:::-;20191:189;;;;;;;;;;-1:-1:-1;;;;;20191:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20191:189:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;20191:189:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20191:189:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;;20394:40:0;;;;;;;20391:453;;;20506:39;;;-1:-1:-1;;;;;20506:39:0;;20539:4;20506:39;;;;;;20485:18;;-1:-1:-1;;;;;20506:24:0;;;;;:39;;;;;;;;;;;;;;;:24;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;20506:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20506:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20506:39:0;;-1:-1:-1;20561:58:0;20506:39;20590:6;20598:12;20612:6;20561:13;:58::i;:::-;20391:453;;;;20668:12;-1:-1:-1;;;;;20641:40:0;20649:6;-1:-1:-1;;;;;20641:40:0;;20637:207;;;20718:39;;;-1:-1:-1;;;;;20718:39:0;;20751:4;20718:39;;;;;;20697:18;;-1:-1:-1;;;;;20718:24:0;;;;;:39;;;;;;;;;;;;;;;:24;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;20718:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20718:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20718:39:0;;-1:-1:-1;20773:58:0;20718:39;20802:6;20809:12;20824:6;20773:13;:58::i;:::-;20637:207;;20883:45;;;-1:-1:-1;;;;;20883:45:0;;20922:4;20883:45;;;;;;20854:26;;-1:-1:-1;;;;;20883:30:0;;;;;:45;;;;;;;;;;;;;;;:30;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;20883:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20883:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20883:45:0;;-1:-1:-1;20939:377:0;;;;20999:6;;20981:4;;20974:35;;-1:-1:-1;;;;;20981:4:0;;;;20999:6;;20974:35;:24;:35;:::i;:::-;21050:6;;21032:4;;21025:55;;-1:-1:-1;;;;;21032:4:0;;;;21050:6;21057:21;21025:55;:24;:55;:::i;:::-;21101:4;;21095:43;;;-1:-1:-1;;;;;21095:43:0;;;;;;;;;;-1:-1:-1;;;;;21101:4:0;;;;21095:20;;:43;;;;;21101:4;;21095:43;;;;;;;;21101:4;;21095:43;;;5:2:-1;;;;30:1;27;20:12;5:2;21095:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;21153:43:0;;-1:-1:-1;;;;;21153:20:0;;;-1:-1:-1;21153:43:0;;;;;-1:-1:-1;21174:21:0;;21153:43;;;;21174:21;21153:20;:43;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21153:43:0;20939:377;;;21245:59;-1:-1:-1;;;;;21245:33:0;;21279:2;21282:21;21245:59;:33;:59;:::i;:::-;19785:1552;;;;;;;;;:::o;18522:26::-;;;-1:-1:-1;;;;;18522:26:0;;:::o;32323:287::-;32419:1;32402:5;-1:-1:-1;;;;;32402:5:0;:19;;32394:53;;;;;-1:-1:-1;;;;;32394:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;32473:38;;;-1:-1:-1;;;;;32473:38:0;;32505:4;32473:38;;;;;;32458:12;;-1:-1:-1;;;;;32473:23:0;;;;;:38;;;;;;;;;;;;;;;:23;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;32473:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32473:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;32473:38:0;;-1:-1:-1;32525:11:0;;32522:81;;32576:5;;;32553:38;;;-1:-1:-1;;;;;32553:38:0;;-1:-1:-1;;;;;32576:5:0;;;32553:38;;;;;;;;;;;;:22;;;;;;:38;;;;;;;;;;;;;;;;;:22;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;32553:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32553:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;32522:81:0;32323:287;;:::o;24193:1373::-;24327:65;-1:-1:-1;;;;;24327:31:0;;24359:10;24378:4;24385:6;24327:65;:31;:65;:::i;:::-;24425:39;;;-1:-1:-1;;;;;24425:39:0;;24458:4;24425:39;;;;;;24401:21;;-1:-1:-1;;;;;24425:24:0;;;;;:39;;;;;;;;;;;;;;;:24;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;24425:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24425:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24425:39:0;;-1:-1:-1;24476:17:0;;24473:722;;24507:62;24521:20;:13;24539:1;24521:20;:17;:20;:::i;:::-;24542:6;24549:12;24562:6;24507:13;:62::i;:::-;24614:45;;;-1:-1:-1;;;;;24614:45:0;;24653:4;24614:45;;;;;;24590:21;;-1:-1:-1;;;;;24614:30:0;;;;;:45;;;;;;;;;;;;;;;:30;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;24614:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24614:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24614:45:0;24688:39;;;-1:-1:-1;;;;;24688:39:0;;24721:4;24688:39;;;;;;24614:45;;-1:-1:-1;;;;;;24688:24:0;;;;;:39;;;;;24614:45;;24688:39;;;;;;;;:24;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;24688:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24688:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24688:39:0;24767:6;;24688:39;;-1:-1:-1;24740:37:0;;-1:-1:-1;;;;;24740:26:0;;;;24767:6;;24740:37;:26;:37;:::i;:::-;24821:6;;24788:43;;-1:-1:-1;;;;;24788:32:0;;;;24821:6;;24788:43;:32;:43;:::i;:::-;24871:6;;24844:49;;-1:-1:-1;;;;;24844:26:0;;;;24871:6;24878:13;24844:49;:26;:49;:::i;:::-;24937:6;;24904:55;;-1:-1:-1;;;;;24904:32:0;;;;24937:6;24945:13;24904:55;:32;:55;:::i;:::-;24984:6;;-1:-1:-1;;;;;24984:6:0;24972:32;25017:6;25037:12;25062:13;25088;24984:6;;25145:2;25161:13;:3;25169:4;25161:13;:7;:13;:::i;:::-;24972:213;;;;;;;;;;-1:-1:-1;;;;;24972:213:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24972:213:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;24972:213:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24972:213:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;24473:722:0;25220:39;;;-1:-1:-1;;;;;25220:39:0;;25253:4;25220:39;;;;;;-1:-1:-1;;;;;25220:24:0;;;;;:39;;;;;;;;;;;;;;:24;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;25220:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25220:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25220:39:0;25299:45;;;-1:-1:-1;;;;;25299:45:0;;25338:4;25299:45;;;;;;25220:39;;-1:-1:-1;25269:27:0;;-1:-1:-1;;;;;25299:30:0;;;;;:45;;;;;25220:39;;25299:45;;;;;;;:30;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;25299:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25299:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25299:45:0;;-1:-1:-1;25358:17:0;;25355:88;;25388:45;-1:-1:-1;;;;;25388:27:0;;25416:2;25419:13;25388:45;:27;:45;:::i;:::-;25454:23;;25451:106;;25490:57;-1:-1:-1;;;;;25490:33:0;;25524:2;25527:19;25490:57;:33;:57;:::i;:::-;24193:1373;;;;;;;:::o;18370:22::-;;;-1:-1:-1;;;;;18370:22:0;;:::o;19242:150::-;19329:5;;-1:-1:-1;;;;;19329:5:0;19315:10;:19;19307:28;;;;;;19346:12;:38;;-1:-1:-1;;;;;;19346:38:0;-1:-1:-1;;;;;19346:38:0;;;;;;;;;;19242:150::o;22837:1348::-;22960:9;:13;;22952:22;;;;;;22989:4;;;;;;;;;-1:-1:-1;;;;;22989:4:0;-1:-1:-1;;;;;22983:19:0;;23010:9;22983:39;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22983:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;23062:4:0;;23055:37;;;-1:-1:-1;;;;;23055:37:0;;23086:4;23055:37;;;;;;23031:21;;-1:-1:-1;;;;;;23062:4:0;;;;-1:-1:-1;23055:22:0;;-1:-1:-1;23055:37:0;;;;;;;;;;;;;;;23062:4;23055:37;;;5:2:-1;;;;30:1;27;20:12;5:2;23055:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23055:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23055:37:0;;-1:-1:-1;23104:17:0;;23101:710;;23135:60;23149:20;:13;23167:1;23149:20;:17;:20;:::i;:::-;23170:4;;-1:-1:-1;;;;;23170:4:0;23175:12;23188:6;23135:13;:60::i;:::-;23240:45;;;-1:-1:-1;;;;;23240:45:0;;23279:4;23240:45;;;;;;23216:21;;-1:-1:-1;;;;;23240:30:0;;;;;:45;;;;;;;;;;;;;;;:30;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;23240:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23240:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23240:45:0;23321:4;;23314:37;;;-1:-1:-1;;;;;23314:37:0;;23345:4;23314:37;;;;;;23240:45;;-1:-1:-1;;;;;;23321:4:0;;;;23314:22;;:37;;;;;23240:45;;23314:37;;;;;;;;23321:4;23314:37;;;5:2:-1;;;;30:1;27;20:12;5:2;23314:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23314:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23314:37:0;23387:6;;23369:4;;23314:37;;-1:-1:-1;23362:35:0;;-1:-1:-1;;;;;23369:4:0;;;;23387:6;;23362:35;:24;:35;:::i;:::-;23433:6;;23415:4;;23408:47;;-1:-1:-1;;;;;23415:4:0;;;;23433:6;23440:13;23408:47;:24;:47;:::i;:::-;23499:6;;23466:43;;-1:-1:-1;;;;;23466:32:0;;;;23499:6;;23466:43;:32;:43;:::i;:::-;23553:6;;23520:55;;-1:-1:-1;;;;;23520:32:0;;;;23553:6;23561:13;23520:55;:32;:55;:::i;:::-;23600:6;;23633:4;;-1:-1:-1;;;;;23600:6:0;;;;23588:32;;23633:4;23651:12;23677:13;23704;23600:6;;23761:2;23777:13;:3;23785:4;23777:13;:7;:13;:::i;:::-;23588:213;;;;;;;;;;-1:-1:-1;;;;;23588:213:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23588:213:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;23588:213:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23588:213:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;23101:710:0;23852:4;;23845:37;;;-1:-1:-1;;;;;23845:37:0;;23876:4;23845:37;;;;;;-1:-1:-1;;;;;23852:4:0;;;;23845:22;;:37;;;;;;;;;;;;;;;23852:4;23845:37;;;5:2:-1;;;;30:1;27;20:12;5:2;23845:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23845:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23845:37:0;23922:45;;;-1:-1:-1;;;;;23922:45:0;;23961:4;23922:45;;;;;;23845:37;;-1:-1:-1;23892:27:0;;-1:-1:-1;;;;;23922:30:0;;;;;:45;;;;;23845:37;;23922:45;;;;;;;:30;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;23922:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23922:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23922:45:0;;-1:-1:-1;23981:17:0;;23978:86;;24018:4;;24011:43;;-1:-1:-1;;;;;24018:4:0;24037:2;24040:13;24011:43;:25;:43;:::i;:::-;24075:23;;24072:106;;24111:57;-1:-1:-1;;;;;24111:33:0;;24145:2;24148:19;24111:57;:33;:57;:::i;:::-;22837:1348;;;;;:::o;18555:33::-;;;-1:-1:-1;;;;;18555:33:0;;:::o;27275:1648::-;27480:9;:13;;27472:22;;;;;;27509:4;;;;;;;;;-1:-1:-1;;;;;27509:4:0;-1:-1:-1;;;;;27503:19:0;;27530:9;27503:39;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27503:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;27552:21:0;;-1:-1:-1;27552:21:0;;-1:-1:-1;;27625:9:0;:13;;-1:-1:-1;27621:782:0;;27652:50;27672:16;:9;27686:1;27672:16;:13;:16;:::i;27652:50::-;27713;27733:16;:9;27747:1;27733:16;:13;:16;:::i;27713:50::-;27795:46;;;-1:-1:-1;;;;;27795:46:0;;27835:4;27795:46;;;;;;-1:-1:-1;;;;;27795:31:0;;;;;:46;;;;;;;;;;;;;;:31;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;27795:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27795:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27795:46:0;27869;;;-1:-1:-1;;;;;27869:46:0;;27909:4;27869:46;;;;;;27795;;-1:-1:-1;;;;;;27869:31:0;;;;;:46;;;;;27795;;27869;;;;;;;;:31;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;27869:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27869:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27869:46:0;27962:6;;27869:46;;-1:-1:-1;27928:44:0;;-1:-1:-1;;;;;27928:33:0;;;;27962:6;;27928:44;:33;:44;:::i;:::-;28017:6;;27983:44;;-1:-1:-1;;;;;27983:33:0;;;;28017:6;;27983:44;:33;:44;:::i;:::-;28072:6;;28038:56;;-1:-1:-1;;;;;28038:33:0;;;;28072:6;28079:13;28038:56;:33;:56;:::i;:::-;28139:6;;28105:56;;-1:-1:-1;;;;;28105:33:0;;;;28139:6;28146:13;28105:56;:33;:56;:::i;:::-;28184:6;;-1:-1:-1;;;;;28184:6:0;28172:32;28217:13;28244;28270;28296;28184:6;;28352:2;28368:14;:3;28376:5;28368:14;:7;:14;:::i;:::-;28172:221;;;;;;;;;;-1:-1:-1;;;;;28172:221:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28172:221:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;28172:221:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28172:221:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;27621:782:0;28429:46;;;-1:-1:-1;;;;;28429:46:0;;28469:4;28429:46;;;;;;-1:-1:-1;;;;;28429:31:0;;;;;:46;;;;;;;;;;;;;;:31;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;28429:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28429:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28429:46:0;28502;;;-1:-1:-1;;;;;28502:46:0;;28542:4;28502:46;;;;;;28429;;-1:-1:-1;;;;;;28502:31:0;;;;;:46;;;;;28429;;28502;;;;;;;;:31;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;28502:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28502:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28502:46:0;28587:4;;28580:37;;;-1:-1:-1;;;;;28580:37:0;;28611:4;28580:37;;;;;;28502:46;;-1:-1:-1;28558:19:0;;-1:-1:-1;;;;;28587:4:0;;;;28580:22;;:37;;;;;28502:46;;28580:37;;;;;;;;28587:4;28580:37;;;5:2:-1;;;;30:1;27;20:12;5:2;28580:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28580:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28580:37:0;;-1:-1:-1;28631:17:0;;28628:95;;28661:52;-1:-1:-1;;;;;28661:34:0;;28696:2;28699:13;28661:52;:34;:52;:::i;:::-;28734:17;;28731:95;;28764:52;-1:-1:-1;;;;;28764:34:0;;28799:2;28802:13;28764:52;:34;:52;:::i;:::-;28837:15;;28834:82;;28872:4;;28865:41;;-1:-1:-1;;;;;28872:4:0;28891:2;28894:11;28865:41;:25;:41;:::i;:::-;27275:1648;;;;;;;;;;;:::o;18486:28::-;;;-1:-1:-1;;;;;18486:28:0;;:::o;18950:127::-;19033:5;;-1:-1:-1;;;;;19033:5:0;19019:10;:19;19011:28;;;;;;19050:6;:19;;-1:-1:-1;;;;;;19050:19:0;-1:-1:-1;;;;;19050:19:0;;;;;;;;;;18950:127::o;31809:253::-;31947:13;;;31935:55;;;-1:-1:-1;;;;;31935:55:0;;;;;;;;;;;;;;;;;;;;;;31890:4;;31906:23;;-1:-1:-1;;;;;31947:13:0;;31935:40;;31976:7;;31985:4;;31935:55;;;;;;;;;;;;;;;31890:4;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;31935:55:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31935:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31935:55:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;31935:55:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;31935:55:0;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;-1:-1;;32025:16:0;;31935:55;;-1:-1:-1;31935:55:0;;-1:-1:-1;;;32025:18:0;;;-1:-1:-1;32015:29:0;;;-1:-1:-1;32015:29:0;;;;;;;;;;;;32008:36;;;31809:253;;;;:::o;19398:141::-;19488:5;;-1:-1:-1;;;;;19488:5:0;19474:10;:19;19466:28;;;;;;19505:11;:26;;-1:-1:-1;;;;;;19505:26:0;-1:-1:-1;;;;;19505:26:0;;;;;;;;;;19398:141::o;32074:233::-;32210:11;;32198:53;;;-1:-1:-1;;;;;32198:53:0;;;;;;;;;;;;;;;;;;;;;;32153:4;;32169:23;;-1:-1:-1;;;;;32210:11:0;;;;32198:38;;32237:7;;32246:4;;32198:53;;;;;;;;;;;;;;32153:4;33:3:-1;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;19089:145:0;19181:5;;-1:-1:-1;;;;;19181:5:0;19167:10;:19;19159:28;;;;;;19198:13;:28;;-1:-1:-1;;;;;;19198:28:0;-1:-1:-1;;;;;19198:28:0;;;;;;;;;;19089:145::o;18430:19::-;;;-1:-1:-1;;;;;18430:19:0;;:::o;18400:22::-;;;-1:-1:-1;;;;;18400:22:0;;:::o;19545:120::-;19625:5;;-1:-1:-1;;;;;19625:5:0;19610:10;:20;19602:29;;;;;;19642:4;:15;;-1:-1:-1;;;;;;19642:15:0;-1:-1:-1;;;;;19642:15:0;;;;;;;;;;19545:120::o;14308:204::-;14435:68;;;-1:-1:-1;;;;;14435:68:0;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;14435:68:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;179:29;160:49;;14409:95:0;;14428:5;;14409:18;:95::i;6793:132::-;6851:7;6878:39;6882:1;6885;6878:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6871:46;6793:132;-1:-1:-1;;;6793:132:0:o;30452:1345::-;30592:13;;;30580:55;;;-1:-1:-1;;;;;30580:55:0;;;;;;;;;;;;;;;;;;;;;;30551:26;;-1:-1:-1;;;;;30592:13:0;;;;30580:40;;30621:7;;30630:4;;30580:55;;;;;;;;;;;;;;30592:13;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;30580:55:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30580:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30580:55:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;30580:55:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;30580:55:0;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;-1:-1;;30686:11:0;;30674:53;;;-1:-1:-1;;;;;30674:53:0;;;;;;;;;;;;;;;;;;;;;;30580:55;;-1:-1:-1;30647:24:0;;-1:-1:-1;;;;;;30686:11:0;;;;-1:-1:-1;30674:38:0;;-1:-1:-1;30713:7:0;;30722:4;;30674:53;;;;;;;;;;;;;;30686:11;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;30674:53:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30674:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30674:53:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;30674:53:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;30674:53:0;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;-1:-1;;30752:12:0;;30773:7;;30674:53;;-1:-1:-1;30801:1:0;;-1:-1:-1;;;;;;30752:12:0;;-1:-1:-1;30752:20:0;;-1:-1:-1;30773:4:0;;30801:1;;30773:7;;;;;;;;;;;;;;30781:4;30786:1;30781:7;;;;;;;;;;;;;;;;;;;;30752:37;;;;;;;;;;-1:-1:-1;;;;;30752:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:2:-1;;;;30:1;27;20:12;5:2;30752:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30752:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30752:37:0;-1:-1:-1;;;;;30752:51:0;;30749:1039;;;30847:11;;30826:7;;30819:43;;-1:-1:-1;;;;;30847:11:0;;;;30826:4;;30847:11;;30826:7;;;;;;;;;;;;;;;-1:-1:-1;;;;;30819:27:0;;:43;;:27;:43;:::i;:::-;30905:11;;30884:7;;30877:49;;-1:-1:-1;;;;;30905:11:0;;30918:7;;30884:4;;30905:11;;30884:7;;;;;30877:49;30953:11;;-1:-1:-1;;;;;30953:11:0;30941:49;30991:7;31008:6;31017:4;31031;31038:14;:3;31046:5;31038:14;:7;:14;:::i;:::-;30941:112;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30941:112:0;-1:-1:-1;;;;;30941:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;30941:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30941:112:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30941:112:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;30941:112:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;30941:112:0;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;-1:-1;30749:1039:0;;-1:-1:-1;;;;;30749:1039:0;;31153:18;;31141:11;;-1:-1:-1;;31153:22:0;;;31141:35;;;;;;;;;;;;;;31099:13;31135:1;31113:13;:20;:23;31099:39;;;;;;;;;;;;;;;;;;:77;31096:670;;;31225:13;;31204:7;;31197:45;;-1:-1:-1;;;;;31225:13:0;;;;31204:4;;31225:13;;31204:7;;;;;31197:45;31289:13;;31268:7;;31261:51;;-1:-1:-1;;;;;31289:13:0;;31304:7;;31268:4;;31289:13;;31268:7;;;;;31261:51;31343:13;;-1:-1:-1;;;;;31343:13:0;31331:51;31383:7;31400:6;31409:4;31423;31430:14;:3;31438:5;31430:14;:7;:14;:::i;31096:670::-;31521:11;;31500:7;;31493:43;;-1:-1:-1;;;;;31521:11:0;;;;31500:4;;31521:11;;31500:7;;;;;31493:43;31583:11;;31562:7;;31555:49;;-1:-1:-1;;;;;31583:11:0;;31596:7;;31562:4;;31583:11;;31562:7;;;;;31555:49;31635:11;;-1:-1:-1;;;;;31635:11:0;31623:49;31673:7;31690:6;31699:4;31713;31720:14;:3;31728:5;31720:14;:7;:14;:::i;:::-;31623:112;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31623:112:0;-1:-1:-1;;;;;31623:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;31623:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31623:112:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31623:112:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;31623:112:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;31623:112:0;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;14520:621:0;14890:10;;;14889:62;;-1:-1:-1;14906:39:0;;;-1:-1:-1;;;;;14906:39:0;;14930:4;14906:39;;;;-1:-1:-1;;;;;14906:39:0;;;;;;;;;:15;;;;;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;14906:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14906:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14906:39:0;:44;14889:62;14881:152;;;;;;-1:-1:-1;;;;;14881:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15070:62;;;-1:-1:-1;;;;;15070:62:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;15070:62:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;179:29;160:49;;15044:89:0;;15063:5;;15044:18;:89::i;:::-;14520:621;;;:::o;4482:181::-;4540:7;4572:5;;;4596:6;;;;4588:46;;;;;-1:-1:-1;;;;;4588:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;14124:176;14233:58;;;-1:-1:-1;;;;;14233:58:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;14233:58:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;179:29;160:49;;14207:85:0;;14226:5;;14207:18;:85::i;28929:1515::-;29069:16;;;29083:1;29069:16;;;29045:21;29069:16;;;;;29045:21;29069:16;;;;;105:10:-1;29069:16:0;88:34:-1;136:17;;-1:-1;29069:16:0;29045:40;;29106:8;29096:4;29101:1;29096:7;;;;;;;;;;-1:-1:-1;;;;;29096:18:0;;;:7;;;;;;;;;;:18;29125:7;;29135:9;;29125:4;;29130:1;;29125:7;;;;;;-1:-1:-1;;;;;29125:19:0;;;:7;;;;;;;;;:19;;;;29158:12;;:40;;;-1:-1:-1;;;;;29158:40:0;;;;;;;;;;;;;;;;;;29210:1;;29158:12;;;;;:20;;:40;;;;;;;;;;:12;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;29158:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29158:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29158:40:0;-1:-1:-1;;;;;29158:54:0;;29155:1278;;;29261:11;;29232:44;;-1:-1:-1;;;;;29232:28:0;;;;29261:11;;29232:44;:28;:44;:::i;:::-;29324:11;;29295:50;;-1:-1:-1;;;;;29295:28:0;;;;29324:11;29337:7;29295:50;:28;:50;:::i;:::-;29376:11;;-1:-1:-1;;;;;29376:11:0;29364:49;29414:7;29431:6;29440:4;29454;29461:14;:3;29469:5;29461:14;:7;:14;:::i;29155:1278::-;29572:13;;;29560:55;;;-1:-1:-1;;;;;29560:55:0;;;;;;;;;;;;;;;;;;;;;;29529:28;;-1:-1:-1;;;;;29572:13:0;;;;29560:40;;29601:7;;29610:4;;29560:55;;;;;;;;;;;;;;29572:13;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;29560:55:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29560:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29560:55:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;29560:55:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;29560:55:0;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;-1:-1;;29671:11:0;;29659:53;;;-1:-1:-1;;;;;29659:53:0;;;;;;;;;;;;;;;;;;;;;;29560:55;;-1:-1:-1;29630:26:0;;-1:-1:-1;;;;;;29671:11:0;;;;-1:-1:-1;29659:38:0;;-1:-1:-1;29698:7:0;;29707:4;;29659:53;;;;;;;;;;;;;;29671:11;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;29659:53:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29659:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29659:53:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;29659:53:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;29659:53:0;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;-1:-1;;29784:18:0;;29659:53;;-1:-1:-1;29659:53:0;;-1:-1:-1;;;29784:22:0;;;-1:-1:-1;29772:35:0;;;-1:-1:-1;29772:35:0;;;;;;;;;;;;29730:13;29766:1;29744:13;:20;:23;29730:39;;;;;;;;;;;;;;;;;;:77;29727:695;;;29866:13;;29837:46;;-1:-1:-1;;;;;29837:28:0;;;;29866:13;;29837:46;:28;:46;:::i;:::-;29931:13;;29902:52;;-1:-1:-1;;;;;29902:28:0;;;;29931:13;29946:7;29902:52;:28;:52;:::i;:::-;29985:13;;-1:-1:-1;;;;;29985:13:0;29973:51;30025:7;30042:6;30051:4;30065;30072:14;:3;30080:5;30072:14;:7;:14;:::i;:::-;29973:114;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29973:114:0;-1:-1:-1;;;;;29973:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;29973:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29973:114:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29973:114:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;29973:114:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;29973:114:0;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;-1:-1;29727:695:0;;-1:-1:-1;;;;;29727:695:0;;30176:11;;30147:44;;-1:-1:-1;;;;;30147:28:0;;;;30176:11;;30147:44;:28;:44;:::i;:::-;30239:11;;30210:50;;-1:-1:-1;;;;;30210:28:0;;;;30239:11;30252:7;30210:50;:28;:50;:::i;:::-;30291:11;;-1:-1:-1;;;;;30291:11:0;30279:49;30329:7;30346:6;30355:4;30369;30376:14;:3;30384:5;30376:14;:7;:14;:::i;:::-;30279:112;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30279:112:0;-1:-1:-1;;;;;30279:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;30279:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30279:112:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30279:112:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;30279:112:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;30279:112:0;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;16163:1114:0;16767:27;16775:5;-1:-1:-1;;;;;16767:25:0;;:27::i;:::-;16759:71;;;;;;;-1:-1:-1;;;;;16759:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16904:12;16918:23;16953:5;-1:-1:-1;;;;;16945:19:0;16965:4;16945:25;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;16945:25:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;16903:67:0;;;;16989:7;16981:52;;;;;;;-1:-1:-1;;;;;16981:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17050:17;;:21;17046:224;;17192:10;17181:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17181:30:0;17173:85;;;;;;-1:-1:-1;;;;;17173:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7455:345;7541:7;7643:12;7636:5;;;7628:28;;;;-1:-1:-1;;;;;7628:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7628:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7667:9;7683:1;7679;:5;;;;;;;;;7455:345;-1:-1:-1;;;;;7455:345:0:o;11138:619::-;11198:4;11666:20;;11509:66;11706:23;;;;;;:42;;-1:-1:-1;11733:15:0;;;11706:42;11698:51;11138:619;-1:-1:-1;;;;11138:619:0:o
Swarm Source
bzzr://611857737e6014b583b79adeeb75c8265f637fd207aa079ab66b785ac7d48a1b
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.