Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Multichain Info
No addresses found
Latest 25 from a total of 634 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Remove Liquidity | 12876268 | 1363 days ago | IN | 0 ETH | 0.00534689 | ||||
Add Liquidity | 12876265 | 1363 days ago | IN | 0 ETH | 0.00201593 | ||||
Set Active | 12876038 | 1363 days ago | IN | 0 ETH | 0.00029569 | ||||
Remove Liquidity | 12117601 | 1480 days ago | IN | 0 ETH | 0.0389476 | ||||
Remove Liquidity | 12035205 | 1493 days ago | IN | 0 ETH | 0.03544158 | ||||
Remove Liquidity | 12034064 | 1493 days ago | IN | 0 ETH | 0.04129389 | ||||
Remove Liquidity | 12029228 | 1494 days ago | IN | 0 ETH | 0.04113806 | ||||
Remove Liquidity | 11916825 | 1511 days ago | IN | 0 ETH | 0.04438977 | ||||
Remove Liquidity | 11834138 | 1524 days ago | IN | 0 ETH | 0.04362131 | ||||
Update Price | 11815239 | 1527 days ago | IN | 0 ETH | 0.02721895 | ||||
Remove Liquidity | 11814552 | 1527 days ago | IN | 0 ETH | 0.03934768 | ||||
Remove Liquidity | 11814412 | 1527 days ago | IN | 0 ETH | 0.04051476 | ||||
Set Sell Fee | 11737499 | 1539 days ago | IN | 0 ETH | 0.00172557 | ||||
Set Buy Fee | 11737493 | 1539 days ago | IN | 0 ETH | 0.00172563 | ||||
Remove Liquidity | 11720091 | 1541 days ago | IN | 0 ETH | 0.03349287 | ||||
Remove Liquidity | 11676607 | 1548 days ago | IN | 0 ETH | 0.01421558 | ||||
Remove Liquidity | 11676014 | 1548 days ago | IN | 0 ETH | 0.01792109 | ||||
Remove Liquidity | 11647343 | 1552 days ago | IN | 0 ETH | 0.0210304 | ||||
Remove Liquidity | 11642269 | 1553 days ago | IN | 0 ETH | 0.02270505 | ||||
Remove Liquidity | 11623882 | 1556 days ago | IN | 0 ETH | 0.02142118 | ||||
Update Price | 11621545 | 1556 days ago | IN | 0 ETH | 0.02303452 | ||||
Remove Liquidity | 11568307 | 1565 days ago | IN | 0 ETH | 0.01678593 | ||||
Remove Liquidity | 11541140 | 1569 days ago | IN | 0 ETH | 0.02482953 | ||||
Remove Liquidity | 11540001 | 1569 days ago | IN | 0 ETH | 0.0173283 | ||||
Remove Liquidity | 11538303 | 1569 days ago | IN | 0 ETH | 0.0294073 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
- | 12876268 | 1363 days ago | 10.59008597 ETH | ||||
- | 12565262 | 1411 days ago | 0.9474272 ETH | ||||
- | 12565262 | 1411 days ago | 0.00285943 ETH | ||||
- | 12477060 | 1425 days ago | 0.11322638 ETH | ||||
- | 12477060 | 1425 days ago | 0.00034172 ETH | ||||
- | 12117601 | 1480 days ago | 1.8936165 ETH | ||||
- | 12035205 | 1493 days ago | 2.33586962 ETH | ||||
- | 12034064 | 1493 days ago | 0.47188263 ETH | ||||
- | 12029228 | 1494 days ago | 0.47206722 ETH | ||||
- | 12000799 | 1498 days ago | 3.9585053 ETH | ||||
- | 12000799 | 1498 days ago | 0.01194719 ETH | ||||
- | 11995453 | 1499 days ago | 0.012 ETH | ||||
- | 11995453 | 1499 days ago | 4 ETH | ||||
- | 11916825 | 1511 days ago | 0.66156346 ETH | ||||
- | 11862397 | 1519 days ago | 5.71038568 ETH | ||||
- | 11862397 | 1519 days ago | 0.01723456 ETH | ||||
- | 11834138 | 1524 days ago | 0.52245213 ETH | ||||
- | 11820770 | 1526 days ago | 0.99426494 ETH | ||||
- | 11820770 | 1526 days ago | 0.00300079 ETH | ||||
- | 11816018 | 1527 days ago | 0.003 ETH | ||||
- | 11816018 | 1527 days ago | 1 ETH | ||||
- | 11814552 | 1527 days ago | 0.47222873 ETH | ||||
- | 11814412 | 1527 days ago | 0.47240624 ETH | ||||
- | 11761730 | 1535 days ago | 0.27255512 ETH | ||||
- | 11761730 | 1535 days ago | 0.0008226 ETH |
Loading...
Loading
Contract Name:
vault
Compiler Version
v0.6.6+commit.6c089d02
Contract Source Code (Solidity Multiple files format)
////////////////////////////////////////////////// //SYNLEV VAULT CONTRACT V 1.0.0 ////////////////////////// pragma solidity >= 0.6.6; import './ownable.sol'; import './SafeMath.sol'; import './IERC20.sol'; import './priceCalculatorInterface.sol'; import './vaultHelperInterface.sol'; import './priceAggregatorInterface.sol'; /* * @title SynLev vault contract. * @author Icarus */ contract vault is Owned { using SafeMath for uint256; constructor() public { priceAggregatorInterface(0x7196545d854D03D9c87B7588F6D9e1e42D876E95).registerVaultAggregator(0xF4030086522a5bEEa4988F8cA5B36dbC97BeE88c); priceAggregator = priceAggregatorInterface(0xb658E8680c1E1f148fb09cDbB3Bd0d58F9c14c00); priceCalculator = priceCalculatorInterface(0x80D129A01879422EB102c47Ed32DC6E8B123D05f); vaultHelper = vaultHelperInterface(0x70873daAa742bEA6D0EDf03f4f85c615983C01D7); synStakingProxy = 0x0070F3e1147c03a1Bb0caF80035B7c362D312119; buyFee = 10**7; sellFee = 10**7; } ///////////////////// //EVENTS///////////// ///////////////////// event PriceUpdate( uint256 bullPrice, uint256 bearPrice, uint256 bullLiqEquity, uint256 bearLiqEquity, uint256 bullEquity, uint256 bearEquity, uint256 roundId, bool updated ); event TokenBuy( address account, address token, uint256 tokensMinted, uint256 ethin, uint256 fees, uint256 bonus ); event TokenSell( address account, address token, uint256 tokensBurned, uint256 ethout, uint256 fees, uint256 penalty ); event LiquidityAdd( address account, uint256 eth, uint256 shares, uint256 shareprice ); event LiquidityRemove( address account, uint256 eth, uint256 shares, uint256 shareprice ); modifier isActive() { require(active == true); if(active == true && !priceAggregator.roundIdCheck(address(this))) { updatePrice(); } _; } modifier updateIfActive() { if(active == true && !priceAggregator.roundIdCheck(address(this))) { updatePrice(); } _; } ///////////////////// //GLOBAL VARIBLES ///////////////////// bool private active; uint256 constant private multiplier = 3; address private bull; address private bear; uint256 private latestRoundId; mapping(address => uint256) private price; mapping(address => uint256) private equity; uint256 private buyFee; uint256 private sellFee; uint256 private totalLiqShares; uint256 private liqFees; uint256 private balanceEquity; mapping(address => uint256) private liqTokens; mapping(address => uint256) private liqEquity; mapping(address => uint256) private userShares; priceAggregatorInterface public priceAggregator; priceCalculatorInterface public priceCalculator; vaultHelperInterface public vaultHelper; address payable public synStakingProxy; //Fallback function receive() external payable {} //////////////////////////////////// //LOW LEVEL BUY AND SELL FUNCTIONS// // NO SAFETY CHECK // //SHOULD ONLY BE CALLED BY OTHER // // CONTRACTS // //////////////////////////////////// /* * @notice Buys bull or bear token and updates price before token buy. * @param token bull or bear token address * @param account Recipient of newly minted tokens * @dev Should only be called by a router contract. Checks the excess ETH in * contract by calling getDepositEquity(). Can't 0 ETH buy. Calculates * resulting tokens and fees. Sends fees and mints tokens. * */ function tokenBuy(address token, address account) public virtual isActive() { uint256 ethin = getDepositEquity(); require(ethin > 0); require(token == bull || token == bear); IERC20 itkn = IERC20(token); uint256 fees = ethin.mul(buyFee).div(10**9); uint256 buyeth = ethin.sub(fees); uint256 bonus = vaultHelper.getBonus(address(this), token, buyeth); uint256 tokensToMint = buyeth.add(bonus).mul(10**18).div(price[token]); equity[token] = equity[token].add(buyeth).add(bonus); if(bonus != 0) balanceEquity = balanceEquity.sub(bonus); payFees(fees); itkn.mint(account, tokensToMint); emit TokenBuy(account, token, tokensToMint, ethin, fees, bonus); } /* * @notice Sells bull or bear token and updates price before token sell. * @param token bull or bear token address * @param account Recipient of resulting eth from burned tokens * @dev Should only be called by a router contract that simultaneously sends * tokens using transferFrom() and calls this function. Looks at the current * balance of the contract of the selected token. Can't 0 token sell. * Calculates resulting ETH from burned tokens. Pays fees, burns tokens, and * sends ETH. */ function tokenSell(address token, address payable account) public virtual isActive() { IERC20 itkn = IERC20(token); uint256 tokensToBurn = itkn.balanceOf(address(this)); require(tokensToBurn > 0); require(token == bull || token == bear); uint256 selleth = tokensToBurn.mul(price[token]).div(10**18); uint256 penalty = vaultHelper.getPenalty(address(this), token, selleth); uint256 fees = sellFee.mul(selleth.sub(penalty)).div(10**9); uint256 ethout = selleth.sub(penalty).sub(fees); equity[token] = equity[token].sub(selleth); if(penalty != 0) balanceEquity = balanceEquity.add(penalty); payFees(fees); itkn.burn(tokensToBurn); account.transfer(ethout); emit TokenSell(account, token, tokensToBurn, ethout, fees, penalty); } /* * @notice Adds liquidty to the contract and gives LP shares. Minimum LP add * is 1 wei. Virtually mints bear/bull tokens to be held in the vault. * @param account Recipient of LP shares * @dev Can be called by router but there is benefit to doing so. All * calculations are done with respect to equity and supply. Doing by price * creates rounding error. Calls updatePrice() then calls getLiqAddTokens() * to determine how many bull/bear to create. */ function addLiquidity(address account) public payable virtual updateIfActive() { uint256 ethin = getDepositEquity(); ( uint256 bullEquity, uint256 bearEquity, uint256 bullTokens, uint256 bearTokens ) = vaultHelper.getLiqAddTokens(address(this), ethin); uint256 sharePrice = vaultHelper.getSharePrice(address(this)); uint256 resultingShares = ethin.mul(10**18).div(sharePrice); liqEquity[bull] = liqEquity[bull].add(bullEquity); liqEquity[bear] = liqEquity[bear].add(bearEquity); liqTokens[bull] = liqTokens[bull].add(bullTokens); liqTokens[bear] = liqTokens[bear].add(bearTokens); userShares[account] = userShares[account].add(resultingShares); totalLiqShares = totalLiqShares.add(resultingShares); emit LiquidityAdd(account, ethin, resultingShares, sharePrice); } /* * @notice Removes liquidty to the contract and gives LP shares. Virtually * burns bear/bull tokens to be held in the vault. Cannot be called if user * has 0 shares * @param _shares How many shares to burn * @dev Cannot be called by a router as LP shares are not currently tokenized. * Calls updatePrice() then calls getLiqRemoveTokens() to determine how many * bull/bear tokens to remove. */ function removeLiquidity(uint256 shares) public virtual updateIfActive() { require(shares <= userShares[msg.sender]); ( uint256 bullEquity, uint256 bearEquity, uint256 bullTokens, uint256 bearTokens, uint256 feesPaid ) = vaultHelper.getLiqRemoveTokens(address(this), shares); uint256 sharePrice = vaultHelper.getSharePrice(address(this)); uint256 resultingEth = bullEquity.add(bearEquity).add(feesPaid); liqEquity[bull] = liqEquity[bull].sub(bullEquity); liqEquity[bear] = liqEquity[bear].sub(bearEquity); liqTokens[bull] = liqTokens[bull].sub(bullTokens); liqTokens[bear] = liqTokens[bear].sub(bearTokens); userShares[msg.sender] = userShares[msg.sender].sub(shares); totalLiqShares = totalLiqShares.sub(shares); liqFees = liqFees.sub(feesPaid); msg.sender.transfer(resultingEth); emit LiquidityRemove(msg.sender, resultingEth, shares, sharePrice); } /* * @notice Updates price from chainlink oracles. * @param _shares How many shares to burn * @dev Calls getUpdatedPrice() function and sets new price, equity, liquidity * equity, and latestRoundId; only if there is new price data * @return bool if price was updated */ function updatePrice() public { require(active == true); ( uint256[6] memory priceArray, uint256 roundId, bool updated ) = priceCalculator.getUpdatedPrice(address(this), latestRoundId); if(updated == true) { ( price[bull], price[bear], liqEquity[bull], liqEquity[bear], equity[bull], equity[bear], latestRoundId ) = ( priceArray[0], priceArray[1], priceArray[2], priceArray[3], priceArray[4], priceArray[5], roundId ); } emit PriceUpdate( price[bull], price[bear], liqEquity[bull], liqEquity[bear], equity[bull], equity[bear], latestRoundId, updated ); } /////////////////////// //INTERNAL FUNCTIONS/// /////////////////////// /* * @notice Pays half fees to SYN stakers and half to LP * @param _amount Fees to be paid in ETH * @dev Only called by tokenBuy() and tokenSell() */ function payFees(uint256 amount) internal { synStakingProxy.transfer(amount.div(2)); liqFees += amount.sub(amount.div(2)); } /////////////////// ///VIEW FUNCTIONS// /////////////////// function getActive() public view returns(bool) {return(active);} function getMultiplier() public pure returns(uint256) {return(multiplier);} function getBullToken() public view returns(address) {return(bull);} function getBearToken() public view returns(address) {return(bear);} function getLatestRoundId() public view returns(uint256) {return(latestRoundId);} function getPrice(address token) public view returns(uint256) {return(price[token]);} function getEquity(address token) public view returns(uint256) {return(equity[token]);} function getBuyFee() public view returns(uint256) {return(buyFee);} function getSellFee() public view returns(uint256) {return(sellFee);} function getTotalLiqShares() public view returns(uint256) {return(totalLiqShares);} function getLiqFees() public view returns(uint256) {return(liqFees);} function getBalanceEquity() public view returns(uint256) {return(balanceEquity);} function getLiqTokens(address token) public view returns(uint256) {return(liqTokens[token]);} function getLiqEquity(address token) public view returns(uint256) {return(liqEquity[token]);} function getUserShares(address account) public view returns(uint256) {return(userShares[account]);} function getTotalEquity() public view returns(uint256) { return(getTokenEquity(bear).add(getTokenEquity(bull))); } function getTokenEquity(address token) public view returns(uint256) { return(equity[token].add(liqEquity[token])); } function getTokenLiqEquity(address token) public view returns(uint256) { return(liqTokens[token].mul(price[token]).div(10**18)); } function getDepositEquity() public view returns(uint256) { return(address(this).balance.sub(liqFees.add(balanceEquity).add(getTotalEquity()))); } /////////////////// //ADMIN FUNCTIONS// /////////////////// //One time use function to set token addresses. this can never be changed once set. //Cannot be included in constructor as vault must be deployed before tokens. function setTokens(address bearAddress, address bullAddress) public onlyOwner() { require(bear == address(0) || bull == address(0)); (bull, bear) = (bullAddress, bearAddress); //Set initial price to .01 eth (price[bull], price[bear]) = (10**16, 10**16); } function setActive(bool state, uint256 roundId) public onlyOwner() { if(roundId != 0) { advanceRoundId(roundId); } active = state; } function advanceRoundId(uint256 roundId) public onlyOwner() { require(active == false); require(roundId > latestRoundId); ( , uint256 lastRoundId) = priceAggregator.priceRequest(address(this), latestRoundId); latestRoundId = lastRoundId >= roundId ? roundId : lastRoundId; } //Fees in the form of 1 / 10^8 function setBuyFee(uint256 amount) public onlyOwner() { require(amount <= 10**9); buyFee = amount; } //Sell fees limited to a maximum of 1% function setSellFee(uint256 amount) public onlyOwner() { require(amount <= 10**7); sellFee = amount; } }
pragma solidity >= 0.6.4; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); function mint(address account, uint256 amount) external; function burn(uint256 amount) external; event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); }
pragma solidity ^0.6.0; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } contract Owned is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
pragma solidity >= 0.6.6; interface priceAggregatorInterface { function registerVaultAggregator(address oracle) external; function priceRequest( address vault, uint256 lastUpdated ) external view returns(int256[] memory, uint256); function roundIdCheck(address vault) external view returns(bool); }
pragma solidity >= 0.6.6; interface priceCalculatorInterface { function getUpdatedPrice( address vault, uint256 latestRoundId ) external view returns( uint256[6] memory latestPrice, uint256 rRoundId, bool updated ); function getKFactor( uint256 targetEquity, uint256 bullEquity, uint256 bearEquity, uint256 totalEquity ) external view returns(uint256 kFactor); }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.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. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } }
pragma solidity >= 0.6.6; interface vaultHelperInterface { function getBonus(address vault, address token, uint256 eth) external view returns(uint256 bonus); function getPenalty(address vault, address token, uint256 eth) external view returns(uint256 penalty); function getSharePrice(address vault) external view returns(uint256 sharePrice); function getLiqAddTokens(address vault, uint256 eth) external view returns( uint256 bullEquity, uint256 bearEquity, uint256 bullTokens, uint256 bearTokens ); function getLiqRemoveTokens(address vault, uint256 eth) external view returns( uint256 bullEquity, uint256 bearEquity, uint256 bullTokens, uint256 bearTokens, uint256 feesPaid ); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"eth","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shareprice","type":"uint256"}],"name":"LiquidityAdd","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"eth","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shareprice","type":"uint256"}],"name":"LiquidityRemove","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"bullPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bearPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bullLiqEquity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bearLiqEquity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bullEquity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bearEquity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":false,"internalType":"bool","name":"updated","type":"bool"}],"name":"PriceUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokensMinted","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bonus","type":"uint256"}],"name":"TokenBuy","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokensBurned","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethout","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"penalty","type":"uint256"}],"name":"TokenSell","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"advanceRoundId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalanceEquity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBearToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBullToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDepositEquity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getEquity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLatestRoundId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getLiqEquity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLiqFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getLiqTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getTokenEquity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getTokenLiqEquity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalEquity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalLiqShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getUserShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceAggregator","outputs":[{"internalType":"contract priceAggregatorInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceCalculator","outputs":[{"internalType":"contract priceCalculatorInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"removeLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"},{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"setActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"bearAddress","type":"address"},{"internalType":"address","name":"bullAddress","type":"address"}],"name":"setTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"synStakingProxy","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"tokenBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address payable","name":"account","type":"address"}],"name":"tokenSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updatePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vaultHelper","outputs":[{"internalType":"contract vaultHelperInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b5060006100246001600160e01b0361018016565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506040805163446bc45360e01b815273f4030086522a5beea4988f8ca5b36dbc97bee88c60048201529051737196545d854d03d9c87b7588f6d9e1e42d876e959163446bc45391602480830192600092919082900301818387803b1580156100d457600080fd5b505af11580156100e8573d6000803e3d6000fd5b5050600e80546001600160a01b031990811673b658e8680c1e1f148fb09cdbb3bd0d58f9c14c0017909155600f805482167380d129a01879422eb102c47ed32dc6e8b123d05f1790556010805482167370873daaa742bea6d0edf03f4f85c615983c01d7179055601180549091167270f3e1147c03a1bb0caf80035b7c362d3121191790555050629896806006819055600755610184565b3390565b61232880620001946000396000f3fe6080604052600436106102125760003560e01c806382496e6f11610118578063b5a71d14116100a0578063cbc7854e1161006f578063cbc7854e14610641578063d344d4991461067c578063daa22f7a146106af578063e3412e3d146106e1578063f2fde38b1461070757610219565b8063b5a71d1414610593578063ba0cb22b146105c6578063c4056493146105f9578063cad29e9c1461062c57610219565b80638da5cb5b116100e75780638da5cb5b146104f75780638f818b901461050c5780639c8f9f2314610521578063a4d7a6cc1461054b578063ac86ea0c1461056057610219565b806382496e6f146104795780638b4cee08146104a35780638b95e335146104cd5780638c3b990b146104e257610219565b80633ba5d96d1161019b57806356aef98c1161016a57806356aef98c146104105780635db214da14610425578063673a7e281461043a5780636c4ea9291461044f578063715018a61461046457610219565b80633ba5d96d1461037857806340490a901461038d57806341976e09146103a257806347f958a7146103d557610219565b806321172e5d116101e257806321172e5d146102e9578063289af0d8146102fe5780633078fff51461031357806333163773146103285780633b252e151461033d57610219565b80629ebb101461021e5780630cc835a31461024757806316eb3814146102735780631ee60337146102b857610219565b3661021957005b600080fd5b34801561022a57600080fd5b5061023361073a565b604080519115158252519081900360200190f35b34801561025357600080fd5b506102716004803603602081101561026a57600080fd5b503561074a565b005b34801561027f57600080fd5b506102a66004803603602081101561029657600080fd5b50356001600160a01b03166107b8565b60408051918252519081900360200190f35b3480156102c457600080fd5b506102cd6107d3565b604080516001600160a01b039092168252519081900360200190f35b3480156102f557600080fd5b506102cd6107e2565b34801561030a57600080fd5b506102a66107f1565b34801561031f57600080fd5b506102cd6107f7565b34801561033457600080fd5b506102a6610806565b34801561034957600080fd5b506102716004803603604081101561036057600080fd5b506001600160a01b038135811691602001351661080c565b34801561038457600080fd5b506102cd610c06565b34801561039957600080fd5b506102a6610c15565b3480156103ae57600080fd5b506102a6600480360360208110156103c557600080fd5b50356001600160a01b0316610c1a565b3480156103e157600080fd5b50610271600480360360408110156103f857600080fd5b506001600160a01b0381358116916020013516610c35565b34801561041c57600080fd5b506102a6610fa6565b34801561043157600080fd5b506102cd610fdc565b34801561044657600080fd5b50610271610feb565b34801561045b57600080fd5b506102a66111f8565b34801561047057600080fd5b5061027161122a565b34801561048557600080fd5b506102716004803603602081101561049c57600080fd5b50356112cc565b3480156104af57600080fd5b50610271600480360360208110156104c657600080fd5b5035611485565b3480156104d957600080fd5b506102cd6114f2565b3480156104ee57600080fd5b506102a6611501565b34801561050357600080fd5b506102cd611507565b34801561051857600080fd5b506102a6611516565b34801561052d57600080fd5b506102716004803603602081101561054457600080fd5b503561151c565b34801561055757600080fd5b506102a66118ef565b34801561056c57600080fd5b506102a66004803603602081101561058357600080fd5b50356001600160a01b03166118f5565b34801561059f57600080fd5b506102a6600480360360208110156105b657600080fd5b50356001600160a01b031661192e565b3480156105d257600080fd5b506102a6600480360360208110156105e957600080fd5b50356001600160a01b031661196f565b34801561060557600080fd5b506102a66004803603602081101561061c57600080fd5b50356001600160a01b031661198a565b34801561063857600080fd5b506102a66119a5565b34801561064d57600080fd5b506102716004803603604081101561066457600080fd5b506001600160a01b03813581169160200135166119ab565b34801561068857600080fd5b506102a66004803603602081101561069f57600080fd5b50356001600160a01b0316611a8b565b3480156106bb57600080fd5b50610271600480360360408110156106d257600080fd5b50803515159060200135611aa6565b610271600480360360208110156106f757600080fd5b50356001600160a01b0316611b2c565b34801561071357600080fd5b506102716004803603602081101561072a57600080fd5b50356001600160a01b0316611ec1565b600054600160a01b900460ff1690565b610752611fb9565b6000546001600160a01b039081169116146107a2576040805162461bcd60e51b815260206004820181905260248201526000805160206122d3833981519152604482015290519081900360640190fd5b633b9aca008111156107b357600080fd5b600655565b6001600160a01b03166000908152600b602052604090205490565b6010546001600160a01b031681565b6011546001600160a01b031681565b60075490565b600e546001600160a01b031681565b60085490565b600054600160a01b900460ff16151560011461082757600080fd5b600054600160a01b900460ff16151560011480156108b95750600e5460408051632c84088960e11b815230600482015290516001600160a01b0390921691635908111291602480820192602092909190829003018186803b15801561088b57600080fd5b505afa15801561089f573d6000803e3d6000fd5b505050506040513d60208110156108b557600080fd5b5051155b156108c6576108c6610feb565b604080516370a0823160e01b8152306004820152905183916000916001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561091157600080fd5b505afa158015610925573d6000803e3d6000fd5b505050506040513d602081101561093b57600080fd5b505190508061094957600080fd5b6001546001600160a01b038581169116148061097257506002546001600160a01b038581169116145b61097b57600080fd5b6001600160a01b0384166000908152600460205260408120546109bf90670de0b6b3a7640000906109b390859063ffffffff611fbd16565b9063ffffffff61201d16565b60105460408051637c83ffd160e01b81523060048201526001600160a01b0389811660248301526044820185905291519394506000939190921691637c83ffd1916064808301926020929190829003018186803b158015610a1f57600080fd5b505afa158015610a33573d6000803e3d6000fd5b505050506040513d6020811015610a4957600080fd5b505190506000610a79633b9aca006109b3610a6a868663ffffffff61205f16565b6007549063ffffffff611fbd16565b90506000610a9d82610a91868663ffffffff61205f16565b9063ffffffff61205f16565b6001600160a01b038916600090815260056020526040902054909150610ac9908563ffffffff61205f16565b6001600160a01b0389166000908152600560205260409020558215610aff57600a54610afb908463ffffffff6120a116565b600a555b610b08826120fb565b856001600160a01b03166342966c68866040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610b4e57600080fd5b505af1158015610b62573d6000803e3d6000fd5b50506040516001600160a01b038a16925083156108fc02915083906000818181858888f19350505050158015610b9c573d6000803e3d6000fd5b50604080516001600160a01b03808a1682528a166020820152808201879052606081018390526080810184905260a0810185905290517fe540b6cc73989eeec2f777710efa155b6cc71a931d80862d5bf911c6109972c39181900360c00190a15050505050505050565b6001546001600160a01b031690565b600390565b6001600160a01b031660009081526004602052604090205490565b600054600160a01b900460ff161515600114610c5057600080fd5b600054600160a01b900460ff1615156001148015610ce25750600e5460408051632c84088960e11b815230600482015290516001600160a01b0390921691635908111291602480820192602092909190829003018186803b158015610cb457600080fd5b505afa158015610cc8573d6000803e3d6000fd5b505050506040513d6020811015610cde57600080fd5b5051155b15610cef57610cef610feb565b6000610cf96111f8565b905060008111610d0857600080fd5b6001546001600160a01b0384811691161480610d3157506002546001600160a01b038481169116145b610d3a57600080fd5b60008390506000610d5e633b9aca006109b360065486611fbd90919063ffffffff16565b90506000610d72848363ffffffff61205f16565b6010546040805163f8956a6760e01b81523060048201526001600160a01b038a81166024830152604482018590529151939450600093919092169163f8956a67916064808301926020929190829003018186803b158015610dd257600080fd5b505afa158015610de6573d6000803e3d6000fd5b505050506040513d6020811015610dfc57600080fd5b50516001600160a01b03881660009081526004602052604081205491925090610e47906109b3670de0b6b3a7640000610e3b878763ffffffff6120a116565b9063ffffffff611fbd16565b6001600160a01b038916600090815260056020526040902054909150610e85908390610e79908663ffffffff6120a116565b9063ffffffff6120a116565b6001600160a01b0389166000908152600560205260409020558115610ebb57600a54610eb7908363ffffffff61205f16565b600a555b610ec4846120fb565b846001600160a01b03166340c10f1988836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610f2457600080fd5b505af1158015610f38573d6000803e3d6000fd5b5050604080516001600160a01b03808c1682528c166020820152808201859052606081018a90526080810188905260a0810186905290517f73cfafc06c41aefbe585fd047208a7776b2334d2329decfb3d1b1f6ec8c3c41693509081900360c0019150a15050505050505050565b600154600090610fd790610fc2906001600160a01b03166118f5565b600254610e79906001600160a01b03166118f5565b905090565b6002546001600160a01b031690565b600054600160a01b900460ff16151560011461100657600080fd5b61100e61226d565b600f546003546040805163416bd10760e11b815230600482015260248101929092525160009283926001600160a01b03909116916382d7a20e9160448082019261010092909190829003018186803b15801561106957600080fd5b505afa15801561107d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101008110156110a357600080fd5b5060c081015160e0820151919450925090506001811515141561113a5782516020808501516040808701516060880151608089015160a08a01516001546001600160a01b03908116600081815260048a52878120600254909316808252888220838352600c8c528983208284528a84209484526005909c528983209183529890912060038e90559390935592909155919055935555555b6001546001600160a01b0390811660008181526004602090815260408083205460025490951680845281842054858552600c8452828520548286528386205496865260058552838620549286529483902054600354845198895294880191909152868301949094526060860194909452608085019390935260a084019190915260c083015282151560e0830152517fe7d4328bcca588827789f132837dde7289420fb8512d5c0a706059194fe1dfd1918190036101000190a1505050565b6000610fd761121d611208610fa6565b600a54600954610e799163ffffffff6120a116565b479063ffffffff61205f16565b611232611fb9565b6000546001600160a01b03908116911614611282576040805162461bcd60e51b815260206004820181905260248201526000805160206122d3833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6112d4611fb9565b6000546001600160a01b03908116911614611324576040805162461bcd60e51b815260206004820181905260248201526000805160206122d3833981519152604482015290519081900360640190fd5b600054600160a01b900460ff161561133b57600080fd5b600354811161134957600080fd5b600e5460035460408051631760164960e31b81523060048201526024810192909252516000926001600160a01b03169163bb00b2489160448083019286929190829003018186803b15801561139d57600080fd5b505afa1580156113b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160409081528110156113da57600080fd5b81019080805160405193929190846401000000008211156113fa57600080fd5b90830190602082018581111561140f57600080fd5b825186602082028301116401000000008211171561142c57600080fd5b82525081516020918201928201910280838360005b83811015611459578181015183820152602001611441565b5050505091909101604052506020015193505050508181101561147c578061147e565b815b6003555050565b61148d611fb9565b6000546001600160a01b039081169116146114dd576040805162461bcd60e51b815260206004820181905260248201526000805160206122d3833981519152604482015290519081900360640190fd5b629896808111156114ed57600080fd5b600755565b600f546001600160a01b031681565b60035490565b6000546001600160a01b031690565b60065490565b600054600160a01b900460ff16151560011480156115ae5750600e5460408051632c84088960e11b815230600482015290516001600160a01b0390921691635908111291602480820192602092909190829003018186803b15801561158057600080fd5b505afa158015611594573d6000803e3d6000fd5b505050506040513d60208110156115aa57600080fd5b5051155b156115bb576115bb610feb565b336000908152600d60205260409020548111156115d757600080fd5b60105460408051639486909f60e01b815230600482015260248101849052905160009283928392839283926001600160a01b0390911691639486909f9160448082019260a092909190829003018186803b15801561163457600080fd5b505afa158015611648573d6000803e3d6000fd5b505050506040513d60a081101561165e57600080fd5b5080516020808301516040808501516060860151608090960151601054835163b9c7840b60e01b81523060048201529351969c50939a509098509496509394506000936001600160a01b039091169263b9c7840b92602480840193919291829003018186803b1580156116d057600080fd5b505afa1580156116e4573d6000803e3d6000fd5b505050506040513d60208110156116fa57600080fd5b50519050600061171483610e79898963ffffffff6120a116565b6001546001600160a01b03166000908152600c6020526040902054909150611742908863ffffffff61205f16565b6001546001600160a01b039081166000908152600c6020526040808220939093556002549091168152205461177d908763ffffffff61205f16565b6002546001600160a01b039081166000908152600c60209081526040808320949094556001549092168152600b90915220546117bf908663ffffffff61205f16565b6001546001600160a01b039081166000908152600b602052604080822093909355600254909116815220546117fa908563ffffffff61205f16565b6002546001600160a01b03166000908152600b6020908152604080832093909355338252600d90522054611834908963ffffffff61205f16565b336000908152600d6020526040902055600854611857908963ffffffff61205f16565b60085560095461186d908463ffffffff61205f16565b600955604051339082156108fc029083906000818181858888f1935050505015801561189d573d6000803e3d6000fd5b5060408051338152602081018390528082018a90526060810184905290517f11c75623de2058a663854f734fb8083a261970290f564abc9aa2ac01bfcbe81f9181900360800190a15050505050505050565b60095490565b6001600160a01b0381166000908152600c602090815260408083205460059092528220546119289163ffffffff6120a116565b92915050565b6001600160a01b038116600090815260046020908152604080832054600b90925282205461192891670de0b6b3a7640000916109b39163ffffffff611fbd16565b6001600160a01b03166000908152600d602052604090205490565b6001600160a01b03166000908152600c602052604090205490565b600a5490565b6119b3611fb9565b6000546001600160a01b03908116911614611a03576040805162461bcd60e51b815260206004820181905260248201526000805160206122d3833981519152604482015290519081900360640190fd5b6002546001600160a01b03161580611a2457506001546001600160a01b0316155b611a2d57600080fd5b600280546001600160a01b03199081166001600160a01b03948516179182905560018054909116928416929092179182905590821660009081526004602052604080822092909316815291909120662386f26fc10000908190559055565b6001600160a01b031660009081526005602052604090205490565b611aae611fb9565b6000546001600160a01b03908116911614611afe576040805162461bcd60e51b815260206004820181905260248201526000805160206122d3833981519152604482015290519081900360640190fd5b8015611b0d57611b0d816112cc565b5060008054911515600160a01b0260ff60a01b19909216919091179055565b600054600160a01b900460ff1615156001148015611bbe5750600e5460408051632c84088960e11b815230600482015290516001600160a01b0390921691635908111291602480820192602092909190829003018186803b158015611b9057600080fd5b505afa158015611ba4573d6000803e3d6000fd5b505050506040513d6020811015611bba57600080fd5b5051155b15611bcb57611bcb610feb565b6000611bd56111f8565b60105460408051630bdc478960e01b81523060048201526024810184905290519293506000928392839283926001600160a01b0390921691630bdc478991604480820192608092909190829003018186803b158015611c3357600080fd5b505afa158015611c47573d6000803e3d6000fd5b505050506040513d6080811015611c5d57600080fd5b508051602080830151604080850151606090950151601054825163b9c7840b60e01b81523060048201529251959a509298509496509394506000936001600160a01b039091169263b9c7840b92602480840193919291829003018186803b158015611cc757600080fd5b505afa158015611cdb573d6000803e3d6000fd5b505050506040513d6020811015611cf157600080fd5b505190506000611d13826109b389670de0b6b3a764000063ffffffff611fbd16565b6001546001600160a01b03166000908152600c6020526040902054909150611d41908763ffffffff6120a116565b6001546001600160a01b039081166000908152600c60205260408082209390935560025490911681522054611d7c908663ffffffff6120a116565b6002546001600160a01b039081166000908152600c60209081526040808320949094556001549092168152600b9091522054611dbe908563ffffffff6120a116565b6001546001600160a01b039081166000908152600b60205260408082209390935560025490911681522054611df9908463ffffffff6120a116565b6002546001600160a01b039081166000908152600b6020908152604080832094909455918b168152600d9091522054611e38908263ffffffff6120a116565b6001600160a01b0389166000908152600d6020526040902055600854611e64908263ffffffff6120a116565b600855604080516001600160a01b038a168152602081018990528082018390526060810184905290517fe1d1934c742278e3794231612340f57d39d41877f0106ef92422f2f86ce07bf49181900360800190a15050505050505050565b611ec9611fb9565b6000546001600160a01b03908116911614611f19576040805162461bcd60e51b815260206004820181905260248201526000805160206122d3833981519152604482015290519081900360640190fd5b6001600160a01b038116611f5e5760405162461bcd60e51b815260040180806020018281038252602681526020018061228c6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b600082611fcc57506000611928565b82820282848281611fd957fe5b04146120165760405162461bcd60e51b81526004018080602001828103825260218152602001806122b26021913960400191505060405180910390fd5b9392505050565b600061201683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612171565b600061201683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612213565b600082820183811015612016576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6011546001600160a01b03166108fc61211b83600263ffffffff61201d16565b6040518115909202916000818181858888f19350505050158015612143573d6000803e3d6000fd5b5061216561215882600263ffffffff61201d16565b829063ffffffff61205f16565b60098054909101905550565b600081836121fd5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156121c25781810151838201526020016121aa565b50505050905090810190601f1680156121ef5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161220957fe5b0495945050505050565b600081848411156122655760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156121c25781810151838201526020016121aa565b505050900390565b6040518060c00160405280600690602082028036833750919291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220e1ee60b7cc84d00c32604daa19942be8cc3388749240d646c29485047320eda064736f6c63430006060033
Deployed Bytecode
0x6080604052600436106102125760003560e01c806382496e6f11610118578063b5a71d14116100a0578063cbc7854e1161006f578063cbc7854e14610641578063d344d4991461067c578063daa22f7a146106af578063e3412e3d146106e1578063f2fde38b1461070757610219565b8063b5a71d1414610593578063ba0cb22b146105c6578063c4056493146105f9578063cad29e9c1461062c57610219565b80638da5cb5b116100e75780638da5cb5b146104f75780638f818b901461050c5780639c8f9f2314610521578063a4d7a6cc1461054b578063ac86ea0c1461056057610219565b806382496e6f146104795780638b4cee08146104a35780638b95e335146104cd5780638c3b990b146104e257610219565b80633ba5d96d1161019b57806356aef98c1161016a57806356aef98c146104105780635db214da14610425578063673a7e281461043a5780636c4ea9291461044f578063715018a61461046457610219565b80633ba5d96d1461037857806340490a901461038d57806341976e09146103a257806347f958a7146103d557610219565b806321172e5d116101e257806321172e5d146102e9578063289af0d8146102fe5780633078fff51461031357806333163773146103285780633b252e151461033d57610219565b80629ebb101461021e5780630cc835a31461024757806316eb3814146102735780631ee60337146102b857610219565b3661021957005b600080fd5b34801561022a57600080fd5b5061023361073a565b604080519115158252519081900360200190f35b34801561025357600080fd5b506102716004803603602081101561026a57600080fd5b503561074a565b005b34801561027f57600080fd5b506102a66004803603602081101561029657600080fd5b50356001600160a01b03166107b8565b60408051918252519081900360200190f35b3480156102c457600080fd5b506102cd6107d3565b604080516001600160a01b039092168252519081900360200190f35b3480156102f557600080fd5b506102cd6107e2565b34801561030a57600080fd5b506102a66107f1565b34801561031f57600080fd5b506102cd6107f7565b34801561033457600080fd5b506102a6610806565b34801561034957600080fd5b506102716004803603604081101561036057600080fd5b506001600160a01b038135811691602001351661080c565b34801561038457600080fd5b506102cd610c06565b34801561039957600080fd5b506102a6610c15565b3480156103ae57600080fd5b506102a6600480360360208110156103c557600080fd5b50356001600160a01b0316610c1a565b3480156103e157600080fd5b50610271600480360360408110156103f857600080fd5b506001600160a01b0381358116916020013516610c35565b34801561041c57600080fd5b506102a6610fa6565b34801561043157600080fd5b506102cd610fdc565b34801561044657600080fd5b50610271610feb565b34801561045b57600080fd5b506102a66111f8565b34801561047057600080fd5b5061027161122a565b34801561048557600080fd5b506102716004803603602081101561049c57600080fd5b50356112cc565b3480156104af57600080fd5b50610271600480360360208110156104c657600080fd5b5035611485565b3480156104d957600080fd5b506102cd6114f2565b3480156104ee57600080fd5b506102a6611501565b34801561050357600080fd5b506102cd611507565b34801561051857600080fd5b506102a6611516565b34801561052d57600080fd5b506102716004803603602081101561054457600080fd5b503561151c565b34801561055757600080fd5b506102a66118ef565b34801561056c57600080fd5b506102a66004803603602081101561058357600080fd5b50356001600160a01b03166118f5565b34801561059f57600080fd5b506102a6600480360360208110156105b657600080fd5b50356001600160a01b031661192e565b3480156105d257600080fd5b506102a6600480360360208110156105e957600080fd5b50356001600160a01b031661196f565b34801561060557600080fd5b506102a66004803603602081101561061c57600080fd5b50356001600160a01b031661198a565b34801561063857600080fd5b506102a66119a5565b34801561064d57600080fd5b506102716004803603604081101561066457600080fd5b506001600160a01b03813581169160200135166119ab565b34801561068857600080fd5b506102a66004803603602081101561069f57600080fd5b50356001600160a01b0316611a8b565b3480156106bb57600080fd5b50610271600480360360408110156106d257600080fd5b50803515159060200135611aa6565b610271600480360360208110156106f757600080fd5b50356001600160a01b0316611b2c565b34801561071357600080fd5b506102716004803603602081101561072a57600080fd5b50356001600160a01b0316611ec1565b600054600160a01b900460ff1690565b610752611fb9565b6000546001600160a01b039081169116146107a2576040805162461bcd60e51b815260206004820181905260248201526000805160206122d3833981519152604482015290519081900360640190fd5b633b9aca008111156107b357600080fd5b600655565b6001600160a01b03166000908152600b602052604090205490565b6010546001600160a01b031681565b6011546001600160a01b031681565b60075490565b600e546001600160a01b031681565b60085490565b600054600160a01b900460ff16151560011461082757600080fd5b600054600160a01b900460ff16151560011480156108b95750600e5460408051632c84088960e11b815230600482015290516001600160a01b0390921691635908111291602480820192602092909190829003018186803b15801561088b57600080fd5b505afa15801561089f573d6000803e3d6000fd5b505050506040513d60208110156108b557600080fd5b5051155b156108c6576108c6610feb565b604080516370a0823160e01b8152306004820152905183916000916001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561091157600080fd5b505afa158015610925573d6000803e3d6000fd5b505050506040513d602081101561093b57600080fd5b505190508061094957600080fd5b6001546001600160a01b038581169116148061097257506002546001600160a01b038581169116145b61097b57600080fd5b6001600160a01b0384166000908152600460205260408120546109bf90670de0b6b3a7640000906109b390859063ffffffff611fbd16565b9063ffffffff61201d16565b60105460408051637c83ffd160e01b81523060048201526001600160a01b0389811660248301526044820185905291519394506000939190921691637c83ffd1916064808301926020929190829003018186803b158015610a1f57600080fd5b505afa158015610a33573d6000803e3d6000fd5b505050506040513d6020811015610a4957600080fd5b505190506000610a79633b9aca006109b3610a6a868663ffffffff61205f16565b6007549063ffffffff611fbd16565b90506000610a9d82610a91868663ffffffff61205f16565b9063ffffffff61205f16565b6001600160a01b038916600090815260056020526040902054909150610ac9908563ffffffff61205f16565b6001600160a01b0389166000908152600560205260409020558215610aff57600a54610afb908463ffffffff6120a116565b600a555b610b08826120fb565b856001600160a01b03166342966c68866040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610b4e57600080fd5b505af1158015610b62573d6000803e3d6000fd5b50506040516001600160a01b038a16925083156108fc02915083906000818181858888f19350505050158015610b9c573d6000803e3d6000fd5b50604080516001600160a01b03808a1682528a166020820152808201879052606081018390526080810184905260a0810185905290517fe540b6cc73989eeec2f777710efa155b6cc71a931d80862d5bf911c6109972c39181900360c00190a15050505050505050565b6001546001600160a01b031690565b600390565b6001600160a01b031660009081526004602052604090205490565b600054600160a01b900460ff161515600114610c5057600080fd5b600054600160a01b900460ff1615156001148015610ce25750600e5460408051632c84088960e11b815230600482015290516001600160a01b0390921691635908111291602480820192602092909190829003018186803b158015610cb457600080fd5b505afa158015610cc8573d6000803e3d6000fd5b505050506040513d6020811015610cde57600080fd5b5051155b15610cef57610cef610feb565b6000610cf96111f8565b905060008111610d0857600080fd5b6001546001600160a01b0384811691161480610d3157506002546001600160a01b038481169116145b610d3a57600080fd5b60008390506000610d5e633b9aca006109b360065486611fbd90919063ffffffff16565b90506000610d72848363ffffffff61205f16565b6010546040805163f8956a6760e01b81523060048201526001600160a01b038a81166024830152604482018590529151939450600093919092169163f8956a67916064808301926020929190829003018186803b158015610dd257600080fd5b505afa158015610de6573d6000803e3d6000fd5b505050506040513d6020811015610dfc57600080fd5b50516001600160a01b03881660009081526004602052604081205491925090610e47906109b3670de0b6b3a7640000610e3b878763ffffffff6120a116565b9063ffffffff611fbd16565b6001600160a01b038916600090815260056020526040902054909150610e85908390610e79908663ffffffff6120a116565b9063ffffffff6120a116565b6001600160a01b0389166000908152600560205260409020558115610ebb57600a54610eb7908363ffffffff61205f16565b600a555b610ec4846120fb565b846001600160a01b03166340c10f1988836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610f2457600080fd5b505af1158015610f38573d6000803e3d6000fd5b5050604080516001600160a01b03808c1682528c166020820152808201859052606081018a90526080810188905260a0810186905290517f73cfafc06c41aefbe585fd047208a7776b2334d2329decfb3d1b1f6ec8c3c41693509081900360c0019150a15050505050505050565b600154600090610fd790610fc2906001600160a01b03166118f5565b600254610e79906001600160a01b03166118f5565b905090565b6002546001600160a01b031690565b600054600160a01b900460ff16151560011461100657600080fd5b61100e61226d565b600f546003546040805163416bd10760e11b815230600482015260248101929092525160009283926001600160a01b03909116916382d7a20e9160448082019261010092909190829003018186803b15801561106957600080fd5b505afa15801561107d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101008110156110a357600080fd5b5060c081015160e0820151919450925090506001811515141561113a5782516020808501516040808701516060880151608089015160a08a01516001546001600160a01b03908116600081815260048a52878120600254909316808252888220838352600c8c528983208284528a84209484526005909c528983209183529890912060038e90559390935592909155919055935555555b6001546001600160a01b0390811660008181526004602090815260408083205460025490951680845281842054858552600c8452828520548286528386205496865260058552838620549286529483902054600354845198895294880191909152868301949094526060860194909452608085019390935260a084019190915260c083015282151560e0830152517fe7d4328bcca588827789f132837dde7289420fb8512d5c0a706059194fe1dfd1918190036101000190a1505050565b6000610fd761121d611208610fa6565b600a54600954610e799163ffffffff6120a116565b479063ffffffff61205f16565b611232611fb9565b6000546001600160a01b03908116911614611282576040805162461bcd60e51b815260206004820181905260248201526000805160206122d3833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6112d4611fb9565b6000546001600160a01b03908116911614611324576040805162461bcd60e51b815260206004820181905260248201526000805160206122d3833981519152604482015290519081900360640190fd5b600054600160a01b900460ff161561133b57600080fd5b600354811161134957600080fd5b600e5460035460408051631760164960e31b81523060048201526024810192909252516000926001600160a01b03169163bb00b2489160448083019286929190829003018186803b15801561139d57600080fd5b505afa1580156113b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160409081528110156113da57600080fd5b81019080805160405193929190846401000000008211156113fa57600080fd5b90830190602082018581111561140f57600080fd5b825186602082028301116401000000008211171561142c57600080fd5b82525081516020918201928201910280838360005b83811015611459578181015183820152602001611441565b5050505091909101604052506020015193505050508181101561147c578061147e565b815b6003555050565b61148d611fb9565b6000546001600160a01b039081169116146114dd576040805162461bcd60e51b815260206004820181905260248201526000805160206122d3833981519152604482015290519081900360640190fd5b629896808111156114ed57600080fd5b600755565b600f546001600160a01b031681565b60035490565b6000546001600160a01b031690565b60065490565b600054600160a01b900460ff16151560011480156115ae5750600e5460408051632c84088960e11b815230600482015290516001600160a01b0390921691635908111291602480820192602092909190829003018186803b15801561158057600080fd5b505afa158015611594573d6000803e3d6000fd5b505050506040513d60208110156115aa57600080fd5b5051155b156115bb576115bb610feb565b336000908152600d60205260409020548111156115d757600080fd5b60105460408051639486909f60e01b815230600482015260248101849052905160009283928392839283926001600160a01b0390911691639486909f9160448082019260a092909190829003018186803b15801561163457600080fd5b505afa158015611648573d6000803e3d6000fd5b505050506040513d60a081101561165e57600080fd5b5080516020808301516040808501516060860151608090960151601054835163b9c7840b60e01b81523060048201529351969c50939a509098509496509394506000936001600160a01b039091169263b9c7840b92602480840193919291829003018186803b1580156116d057600080fd5b505afa1580156116e4573d6000803e3d6000fd5b505050506040513d60208110156116fa57600080fd5b50519050600061171483610e79898963ffffffff6120a116565b6001546001600160a01b03166000908152600c6020526040902054909150611742908863ffffffff61205f16565b6001546001600160a01b039081166000908152600c6020526040808220939093556002549091168152205461177d908763ffffffff61205f16565b6002546001600160a01b039081166000908152600c60209081526040808320949094556001549092168152600b90915220546117bf908663ffffffff61205f16565b6001546001600160a01b039081166000908152600b602052604080822093909355600254909116815220546117fa908563ffffffff61205f16565b6002546001600160a01b03166000908152600b6020908152604080832093909355338252600d90522054611834908963ffffffff61205f16565b336000908152600d6020526040902055600854611857908963ffffffff61205f16565b60085560095461186d908463ffffffff61205f16565b600955604051339082156108fc029083906000818181858888f1935050505015801561189d573d6000803e3d6000fd5b5060408051338152602081018390528082018a90526060810184905290517f11c75623de2058a663854f734fb8083a261970290f564abc9aa2ac01bfcbe81f9181900360800190a15050505050505050565b60095490565b6001600160a01b0381166000908152600c602090815260408083205460059092528220546119289163ffffffff6120a116565b92915050565b6001600160a01b038116600090815260046020908152604080832054600b90925282205461192891670de0b6b3a7640000916109b39163ffffffff611fbd16565b6001600160a01b03166000908152600d602052604090205490565b6001600160a01b03166000908152600c602052604090205490565b600a5490565b6119b3611fb9565b6000546001600160a01b03908116911614611a03576040805162461bcd60e51b815260206004820181905260248201526000805160206122d3833981519152604482015290519081900360640190fd5b6002546001600160a01b03161580611a2457506001546001600160a01b0316155b611a2d57600080fd5b600280546001600160a01b03199081166001600160a01b03948516179182905560018054909116928416929092179182905590821660009081526004602052604080822092909316815291909120662386f26fc10000908190559055565b6001600160a01b031660009081526005602052604090205490565b611aae611fb9565b6000546001600160a01b03908116911614611afe576040805162461bcd60e51b815260206004820181905260248201526000805160206122d3833981519152604482015290519081900360640190fd5b8015611b0d57611b0d816112cc565b5060008054911515600160a01b0260ff60a01b19909216919091179055565b600054600160a01b900460ff1615156001148015611bbe5750600e5460408051632c84088960e11b815230600482015290516001600160a01b0390921691635908111291602480820192602092909190829003018186803b158015611b9057600080fd5b505afa158015611ba4573d6000803e3d6000fd5b505050506040513d6020811015611bba57600080fd5b5051155b15611bcb57611bcb610feb565b6000611bd56111f8565b60105460408051630bdc478960e01b81523060048201526024810184905290519293506000928392839283926001600160a01b0390921691630bdc478991604480820192608092909190829003018186803b158015611c3357600080fd5b505afa158015611c47573d6000803e3d6000fd5b505050506040513d6080811015611c5d57600080fd5b508051602080830151604080850151606090950151601054825163b9c7840b60e01b81523060048201529251959a509298509496509394506000936001600160a01b039091169263b9c7840b92602480840193919291829003018186803b158015611cc757600080fd5b505afa158015611cdb573d6000803e3d6000fd5b505050506040513d6020811015611cf157600080fd5b505190506000611d13826109b389670de0b6b3a764000063ffffffff611fbd16565b6001546001600160a01b03166000908152600c6020526040902054909150611d41908763ffffffff6120a116565b6001546001600160a01b039081166000908152600c60205260408082209390935560025490911681522054611d7c908663ffffffff6120a116565b6002546001600160a01b039081166000908152600c60209081526040808320949094556001549092168152600b9091522054611dbe908563ffffffff6120a116565b6001546001600160a01b039081166000908152600b60205260408082209390935560025490911681522054611df9908463ffffffff6120a116565b6002546001600160a01b039081166000908152600b6020908152604080832094909455918b168152600d9091522054611e38908263ffffffff6120a116565b6001600160a01b0389166000908152600d6020526040902055600854611e64908263ffffffff6120a116565b600855604080516001600160a01b038a168152602081018990528082018390526060810184905290517fe1d1934c742278e3794231612340f57d39d41877f0106ef92422f2f86ce07bf49181900360800190a15050505050505050565b611ec9611fb9565b6000546001600160a01b03908116911614611f19576040805162461bcd60e51b815260206004820181905260248201526000805160206122d3833981519152604482015290519081900360640190fd5b6001600160a01b038116611f5e5760405162461bcd60e51b815260040180806020018281038252602681526020018061228c6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b600082611fcc57506000611928565b82820282848281611fd957fe5b04146120165760405162461bcd60e51b81526004018080602001828103825260218152602001806122b26021913960400191505060405180910390fd5b9392505050565b600061201683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612171565b600061201683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612213565b600082820183811015612016576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6011546001600160a01b03166108fc61211b83600263ffffffff61201d16565b6040518115909202916000818181858888f19350505050158015612143573d6000803e3d6000fd5b5061216561215882600263ffffffff61201d16565b829063ffffffff61205f16565b60098054909101905550565b600081836121fd5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156121c25781810151838201526020016121aa565b50505050905090810190601f1680156121ef5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161220957fe5b0495945050505050565b600081848411156122655760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156121c25781810151838201526020016121aa565b505050900390565b6040518060c00160405280600690602082028036833750919291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220e1ee60b7cc84d00c32604daa19942be8cc3388749240d646c29485047320eda064736f6c63430006060033
Deployed Bytecode Sourcemap
388:12492:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;9850:64:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9850:64:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;12611:110;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12611:110:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12611:110:0;;:::i;:::-;;10783:93;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10783:93:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10783:93:0;-1:-1:-1;;;;;10783:93:0;;:::i;:::-;;;;;;;;;;;;;;;;2803:39;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2803:39:0;;;:::i;:::-;;;;-1:-1:-1;;;;;2803:39:0;;;;;;;;;;;;;;2846:38;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2846:38:0;;;:::i;10469:69::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10469:69:0;;;:::i;2700:48::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2700:48:0;;;:::i;10541:83::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10541:83:0;;;:::i;4817:791::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4817:791:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;4817:791:0;;;;;;;;;;:::i;9995:68::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9995:68:0;;;:::i;9917:75::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9917:75:0;;;:::i;10221:85::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10221:85:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10221:85:0;-1:-1:-1;;;;;10221:85:0;;:::i;3579:712::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3579:712:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;3579:712:0;;;;;;;;;;:::i;11078:120::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11078:120:0;;;:::i;10066:68::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10066:68:0;;;:::i;8609:790::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8609:790:0;;;:::i;11466:151::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11466:151:0;;;:::i;922:145:3:-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;922:145:3;;;:::i;12283:292:0:-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12283:292:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12283:292:0;;:::i;12765:112::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12765:112:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12765:112:0;;:::i;2752:47::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2752:47:0;;;:::i;10137:81::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10137:81:0;;;:::i;717:77:3:-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;717:77:3;;;:::i;10399:67:0:-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10399:67:0;;;:::i;7367:948::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7367:948:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;7367:948:0;;:::i;10627:69::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10627:69:0;;;:::i;11202:122::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11202:122:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;11202:122:0;-1:-1:-1;;;;;11202:122:0;;:::i;11327:136::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11327:136:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;11327:136:0;-1:-1:-1;;;;;11327:136:0;;:::i;10975:99::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10975:99:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10975:99:0;-1:-1:-1;;;;;10975:99:0;;:::i;10879:93::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10879:93:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10879:93:0;-1:-1:-1;;;;;10879:93:0;;:::i;10699:81::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10699:81:0;;;:::i;11852:273::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11852:273:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;11852:273:0;;;;;;;;;;:::i;10309:87::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10309:87:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10309:87:0;-1:-1:-1;;;;;10309:87:0;;:::i;12128:152::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12128:152:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12128:152:0;;;;;;;;;:::i;6093:849::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;6093:849:0;-1:-1:-1;;;;;6093:849:0;;:::i;1073:240:3:-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1073:240:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1073:240:3;-1:-1:-1;;;;;1073:240:3;;:::i;9850:64:0:-;9891:4;9905:6;-1:-1:-1;;;9905:6:0;;;;;9850:64::o;12611:110::-;849:12:3;:10;:12::i;:::-;839:6;;-1:-1:-1;;;;;839:6:3;;;:22;;;831:67;;;;;-1:-1:-1;;;831:67:3;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;831:67:3;;;;;;;;;;;;;;;12689:5:0::1;12679:6;:15;;12671:24;;12:1:-1;9::::0;2:12:::1;12671:24:0;12701:6;:15:::0;12611:110::o;10783:93::-;-1:-1:-1;;;;;10857:16:0;10840:7;10857:16;;;:9;:16;;;;;;;10783:93::o;2803:39::-;;;-1:-1:-1;;;;;2803:39:0;;:::o;2846:38::-;;;-1:-1:-1;;;;;2846:38:0;;:::o;10469:69::-;10528:7;;10469:69;:::o;2700:48::-;;;-1:-1:-1;;;;;2700:48:0;;:::o;10541:83::-;10607:14;;10541:83;:::o;4817:791::-;1824:6;;-1:-1:-1;;;1824:6:0;;;;:14;;1834:4;1824:14;1816:23;;12:1:-1;9;2:12;1816:23:0;1848:6;;-1:-1:-1;;;1848:6:0;;;;:14;;1858:4;1848:14;:62;;;;-1:-1:-1;1867:15:0;;:43;;;-1:-1:-1;;;1867:43:0;;1904:4;1867:43;;;;;;-1:-1:-1;;;;;1867:15:0;;;;:28;;:43;;;;;;;;;;;;;;;:15;:43;;;2:2:-1;;;;27:1;24;17:12;2:2;1867:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1867:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1867:43:0;1866:44;1848:62;1845:95;;;1920:13;:11;:13::i;:::-;4972:29:::1;::::0;;-1:-1:-1;;;4972:29:0;;4995:4:::1;4972:29;::::0;::::1;::::0;;;4937:5;;4916:11:::1;::::0;-1:-1:-1;;;;;4972:14:0;::::1;::::0;::::1;::::0;:29;;;;;::::1;::::0;;;;;;;;:14;:29;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;4972:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;4972:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;4972:29:0;;-1:-1:-1;5015:16:0;5007:25:::1;;12:1:-1;9::::0;2:12:::1;5007:25:0;5055:4;::::0;-1:-1:-1;;;;;5046:13:0;;::::1;5055:4:::0;::::1;5046:13;::::0;:30:::1;;-1:-1:-1::0;5072:4:0::1;::::0;-1:-1:-1;;;;;5063:13:0;;::::1;5072:4:::0;::::1;5063:13;5046:30;5038:39;;12:1:-1;9::::0;2:12:::1;5038:39:0;-1:-1:-1::0;;;;;5118:12:0;::::1;5083:15;5118:12:::0;;;:5:::1;:12;::::0;;;;;5101:42:::1;::::0;5136:6:::1;::::0;5101:30:::1;::::0;:12;;:30:::1;:16;:30;:::i;:::-;:34:::0;:42:::1;:34;:42;:::i;:::-;5167:11;::::0;:53:::1;::::0;;-1:-1:-1;;;5167:53:0;;5198:4:::1;5167:53;::::0;::::1;::::0;-1:-1:-1;;;;;5167:53:0;;::::1;::::0;;;;;;;;;;;;5083:60;;-1:-1:-1;5149:15:0::1;::::0;5167:11;;;::::1;::::0;:22:::1;::::0;:53;;;;;::::1;::::0;;;;;;;;:11;:53;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;5167:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;5167:53:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;5167:53:0;;-1:-1:-1;5226:12:0::1;5241:44;5279:5;5241:33;5253:20;:7:::0;5167:53;5253:20:::1;:11;:20;:::i;:::-;5241:7;::::0;;:33:::1;:11;:33;:::i;:44::-;5226:59:::0;-1:-1:-1;5291:14:0::1;5308:30;5226:59:::0;5308:20:::1;:7:::0;5320;5308:20:::1;:11;:20;:::i;:::-;:24:::0;:30:::1;:24;:30;:::i;:::-;-1:-1:-1::0;;;;;5360:13:0;::::1;;::::0;;;:6:::1;:13;::::0;;;;;5291:47;;-1:-1:-1;5360:26:0::1;::::0;5378:7;5360:26:::1;:17;:26;:::i;:::-;-1:-1:-1::0;;;;;5344:13:0;::::1;;::::0;;;:6:::1;:13;::::0;;;;:42;5395:12;;5392:59:::1;;5425:13;::::0;:26:::1;::::0;5443:7;5425:26:::1;:17;:26;:::i;:::-;5409:13;:42:::0;5392:59:::1;5457:13;5465:4;5457:7;:13::i;:::-;5476:4;-1:-1:-1::0;;;;;5476:9:0::1;;5486:12;5476:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;5476:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;;5505:24:0::1;::::0;-1:-1:-1;;;;;5505:16:0;::::1;::::0;-1:-1:-1;5505:24:0;::::1;;;::::0;-1:-1:-1;5522:6:0;;5505:24:::1;::::0;;;5522:6;5505:16;:24;::::1;;;;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;5541:62:0::1;::::0;;-1:-1:-1;;;;;5541:62:0;;::::1;::::0;;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;1945:1;;;;;;4817:791:::0;;:::o;9995:68::-;10056:4;;-1:-1:-1;;;;;10056:4:0;9995:68;:::o;9917:75::-;2227:1;9917:75;:::o;10221:85::-;-1:-1:-1;;;;;10291:12:0;10274:7;10291:12;;;:5;:12;;;;;;;10221:85::o;3579:712::-;1824:6;;-1:-1:-1;;;1824:6:0;;;;:14;;1834:4;1824:14;1816:23;;12:1:-1;9;2:12;1816:23:0;1848:6;;-1:-1:-1;;;1848:6:0;;;;:14;;1858:4;1848:14;:62;;;;-1:-1:-1;1867:15:0;;:43;;;-1:-1:-1;;;1867:43:0;;1904:4;1867:43;;;;;;-1:-1:-1;;;;;1867:15:0;;;;:28;;:43;;;;;;;;;;;;;;;:15;:43;;;2:2:-1;;;;27:1;24;17:12;2:2;1867:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1867:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1867:43:0;1866:44;1848:62;1845:95;;;1920:13;:11;:13::i;:::-;3669::::1;3685:18;:16;:18::i;:::-;3669:34;;3725:1;3717:5;:9;3709:18;;12:1:-1;9::::0;2:12:::1;3709:18:0;3750:4;::::0;-1:-1:-1;;;;;3741:13:0;;::::1;3750:4:::0;::::1;3741:13;::::0;:30:::1;;-1:-1:-1::0;3767:4:0::1;::::0;-1:-1:-1;;;;;3758:13:0;;::::1;3767:4:::0;::::1;3758:13;3741:30;3733:39;;12:1:-1;9::::0;2:12:::1;3733:39:0;3778:11;3799:5;3778:27;;3811:12;3826:28;3848:5;3826:17;3836:6;;3826:5;:9;;:17;;;;:::i;:28::-;3811:43:::0;-1:-1:-1;3860:14:0::1;3877:15;:5:::0;3811:43;3877:15:::1;:9;:15;:::i;:::-;3914:11;::::0;:50:::1;::::0;;-1:-1:-1;;;3914:50:0;;3943:4:::1;3914:50;::::0;::::1;::::0;-1:-1:-1;;;;;3914:50:0;;::::1;::::0;;;;;;;;;;;;3860:32;;-1:-1:-1;3898:13:0::1;::::0;3914:11;;;::::1;::::0;:20:::1;::::0;:50;;;;;::::1;::::0;;;;;;;;:11;:50;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;3914:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;3914:50:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;3914:50:0;-1:-1:-1;;;;;4027:12:0;::::1;3970:20;4027:12:::0;;;:5:::1;3914:50;4027:12:::0;;;;;3914:50;;-1:-1:-1;3970:20:0;3993:47:::1;::::0;:29:::1;4015:6;3993:17;:6:::0;3914:50;3993:17:::1;:10;:17;:::i;:::-;:21:::0;:29:::1;:21;:29;:::i;:47::-;-1:-1:-1::0;;;;;4062:13:0;::::1;;::::0;;;:6:::1;:13;::::0;;;;;3970:70;;-1:-1:-1;4062:36:0::1;::::0;4092:5;;4062:25:::1;::::0;4080:6;4062:25:::1;:17;:25;:::i;:::-;:29:::0;:36:::1;:29;:36;:::i;:::-;-1:-1:-1::0;;;;;4046:13:0;::::1;;::::0;;;:6:::1;:13;::::0;;;;:52;4107:10;;4104:55:::1;;4135:13;::::0;:24:::1;::::0;4153:5;4135:24:::1;:17;:24;:::i;:::-;4119:13;:40:::0;4104:55:::1;4165:13;4173:4;4165:7;:13::i;:::-;4184:4;-1:-1:-1::0;;;;;4184:9:0::1;;4194:7;4203:12;4184:32;;;;;;;;;;;;;-1:-1:-1::0;;;;;4184:32:0::1;-1:-1:-1::0;;;;;4184:32:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;4184:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;;4228:58:0::1;::::0;;-1:-1:-1;;;;;4228:58:0;;::::1;::::0;;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;-1:-1:-1;4228:58:0;;;;;;;-1:-1:-1;4228:58:0::1;1945:1;;;;;;3579:712:::0;;:::o;11078:120::-;11186:4;;11124:7;;11146:46;;11171:20;;-1:-1:-1;;;;;11186:4:0;11171:14;:20::i;:::-;11161:4;;11146:20;;-1:-1:-1;;;;;11161:4:0;11146:14;:20::i;:46::-;11139:54;;11078:120;:::o;10066:68::-;10127:4;;-1:-1:-1;;;;;10127:4:0;10066:68;:::o;8609:790::-;8657:6;;-1:-1:-1;;;8657:6:0;;;;:14;;8667:4;8657:14;8649:23;;12:1:-1;9;2:12;8649:23:0;8686:28;;:::i;:::-;8766:15;;8813:13;;8766:61;;;-1:-1:-1;;;8766:61:0;;8806:4;8766:61;;;;;;;;;;;;8722:15;;;;-1:-1:-1;;;;;8766:15:0;;;;:31;;:61;;;;;:15;;:61;;;;;;;;:15;:61;;;2:2:-1;;;;27:1;24;17:12;2:2;8766:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8766:61:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15:3;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;8766:61:0;;;;;;;;;;-1:-1:-1;8766:61:0;-1:-1:-1;8766:61:0;-1:-1:-1;8847:4:0;8836:15;;;;8833:374;;;9047:13;;;9070;;;;9093;;;;;9116;;;;9139;;;;9162;;;;9081:1;8877:4;-1:-1:-1;;;;;8877:4:0;;;9058:1;8871:11;;;9150:1;8871:11;;;;;9104:1;8898:4;;;;8892:11;;;;;;8913:15;;;:9;:15;;;;;8938;;;;;;8963:12;;;9173:1;8963:12;;;;;;8985;;;;;;;9127:1;8861:339;;;;;;;;;;;;;;;;;;8833:374;9242:4;;-1:-1:-1;;;;;9242:4:0;;;9236:11;;;;:5;:11;;;;;;;;;9261:4;;;;;9255:11;;;;;;;9274:15;;;:9;:15;;;;;;9297;;;;;;;9320:12;;;:6;:12;;;;;;9340;;;;;;;;9360:13;;9217:177;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9242:4;9217:177;;;8609:790;;;:::o;11466:151::-;11514:7;11536:75;11562:48;11593:16;:14;:16::i;:::-;11574:13;;11562:7;;:26;;;:11;:26;:::i;:48::-;11536:21;;:75;:25;:75;:::i;922:145:3:-;849:12;:10;:12::i;:::-;839:6;;-1:-1:-1;;;;;839:6:3;;;:22;;;831:67;;;;;-1:-1:-1;;;831:67:3;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;831:67:3;;;;;;;;;;;;;;;1028:1:::1;1012:6:::0;;991:40:::1;::::0;-1:-1:-1;;;;;1012:6:3;;::::1;::::0;991:40:::1;::::0;1028:1;;991:40:::1;1058:1;1041:19:::0;;-1:-1:-1;;;;;;1041:19:3::1;::::0;;922:145::o;12283:292:0:-;849:12:3;:10;:12::i;:::-;839:6;;-1:-1:-1;;;;;839:6:3;;;:22;;;831:67;;;;;-1:-1:-1;;;831:67:3;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;831:67:3;;;;;;;;;;;;;;;12357:6:0::1;::::0;-1:-1:-1;;;12357:6:0;::::1;;;:15;12349:24;;12:1:-1;9::::0;2:12:::1;12349:24:0;12397:13;;12387:7;:23;12379:32;;12:1:-1;9::::0;2:12:::1;12379:32:0;12444:15;::::0;12488:13:::1;::::0;12444:58:::1;::::0;;-1:-1:-1;;;12444:58:0;;12481:4:::1;12444:58;::::0;::::1;::::0;;;;;;;;;12421:19:::1;::::0;-1:-1:-1;;;;;12444:15:0::1;::::0;:28:::1;::::0;:58;;;;;12421:19;;12444:58;;;;;;;:15;:58;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;12444:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;12444:58:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;12444:58:0;80:15:-1::0;;::::1;-1:-1:::0;;76:31:::1;65:43:::0;::::1;120:4;113:20:::0;;;7:11;::::1;4:2;;;31:1;28::::0;21:12:::1;4:2;12444:58:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41::::0;34:12:::1;8:2;62:21:::0;;::::1;::::0;123:4:::1;114:14:::0;::::1;138:31:::0;;::::1;135:2;;;182:1;179::::0;172:12:::1;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359::::0;352:12:::1;230:2;373:25:::0;;-1:-1;12444:58:0;;421:4:-1::1;412:14:::0;;::::1;::::0;12444:58:0;::::1;::::0;::::1;::::0;412:14:-1;12444:58:0;23:1:-1::1;8:100;33:3;30:1;27:10;8:100;;;90:11:::0;;::::1;84:18:::0;71:11;;::::1;64:39:::0;52:2:::1;45:10;8:100;;;-1:-1:::0;;;;12444:58:0;;;::::1;;::::0;-1:-1:-1;12444:58:0::1;;::::0;;-1:-1:-1;;;;12524:22:0;;::::1;;:46;;12559:11;12524:46;;;12549:7;12524:46;12508:13;:62:::0;-1:-1:-1;;12283:292:0:o;12765:112::-;849:12:3;:10;:12::i;:::-;839:6;;-1:-1:-1;;;;;839:6:3;;;:22;;;831:67;;;;;-1:-1:-1;;;831:67:3;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;831:67:3;;;;;;;;;;;;;;;12844:5:0::1;12834:6;:15;;12826:24;;12:1:-1;9::::0;2:12:::1;12826:24:0;12856:7;:16:::0;12765:112::o;2752:47::-;;;-1:-1:-1;;;;;2752:47:0;;:::o;10137:81::-;10202:13;;10137:81;:::o;717:77:3:-;755:7;781:6;-1:-1:-1;;;;;781:6:3;717:77;:::o;10399:67:0:-;10457:6;;10399:67;:::o;7367:948::-;1990:6;;-1:-1:-1;;;1990:6:0;;;;:14;;2000:4;1990:14;:62;;;;-1:-1:-1;2009:15:0;;:43;;;-1:-1:-1;;;2009:43:0;;2046:4;2009:43;;;;;;-1:-1:-1;;;;;2009:15:0;;;;:28;;:43;;;;;;;;;;;;;;;:15;:43;;;2:2:-1;;;;27:1;24;17:12;2:2;2009:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2009:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2009:43:0;2008:44;1990:62;1987:95;;;2062:13;:11;:13::i;:::-;7483:10:::1;7472:22;::::0;;;:10:::1;:22;::::0;;;;;7462:32;::::1;;7454:41;;12:1:-1;9::::0;2:12:::1;7454:41:0;7638:11;::::0;:53:::1;::::0;;-1:-1:-1;;;7638:53:0;;7677:4:::1;7638:53;::::0;::::1;::::0;;;;;;;;;7509:18:::1;::::0;;;;;;;;;-1:-1:-1;;;;;7638:11:0;;::::1;::::0;:30:::1;::::0;:53;;;;;::::1;::::0;;;;;;;;;:11;:53;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;7638:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;7638:53:0;;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29::::0;22:12:::1;4:2;-1:-1:::0;7638:53:0;;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;;;7718:11:::1;::::0;:40;;-1:-1:-1;;;7718:40:0;;7752:4:::1;7718:40;::::0;::::1;::::0;;;7638:53;;-1:-1:-1;7638:53:0;;-1:-1:-1;7638:53:0;;-1:-1:-1;7638:53:0;;-1:-1:-1;7638:53:0;;-1:-1:-1;7697:18:0::1;::::0;-1:-1:-1;;;;;7718:11:0;;::::1;::::0;:25:::1;::::0;:40;;;;;7638:53;;7718:40;;;;;;:11;:40;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;7718:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;7718:40:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;7718:40:0;;-1:-1:-1;7764:20:0::1;7787:40;7818:8:::0;7787:26:::1;:10:::0;7802;7787:26:::1;:14;:26;:::i;:40::-;7861:4;::::0;-1:-1:-1;;;;;7861:4:0::1;7851:15;::::0;;;:9:::1;:15;::::0;;;;;7764:63;;-1:-1:-1;7851:31:0::1;::::0;7871:10;7851:31:::1;:19;:31;:::i;:::-;7843:4;::::0;-1:-1:-1;;;;;7843:4:0;;::::1;7833:15;::::0;;;:9:::1;:15;::::0;;;;;:49;;;;7916:4:::1;::::0;;;::::1;7906:15:::0;;;;:31:::1;::::0;7926:10;7906:31:::1;:19;:31;:::i;:::-;7898:4;::::0;-1:-1:-1;;;;;7898:4:0;;::::1;7888:15;::::0;;;:9:::1;:15;::::0;;;;;;;:49;;;;7898:4;7971;;;::::1;7961:15:::0;;:9:::1;:15:::0;;;;;:31:::1;::::0;7981:10;7961:31:::1;:19;:31;:::i;:::-;7953:4;::::0;-1:-1:-1;;;;;7953:4:0;;::::1;7943:15;::::0;;;:9:::1;:15;::::0;;;;;:49;;;;8026:4:::1;::::0;;;::::1;8016:15:::0;;;;:31:::1;::::0;8036:10;8016:31:::1;:19;:31;:::i;:::-;8008:4;::::0;-1:-1:-1;;;;;8008:4:0::1;7998:15;::::0;;;:9:::1;:15;::::0;;;;;;;:49;;;;8089:10:::1;8078:22:::0;;:10:::1;:22:::0;;;;:34:::1;::::0;8105:6;8078:34:::1;:26;:34;:::i;:::-;8064:10;8053:22;::::0;;;:10:::1;:22;::::0;;;;:59;8135:14:::1;::::0;:26:::1;::::0;8154:6;8135:26:::1;:18;:26;:::i;:::-;8118:14;:43:::0;8177:7:::1;::::0;:21:::1;::::0;8189:8;8177:21:::1;:11;:21;:::i;:::-;8167:7;:31:::0;8204:33:::1;::::0;:10:::1;::::0;:33;::::1;;;::::0;8224:12;;8204:33:::1;::::0;;;8224:12;8204:10;:33;::::1;;;;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;8249:61:0::1;::::0;;8265:10:::1;8249:61:::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;2087:1;;;;;;;7367:948:::0;:::o;10627:69::-;10686:7;;10627:69;:::o;11202:122::-;-1:-1:-1;;;;;11301:16:0;;11261:7;11301:16;;;:9;:16;;;;;;;;;11283:6;:13;;;;;;:35;;;:17;:35;:::i;:::-;11276:43;11202:122;-1:-1:-1;;11202:122:0:o;11327:136::-;-1:-1:-1;;;;;11432:12:0;;11389:7;11432:12;;;:5;:12;;;;;;;;;11411:9;:16;;;;;;:46;;11450:6;;11411:34;;;:20;:34;:::i;10975:99::-;-1:-1:-1;;;;;11052:19:0;11035:7;11052:19;;;:10;:19;;;;;;;10975:99::o;10879:93::-;-1:-1:-1;;;;;10953:16:0;10936:7;10953:16;;;:9;:16;;;;;;;10879:93::o;10699:81::-;10764:13;;10699:81;:::o;11852:273::-;849:12:3;:10;:12::i;:::-;839:6;;-1:-1:-1;;;;;839:6:3;;;:22;;;831:67;;;;;-1:-1:-1;;;831:67:3;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;831:67:3;;;;;;;;;;;;;;;11946:4:0::1;::::0;-1:-1:-1;;;;;11946:4:0::1;:18:::0;;:40:::1;;-1:-1:-1::0;11968:4:0::1;::::0;-1:-1:-1;;;;;11968:4:0::1;:18:::0;11946:40:::1;11938:49;;12:1:-1;9::::0;2:12:::1;11938:49:0;12000:4;11993:41:::0;;-1:-1:-1;;;;;;11993:41:0;;::::1;-1:-1:-1::0;;;;;11993:41:0;;::::1;;::::0;;;;-1:-1:-1;11993:41:0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;;12082:4;;::::1;-1:-1:-1::0;12076:11:0;;;:5:::1;:11;::::0;;;;;12095:4;;;::::1;12089:11:::0;;;;;;12105:6:::1;12075:45:::0;;;;;;11852:273::o;10309:87::-;-1:-1:-1;;;;;10380:13:0;10363:7;10380:13;;;:6;:13;;;;;;;10309:87::o;12128:152::-;849:12:3;:10;:12::i;:::-;839:6;;-1:-1:-1;;;;;839:6:3;;;:22;;;831:67;;;;;-1:-1:-1;;;831:67:3;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;831:67:3;;;;;;;;;;;;;;;12204:12:0;;12201:55:::1;;12226:23;12241:7;12226:14;:23::i;:::-;-1:-1:-1::0;12261:6:0::1;:14:::0;;;::::1;;-1:-1:-1::0;;;12261:14:0::1;-1:-1:-1::0;;;;12261:14:0;;::::1;::::0;;;::::1;::::0;;12128:152::o;6093:849::-;1990:6;;-1:-1:-1;;;1990:6:0;;;;:14;;2000:4;1990:14;:62;;;;-1:-1:-1;2009:15:0;;:43;;;-1:-1:-1;;;2009:43:0;;2046:4;2009:43;;;;;;-1:-1:-1;;;;;2009:15:0;;;;:28;;:43;;;;;;;;;;;;;;;:15;:43;;;2:2:-1;;;;27:1;24;17:12;2:2;2009:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2009:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2009:43:0;2008:44;1990:62;1987:95;;;2062:13;:11;:13::i;:::-;6188::::1;6204:18;:16;:18::i;:::-;6341:11;::::0;:49:::1;::::0;;-1:-1:-1;;;6341:49:0;;6377:4:::1;6341:49;::::0;::::1;::::0;;;;;;;;;6188:34;;-1:-1:-1;6236:18:0::1;::::0;;;;;;;-1:-1:-1;;;;;6341:11:0;;::::1;::::0;:27:::1;::::0;:49;;;;;::::1;::::0;;;;;;;;;:11;:49;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;6341:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;6341:49:0;;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29::::0;22:12:::1;4:2;-1:-1:::0;6341:49:0;;::::1;::::0;;::::1;::::0;;;;;;;;;;;6417:11:::1;::::0;:40;;-1:-1:-1;;;6417:40:0;;6451:4:::1;6417:40;::::0;::::1;::::0;;;6341:49;;-1:-1:-1;6341:49:0;;-1:-1:-1;6341:49:0;;-1:-1:-1;6341:49:0;;-1:-1:-1;6396:18:0::1;::::0;-1:-1:-1;;;;;6417:11:0;;::::1;::::0;:25:::1;::::0;:40;;;;;6341:49;;6417:40;;;;;;:11;:40;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;6417:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;6417:40:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;6417:40:0;;-1:-1:-1;6463:23:0::1;6489:33;6417:40:::0;6489:17:::1;:5:::0;6499:6:::1;6489:17;:9;:17;:::i;:33::-;6556:4;::::0;-1:-1:-1;;;;;6556:4:0::1;6546:15;::::0;;;:9:::1;:15;::::0;;;;;6463:59;;-1:-1:-1;6546:31:0::1;::::0;6566:10;6546:31:::1;:19;:31;:::i;:::-;6538:4;::::0;-1:-1:-1;;;;;6538:4:0;;::::1;6528:15;::::0;;;:9:::1;:15;::::0;;;;;:49;;;;6611:4:::1;::::0;;;::::1;6601:15:::0;;;;:31:::1;::::0;6621:10;6601:31:::1;:19;:31;:::i;:::-;6593:4;::::0;-1:-1:-1;;;;;6593:4:0;;::::1;6583:15;::::0;;;:9:::1;:15;::::0;;;;;;;:49;;;;6593:4;6666;;;::::1;6656:15:::0;;:9:::1;:15:::0;;;;;:31:::1;::::0;6676:10;6656:31:::1;:19;:31;:::i;:::-;6648:4;::::0;-1:-1:-1;;;;;6648:4:0;;::::1;6638:15;::::0;;;:9:::1;:15;::::0;;;;;:49;;;;6721:4:::1;::::0;;;::::1;6711:15:::0;;;;:31:::1;::::0;6731:10;6711:31:::1;:19;:31;:::i;:::-;6703:4;::::0;-1:-1:-1;;;;;6703:4:0;;::::1;6693:15;::::0;;;:9:::1;:15;::::0;;;;;;;:49;;;;6770:19;;::::1;::::0;;:10:::1;:19:::0;;;;;:40:::1;::::0;6794:15;6770:40:::1;:23;:40;:::i;:::-;-1:-1:-1::0;;;;;6748:19:0;::::1;;::::0;;;:10:::1;:19;::::0;;;;:62;6833:14:::1;::::0;:35:::1;::::0;6852:15;6833:35:::1;:18;:35;:::i;:::-;6816:14;:52:::0;6880:57:::1;::::0;;-1:-1:-1;;;;;6880:57:0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;2087:1;;;;;;;6093:849:::0;:::o;1073:240:3:-;849:12;:10;:12::i;:::-;839:6;;-1:-1:-1;;;;;839:6:3;;;:22;;;831:67;;;;;-1:-1:-1;;;831:67:3;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;831:67:3;;;;;;;;;;;;;;;-1:-1:-1;;;;;1161:22:3;::::1;1153:73;;;;-1:-1:-1::0;;;1153:73:3::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1262:6;::::0;;1241:38:::1;::::0;-1:-1:-1;;;;;1241:38:3;;::::1;::::0;1262:6;::::1;::::0;1241:38:::1;::::0;::::1;1289:6;:17:::0;;-1:-1:-1;;;;;;1289:17:3::1;-1:-1:-1::0;;;;;1289:17:3;;;::::1;::::0;;;::::1;::::0;;1073:240::o;57:104::-;144:10;57:104;:::o;2180:459:2:-;2238:7;2479:6;2475:45;;-1:-1:-1;2508:1:2;2501:8;;2475:45;2542:5;;;2546:1;2542;:5;:1;2565:5;;;;;:10;2557:56;;;;-1:-1:-1;;;2557:56:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2631:1;2180:459;-1:-1:-1;;;2180:459:2:o;3101:130::-;3159:7;3185:39;3189:1;3192;3185:39;;;;;;;;;;;;;;;;;:3;:39::i;1321:134::-;1379:7;1405:43;1409:1;1412;1405:43;;;;;;;;;;;;;;;;;:3;:43::i;874:176::-;932:7;963:5;;;986:6;;;;978:46;;;;;-1:-1:-1;;;978:46:2;;;;;;;;;;;;;;;;;;;;;;;;;;;9646:134:0;9694:15;;-1:-1:-1;;;;;9694:15:0;:39;9719:13;:6;9730:1;9719:13;:10;:13;:::i;:::-;9694:39;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;9750:25:0;9761:13;:6;9772:1;9761:13;:10;:13;:::i;:::-;9750:6;;:25;:10;:25;:::i;:::-;9739:7;:36;;;;;;;-1:-1:-1;9646:134:0:o;3713:272:2:-;3799:7;3833:12;3826:5;3818:28;;;;-1:-1:-1;;;3818:28:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;3818:28:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3856:9;3872:1;3868;:5;;;;;;;3713:272;-1:-1:-1;;;;;3713:272:2:o;1746:187::-;1832:7;1867:12;1859:6;;;;1851:29;;;;-1:-1:-1;;;1851:29:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1851:29:2;-1:-1:-1;;;1902:5:2;;;1746:187::o;388:12492:0:-;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;-1:-1;388:12492:0;;;-1:-1:-1;;388:12492:0:o
Swarm Source
ipfs://e1ee60b7cc84d00c32604daa19942be8cc3388749240d646c29485047320eda0
Loading...
Loading
Loading...
Loading
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.