diff --git a/package.json b/package.json index 52304f941..a80f05c94 100644 --- a/package.json +++ b/package.json @@ -120,7 +120,9 @@ "@domain/adjust-position": "./packages/domain/src/adjust-position.ts", "@domain/flashloans": "./packages/domain/src/flashloans.ts", "@domain/position": "./packages/domain/src/position.ts", - "@domain/risk-ratio": "./packages/domain/src/risk-ratio.ts" + "@domain/risk-ratio": "./packages/domain/src/risk-ratio.ts", + "@aum-oracle/typechain-types": "./packages/aum-oracle/typechain-types", + "@aum-oracle/scripts": "./packages/aum-oracle/scripts" }, "resolutions": { "hardhat/**/@ethereumjs/tx": "3.5.0" diff --git a/packages/aum-oracle/.env.example b/packages/aum-oracle/.env.example new file mode 100644 index 000000000..37f5abf53 --- /dev/null +++ b/packages/aum-oracle/.env.example @@ -0,0 +1,8 @@ +ETHERSCAN_API_KEY= +ALCHEMY_NODE= +ALCHEMY_NODE_GOERLI= +TENDERLY_USERNAME= +TENDERLY_PROJECT= +PRIVATE_KEY = +PLOTY_KEY= +PLOTY_USER= diff --git a/packages/aum-oracle/.eslintignore b/packages/aum-oracle/.eslintignore new file mode 100644 index 000000000..4638459bd --- /dev/null +++ b/packages/aum-oracle/.eslintignore @@ -0,0 +1,5 @@ +node_modules +.eslintrc.js +contracts/**/*.ts +typechain-types +cache \ No newline at end of file diff --git a/packages/aum-oracle/.eslintrc.js b/packages/aum-oracle/.eslintrc.js new file mode 100644 index 000000000..f3e8d7c86 --- /dev/null +++ b/packages/aum-oracle/.eslintrc.js @@ -0,0 +1,8 @@ +module.exports = { + extends: "../../.eslintrc.js", + parserOptions: { + project: "tsconfig.json", + tsconfigRootDir: __dirname, + sourceType: "module", + }, +}; diff --git a/packages/aum-oracle/.gitignore b/packages/aum-oracle/.gitignore new file mode 100644 index 000000000..b5a32154a --- /dev/null +++ b/packages/aum-oracle/.gitignore @@ -0,0 +1,24 @@ +node_modules +.env +coverage +coverage.json +typechain +typechain-types + +# Hardhat files +cache +artifacts + + +node_modules +.env +coverage +coverage.json +typechain +typechain-types + +# Hardhat files +cache +artifacts + +docs \ No newline at end of file diff --git a/packages/aum-oracle/.prettierrc b/packages/aum-oracle/.prettierrc new file mode 100644 index 000000000..17f0d26e5 --- /dev/null +++ b/packages/aum-oracle/.prettierrc @@ -0,0 +1,23 @@ +{ + "printWidth": 120, + "tabWidth": 2, + "semi": true, + "singleQuote": false, + "arrowParens": "avoid", + "proseWrap": "always", + "overrides": [ + { + "files": "*.sol", + "options": { + "printWidth": 120, + "tabWidth": 4, + "compiler": "0.8.18", + "useTabs": false, + "singleQuote": false, + "bracketSpacing": true, + "plugins": ["prettier-plugin-solidity"] + } + }, + { "files": "*.json", "options": { "tabWidth": 2 } } + ] +} diff --git a/packages/aum-oracle/.solhint.json b/packages/aum-oracle/.solhint.json new file mode 100644 index 000000000..4a8466583 --- /dev/null +++ b/packages/aum-oracle/.solhint.json @@ -0,0 +1,7 @@ +{ + "extends": "solhint:recommended", + "rules": { + "compiler-version": ["off"], + "func-visibility": ["warn", { "ignoreConstructors": true }] + } +} diff --git a/packages/aum-oracle/.solhintignore b/packages/aum-oracle/.solhintignore new file mode 100644 index 000000000..f859e22c9 --- /dev/null +++ b/packages/aum-oracle/.solhintignore @@ -0,0 +1,5 @@ +node_modules +contracts/ajna +contracts/chainlink +contracts/tokens +contracts/libs \ No newline at end of file diff --git a/packages/aum-oracle/README.md b/packages/aum-oracle/README.md new file mode 100644 index 000000000..776536fdf --- /dev/null +++ b/packages/aum-oracle/README.md @@ -0,0 +1,3 @@ +# @oasisdex/aum-oracle + +PoC of the AUM aggregated price oracle \ No newline at end of file diff --git a/packages/aum-oracle/bootstrap-env.ts b/packages/aum-oracle/bootstrap-env.ts new file mode 100644 index 000000000..9834fff68 --- /dev/null +++ b/packages/aum-oracle/bootstrap-env.ts @@ -0,0 +1,4 @@ +import * as dotenv from "dotenv"; +import * as path from "path"; + +dotenv.config({ path: path.join(__dirname, "../../.env") }); diff --git a/packages/aum-oracle/contracts/AggregatedPriceOracle.sol b/packages/aum-oracle/contracts/AggregatedPriceOracle.sol new file mode 100644 index 000000000..c51cfd8d9 --- /dev/null +++ b/packages/aum-oracle/contracts/AggregatedPriceOracle.sol @@ -0,0 +1,240 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later +pragma solidity ^0.8.15; + +import "./interfaces/IAggregatedPriceOracle.sol"; +import { Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; + + +/** + * @title AggregatedPriceOracle + * @notice Keeps track of aggregated prices for a period of time. Aggregated means the summatory of all daily prices + * for the given period of time. This can be used to calculate for example a daily fee over a period of time. + */ +contract AggregatedPriceOracle is Ownable, IAggregatedPriceOracle { + /// IMMUTABLES + address public immutable token; // Zero address indicates ETH + uint256 public immutable initialTimestamp; + + /// CONSTANTS + + // The grouping does not follow natural years or months, but rather a fixed number of days/weeks/months/years + // so we can optimize the aggregation of the prices + uint256 public constant SECONDS_IN_DAY = 86400; + uint256 public constant DAYS_IN_WEEK = 7; + uint256 public constant WEEKS_IN_MONTH = 4; + uint256 public constant DAYS_IN_MONTH = DAYS_IN_WEEK * WEEKS_IN_MONTH; + uint256 public constant MONTHS_IN_YEAR = 12; + uint256 public constant DAYS_IN_YEAR = DAYS_IN_MONTH * MONTHS_IN_YEAR; + + /// STATE VARIABLES + uint256 public nextDailyPriceIndex; // = 0 + int256[7] public dailyPrice; + + uint256 public nextWeeklyPriceIndex; // = 0; + int256[4] public weeklyPriceAggregated; + + uint256 public nextMonthlyPriceIndex; // = 0; + int256[12] public monthlyPriceAggregated; + + int256[] public yearlyPriceAggregated; + + /// CONSTRUCTOR + constructor(address token_, int256 initialPrice_) { + token = token_; + initialTimestamp = block.timestamp; + + _setDailyPrice(initialPrice_); + } + + /// STATE CHANGING FUNCTIONS + + /** + * @dev Implementation assumes price is set every day and only once. Edge cases are not + * covered as this is just a PoC to estimate gas costs. + * + * @dev There is no protection against setting the same price twice in a row. There is also no control + * on the timestamp where the price is set, meaning that if it's set twice in a row the contract + * assumes the latest price is for the next day + */ + function setDailyPrice(int256 price) external onlyOwner { + _setDailyPrice(price); + + // Weekly price is updated every 7 days + if (nextDailyPriceIndex == 0) { + _updateWeeklyPrice(); + } + } + + /// VIEW FUNCTIONS + + /** + @dev This function is not marked as view to temporarily get gas usage from it in the tests + */ + function getAggregatedPrice(uint256 fromTimestamp) external returns (int256) { + uint256 toTimestamp = block.timestamp; + + if (fromTimestamp > toTimestamp) { + revert StartTSAfterEndTS(fromTimestamp, toTimestamp); + } + if (fromTimestamp < initialTimestamp) { + revert StartTSBeforeInitialTS(fromTimestamp, initialTimestamp); + } + + uint256 fromDayIndex = (fromTimestamp - initialTimestamp) / SECONDS_IN_DAY; + uint256 toDayIndex = (toTimestamp - initialTimestamp) / SECONDS_IN_DAY; + + int256 yearlyAggregatedPrice = _getAggregatedYearlyPrice(fromDayIndex, toDayIndex); + int256 monthlyAggregatedPrice = _getAggregatedMonthlyPrice(fromDayIndex, toDayIndex); + int256 weeklyAggregatedPrice = _getAggregatedWeeklyPrice(fromDayIndex, toDayIndex); + int256 dailyAggregatedPrice = _getAggregatedDailyPrice(fromDayIndex, toDayIndex); + + return + yearlyAggregatedPrice + monthlyAggregatedPrice + weeklyAggregatedPrice + dailyAggregatedPrice; + } + + function getYearlyPriceAggregatedLength() external view returns (uint256) { + return yearlyPriceAggregated.length; + } + + /// INTERNALS + function _getAggregatedYearlyPrice( + uint256 fromDayIndex, + uint256 nowDayIndex + ) internal view returns (int256) { + // Using 1 years here because it doesn't matter if it's a leap year or not, + // just want the aggregation in blocks of 365 days + uint256 yearStartIndex = fromDayIndex / DAYS_IN_YEAR; + uint256 yearEndIndex = nowDayIndex / DAYS_IN_YEAR; + + if (yearStartIndex >= yearlyPriceAggregated.length) { + return 0; + } + + if (yearEndIndex >= yearlyPriceAggregated.length) { + yearEndIndex = yearlyPriceAggregated.length - 1; + } + + int256 aggregatedPrice = 0; + for (uint256 i = yearStartIndex; i <= yearEndIndex; i++) { + aggregatedPrice += yearlyPriceAggregated[i]; + } + return aggregatedPrice; + } + + function _getAggregatedMonthlyPrice( + uint256 fromDayIndex, + uint256 nowDayIndex + ) internal view returns (int256) { + uint256 monthStartIndex = fromDayIndex / DAYS_IN_MONTH; + uint256 monthNowIndex = nowDayIndex / DAYS_IN_MONTH; + + monthStartIndex = _calculateAdjustedIndex( + monthStartIndex, + monthNowIndex, + monthlyPriceAggregated.length, + MONTHS_IN_YEAR + ); + + int256 aggregatedPrice = 0; + for (uint256 i = monthStartIndex; i < nextMonthlyPriceIndex; i++) { + aggregatedPrice += monthlyPriceAggregated[i]; + } + return aggregatedPrice; + } + + function _getAggregatedWeeklyPrice( + uint256 fromDayIndex, + uint256 nowDayIndex + ) internal view returns (int256) { + uint256 weeklyStartIndex = fromDayIndex / DAYS_IN_WEEK; + uint256 weeklyNowIndex = nowDayIndex / DAYS_IN_WEEK; + + weeklyStartIndex = _calculateAdjustedIndex( + weeklyStartIndex, + weeklyNowIndex, + weeklyPriceAggregated.length, + WEEKS_IN_MONTH + ); + + int256 aggregatedPrice = 0; + for (uint256 i = weeklyStartIndex; i < nextWeeklyPriceIndex; i++) { + aggregatedPrice += weeklyPriceAggregated[i]; + } + return aggregatedPrice; + } + + function _getAggregatedDailyPrice( + uint256 fromDayIndex, + uint256 nowDayIndex + ) internal view returns (int256) { + fromDayIndex = _calculateAdjustedIndex( + fromDayIndex, + nowDayIndex, + dailyPrice.length, + DAYS_IN_WEEK + ); + + int256 aggregatedPrice = 0; + for (uint256 i = fromDayIndex; i < nextDailyPriceIndex; i++) { + aggregatedPrice += dailyPrice[i]; + } + return aggregatedPrice; + } + + function _calculateAdjustedIndex( + uint256 startIndex, + uint256 endIndex, + uint256 currentDataLength, + uint256 maxDataLength + ) internal pure returns (uint256) { + if (endIndex - startIndex + 1 > currentDataLength) { + return 0; + } else { + return startIndex % maxDataLength; + } + } + + function _setDailyPrice(int256 price) internal { + dailyPrice[nextDailyPriceIndex] = price; + nextDailyPriceIndex = (nextDailyPriceIndex + 1) % DAYS_IN_WEEK; + } + + function _updateWeeklyPrice() internal { + int256 sum = 0; + for (uint256 i = 0; i < dailyPrice.length; i++) { + sum += dailyPrice[i]; + } + + weeklyPriceAggregated[nextWeeklyPriceIndex] = sum; + nextWeeklyPriceIndex = (nextWeeklyPriceIndex + 1) % WEEKS_IN_MONTH; + + // Monthly price is updated every 4 weeks + if (nextWeeklyPriceIndex == 0) { + _updateMonthlyPrice(); + } + } + + function _updateMonthlyPrice() internal { + int256 sum = 0; + for (uint256 i = 0; i < weeklyPriceAggregated.length; i++) { + sum += weeklyPriceAggregated[i]; + } + + monthlyPriceAggregated[nextMonthlyPriceIndex] = sum; + nextMonthlyPriceIndex = (nextMonthlyPriceIndex + 1) % MONTHS_IN_YEAR; + + // Yearly price is updated every 12 months + if (nextMonthlyPriceIndex == 0) { + _updateYearlyPrice(); + } + } + + function _updateYearlyPrice() internal { + int256 sum = 0; + for (uint256 i = 0; i < monthlyPriceAggregated.length; i++) { + sum += monthlyPriceAggregated[i]; + } + + yearlyPriceAggregated.push(sum); + } +} diff --git a/packages/aum-oracle/contracts/interfaces/IAggregatedPriceOracle.sol b/packages/aum-oracle/contracts/interfaces/IAggregatedPriceOracle.sol new file mode 100644 index 000000000..315a0ecd6 --- /dev/null +++ b/packages/aum-oracle/contracts/interfaces/IAggregatedPriceOracle.sol @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later +pragma solidity ^0.8.15; + +/** + The aggregated price oracle allows ... + */ +interface IAggregatedPriceOracle { + // View + function token() external view returns (address); + + function initialTimestamp() external view returns (uint256); + + function getAggregatedPrice(uint256 fromTimestamp) external returns (int256); + + // State change + function setDailyPrice(int256 price) external; + + // Errors + error StartTSAfterEndTS(uint256 startDate, uint256 endDate); + error StartTSBeforeInitialTS(uint256 startDate, uint256 initialTimestamp); +} diff --git a/packages/aum-oracle/hardhat.config.ts b/packages/aum-oracle/hardhat.config.ts new file mode 100644 index 000000000..710dcb978 --- /dev/null +++ b/packages/aum-oracle/hardhat.config.ts @@ -0,0 +1,69 @@ +import "./bootstrap-env"; +import "tsconfig-paths/register"; +import "@nomicfoundation/hardhat-toolbox"; +import "hardhat-preprocessor"; +import "hardhat-docgen"; +import "hardhat-tracer"; + +import { HardhatUserConfig } from "hardhat/config"; + +const config: HardhatUserConfig = { + solidity: { + version: "0.8.18", + settings: { + metadata: { + bytecodeHash: "none", + }, + optimizer: { + enabled: true, + runs: 0, + }, + }, + }, + networks: { + mainnet: { + url: process.env.MAINNET_URL || "", + initialBaseFeePerGas: 1000000000, + gasPrice: 45000000000, // 30 gwei + // FIXME: uncomment when we have the env variable properly set up in gh actions + // accounts: [process.env.PRIV_KEY_MAINNET || ""], + }, + goerli: { + url: process.env.GOERLI_URL || "", + // FIXME: uncomment when we have the env variable properly set up in gh actions + // accounts: [process.env.PRIV_KEY_GOERLI || ""], + initialBaseFeePerGas: 1000000000, + }, + local: { + url: "http://127.0.0.1:8545", + timeout: 100000, + chainId: 2137, + }, + hardhat: { + forking: { + enabled: true, + url: process.env.MAINNET_URL || "https://eth-goerli.g.alchemy.com/v2/8pU3VS_K57r5DcgdmC9QEEhDcObR56Zx", + blockNumber: 17663832, + }, + chainId: 2137, + mining: { + auto: true, + interval: 2000, + }, + hardfork: "shanghai", + gas: "auto", + initialBaseFeePerGas: 1000000000, + allowUnlimitedContractSize: false, + }, + }, + etherscan: { + apiKey: process.env.ETHERSCAN_API_KEY, + }, + docgen: { + path: "./docs", + clear: true, + runOnCompile: false, + }, +}; + +export default config; diff --git a/packages/aum-oracle/package.json b/packages/aum-oracle/package.json new file mode 100644 index 000000000..02742d72f --- /dev/null +++ b/packages/aum-oracle/package.json @@ -0,0 +1,76 @@ +{ + "name": "@oasisdex/aum-oracle", + "version": "0.0.1", + "license": "Apache-2.0", + "private": true, + "files": [ + "tsconfig.json" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/OasisDEX/oasis-earn-sc.git" + }, + "scripts": { + "init:modules": "git submodule update --init", + "test": "npx hardhat test", + "compile": "npx hardhat compile", + "clean": "rm -rf artifacts cache typechain", + "lint:fix": "./node_modules/.bin/solhint --fix -f table contracts/**/*.sol && ./node_modules/.bin/eslint --fix test/**/*.ts scripts/**/*.ts", + "lint:contracts": "./node_modules/.bin/solhint -f table contracts/**/*.sol", + "lint:typescript": "./node_modules/.bin/eslint test/**/*.ts scripts/**/*.ts", + "lint": "yarn lint:contracts && yarn lint:typescript", + "format": "prettier --write contracts/**/*.sol test/**/*.ts scripts/**/*.ts", + "format:check": "prettier --check contracts/**/*.sol test/**/*.ts" + }, + "dependencies": { + "decimal.js": "^10.4.3", + "evm-bn": "^1.1.2", + "mathjs": "^9.4.4" + }, + "devDependencies": { + "@ethersproject/abi": "^5.4.7", + "@ethersproject/providers": "^5.4.7", + "@nomicfoundation/hardhat-chai-matchers": "^1.0.0", + "@nomicfoundation/hardhat-network-helpers": "^1.0.0", + "@nomicfoundation/hardhat-toolbox": "^2.0.0", + "@nomiclabs/hardhat-ethers": "^2.0.0", + "@nomiclabs/hardhat-etherscan": "^3.0.0", + "@oasisdex/oasis-actions": "^0.2.16", + "@openzeppelin/contracts": "^4.8.1", + "@tenderly/hardhat-tenderly": "^1.5.3", + "@typechain/ethers-v5": "^10.1.0", + "@typechain/hardhat": "^6.1.2", + "@types/chai": "^4.2.0", + "@types/mocha": "^9.1.0", + "@types/node": ">=12.0.0", + "bignumber.js": "9.0.1", + "chai": "^4.2.0", + "dotenv": "^16.0.3", + "eslint": "^7.32.0", + "eslint-config-prettier": "^8.3.0", + "eslint-config-standard": "^16.0.3", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^3.4.1", + "eslint-plugin-promise": "^5.1.1", + "ethers": "5.6.2", + "hardhat": "^2.13.0", + "hardhat-docgen": "^1.3.0", + "hardhat-gas-reporter": "^1.0.8", + "hardhat-preprocessor": "^0.1.5", + "hardhat-tenderly": "^1.0.1", + "hardhat-tracer": "^2.1.2", + "plotly": "^1.0.6", + "prettier-plugin-solidity": "^1.1.2", + "ramda": "^0.28.0", + "solhint": "^3.4.1", + "solhint-plugin-prettier": "^0.0.5", + "solidity-coverage": "^0.8.0", + "ts-node": ">=8.0.0", + "typechain": "^8.1.0", + "typescript": ">=4.5.0" + }, + "bugs": { + "url": "https://github.com/OasisDEX/oasis-earn-sc/issues" + } +} diff --git a/packages/aum-oracle/remappings.txt b/packages/aum-oracle/remappings.txt new file mode 100644 index 000000000..e69de29bb diff --git a/packages/aum-oracle/scripts/common/ajna-library-helpers.utils.ts b/packages/aum-oracle/scripts/common/ajna-library-helpers.utils.ts new file mode 100644 index 000000000..8cda6c0f3 --- /dev/null +++ b/packages/aum-oracle/scripts/common/ajna-library-helpers.utils.ts @@ -0,0 +1,128 @@ +import { strategies, views } from "@oasisdex/oasis-actions"; +import { BigNumber as BN } from "bignumber.js"; +import { BigNumber, Contract, ethers, providers, Signer } from "ethers"; + +import { AjnaProxyActions, ERC20Pool, IAccountImplementation, PoolInfoUtils, Token, WETH } from "../../typechain-types"; + +function createOpenOrDeposit(fnName: "open" | "depositBorrow") { + return async function ( + ajnaProxyActionsContract: AjnaProxyActions, + poolContract: ERC20Pool, + collateralToken: Token | WETH, + collateralPrecision: number, + quotePrecision: number, + borrowerProxy: IAccountImplementation, + borrower: Signer, + collateralAmount: BigNumber, + quoteAmount: BigNumber, + price: BigNumber, + poolInfoAddress: PoolInfoUtils, + provider: providers.Provider, + weth: WETH + ) { + const openStrategy = await strategies.ajna[fnName]( + { + position: await views.ajna.getPosition( + { + proxyAddress: borrowerProxy.address, + poolAddress: poolContract.address, + }, + { poolInfoAddress: poolInfoAddress.address, provider } + ), + collateralAmount: new BN(collateralAmount.toString()), + collateralTokenPrecision: collateralPrecision, + quoteAmount: new BN(quoteAmount.toString()), + quoteTokenPrecision: quotePrecision, + dpmProxyAddress: borrowerProxy.address, + poolAddress: poolContract.address, + // @ts-ignore + price: BigNumber.from(price.toString()), + }, + { + ajnaProxyActions: ajnaProxyActionsContract.address, + poolInfoAddress: poolInfoAddress.address, + provider, + WETH: weth.address, + } + ); + + await collateralToken + .connect(borrower) + .approve(borrowerProxy.address, ethers.utils.parseUnits(collateralAmount.toString(), collateralPrecision)); + const tx = await borrowerProxy.connect(borrower).execute(openStrategy.tx.to, openStrategy.tx.data, { + gasLimit: 3000000, + value: openStrategy.tx.value, + }); + await tx.wait(); + return tx; + }; +} +export async function withdrawCollateralAndRepayQuote( + ajnaProxyActionsContract: Contract, + poolContract: Contract, + borrowToken: Contract, + collateralPrecision: number, + quotePrecision: number, + borrowerProxy: Contract, + borrower: Signer, + collateralAmount: BigNumber, + debtAmount: BigNumber, + poolInfo: Contract, + provider: providers.Provider, + WETH: string +) { + const withdrawStrategy = await strategies.ajna.paybackWithdraw( + { + position: await views.ajna.getPosition( + { + proxyAddress: borrowerProxy.address, + poolAddress: poolContract.address, + }, + { poolInfoAddress: poolInfo.address, provider } + ), + collateralAmount: new BN(collateralAmount.toString()), + quoteAmount: new BN(debtAmount.toString()), + quoteTokenPrecision: quotePrecision, + collateralTokenPrecision: collateralPrecision, + dpmProxyAddress: borrowerProxy.address, + poolAddress: poolContract.address, + }, + { + ajnaProxyActions: ajnaProxyActionsContract.address, + poolInfoAddress: poolInfo.address, + provider, + WETH, + } + ); + + await borrowToken + .connect(borrower) + .approve(borrowerProxy.address, ethers.utils.parseUnits(debtAmount.toString(), quotePrecision)); + const tx = await borrowerProxy.connect(borrower).execute(withdrawStrategy.tx.to, withdrawStrategy.tx.data, { + gasLimit: 3000000, + value: withdrawStrategy.tx.value, + }); + + await tx.wait(); + + return tx; +} + +export const openPosition = createOpenOrDeposit("open"); + +export const depositCollateralAndDrawQuote = createOpenOrDeposit("depositBorrow"); + +export async function provideLiquidity( + usdc: Contract, + lender: Signer, + poolContract: Contract, + amount: BigNumber, + bucketIndex: BigNumber, + getExpiryTimestamp: () => Promise +) { + const amountWei = ethers.utils.parseUnits(amount.toString(), 18); + await usdc.connect(lender).approve(poolContract.address, amountWei); + const expiry = await getExpiryTimestamp(); + const tx = await poolContract.connect(lender).addQuoteToken(amountWei, bucketIndex, expiry, { gasLimit: 3000000 }); + await tx.wait(); +} diff --git a/packages/aum-oracle/scripts/common/config.ts b/packages/aum-oracle/scripts/common/config.ts new file mode 100644 index 000000000..0620d1d69 --- /dev/null +++ b/packages/aum-oracle/scripts/common/config.ts @@ -0,0 +1,70 @@ +import { Pool } from "./types"; + +export const ADDRESSES = { + goerli: { + AJNA_PROXY_ACTIONS: "0xdc1293C84aD636fdbe70e53F8C6dB67632704BD3", + ERC20_POOL_FACTORY: "0x01Da8a85A5B525D476cA2b51e44fe7087fFafaFF", + POOL_INFO_UTILS: "0xBB61407715cDf92b2784E9d2F1675c4B8505cBd8", + POSITION_MANAGER: "0x23E2EFF19bd50BfCF0364B7dCA01004D5cce41f9", + REWARD_MANAGER: "0x994dE190dd763Af3126FcC8EdC139275937d800b", + GUARD: "0x9319710C25cdaDDD1766F0bDE40F1A4034C17c7e", + SERVICE_REGISTRY: "0x5A5277B8c8a42e6d8Ab517483D7D59b4ca03dB7F", + }, + mainnet: { + AJNA_PROXY_ACTIONS: "0x9795D8Fb5DEBFA65d2Fc666c2587e8f1512b53cF", + ERC20_POOL_FACTORY: "0xe6F4d9711121e5304b30aC2Aae57E3b085ad3c4d", + POOL_INFO_UTILS: "0x154FFf344f426F99E328bacf70f4Eb632210ecdc", + POSITION_MANAGER: "0x0000000000000000000000000000000000000000", + REWARD_MANAGER: "0x0000000000000000000000000000000000000000", + GUARD: "0xCe91349d2A4577BBd0fC91Fe6019600e047f2847", + SERVICE_REGISTRY: "0x5e81a7515f956ab642eb698821a449fe8fe7498e", + }, +}; +//TOKENS +export const TOKENS = { + goerli: { + WETH: "0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6", + RETH: "0x62bc478ffc429161115a6e4090f819ce5c50a5d9", + WSTETH: "0x6320cD32aA674d2898A68ec82e869385Fc5f7E2f", + WBTC: "0x7ccF0411c7932B99FC3704d68575250F032e3bB7", + USDC: "0x6Fb5ef893d44F4f88026430d82d4ef269543cB23", + DAI: "0x11fE4B6AE13d2a6055C8D9cF65c55bac32B5d844", + CBETH: "0x0000000000000000000000000000000000000000", + AJNA: "0xaadebCF61AA7Da0573b524DE57c67aDa797D46c5", + TBTC: "0x679874fbe6d4e7cc54a59e315ff1eb266686a937", + }, + mainnet: { + WETH: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + RETH: "0xae78736cd615f374d3085123a210448e74fc6393", + WSTETH: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + WBTC: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + USDC: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + DAI: "0x6b175474e89094c44da98b954eedeac495271d0f", + CBETH: "0xbe9895146f7af43049ca1c1ae358b0541ea49704", + AJNA: "0x9a96ec9b57fb64fbc60b423d1f4da7691bd35079", + TBTC: "0x18084fbA666a33d37592fA2633fD49a74DD93a88", + }, +}; + +export const POOLS: Pool[] = [ + { pair: "WBTC-USDC", amount: 5000, price: 20000, deposit: false }, + { pair: "WBTC-DAI", amount: 5000, price: 20000, deposit: false }, + { pair: "USDC-WBTC", amount: 1, price: 0.000030769, deposit: false }, + { pair: "WETH-USDC", amount: 5000, price: 1500, deposit: false }, + { pair: "WETH-DAI", amount: 5000, price: 1500, deposit: false }, + { pair: "USDC-WETH", amount: 1, price: 0.0005, deposit: false }, + { pair: "RETH-DAI", amount: 5000, price: 1500, deposit: false }, + { pair: "RETH-USDC", amount: 5000, price: 1500, deposit: false }, + { pair: "RETH-WETH", amount: 1, price: 1.07, deposit: false }, + { pair: "WSTETH-DAI", amount: 5000, price: 1500, deposit: false }, + { pair: "WSTETH-USDC", amount: 5000, price: 1500, deposit: false }, + { pair: "WSTETH-WETH", amount: 1, price: 1.09, deposit: false }, + { pair: "CBETH-WETH", amount: 1, price: 1.09, deposit: false }, + { pair: "TBTC-WBTC", amount: 1, price: 1.01, deposit: false }, +]; + +export const CONFIG = { + initializeStakingRewards: false, + deployPools: true, + deployer: "0x8E78CC7089509B568a401f593F64B3074693d25E", +}; diff --git a/packages/aum-oracle/scripts/common/constants.utils.ts b/packages/aum-oracle/scripts/common/constants.utils.ts new file mode 100644 index 000000000..8dd863fe3 --- /dev/null +++ b/packages/aum-oracle/scripts/common/constants.utils.ts @@ -0,0 +1,36 @@ +import { ethers } from "ethers"; + +export const DAY = 1000 * 60 * 60 * 24; +export const WEEK = DAY * 7; +export const YEAR = DAY * 365; + +export const bn = { + six: { + ONE: ethers.utils.parseUnits("1", 6), + HUNDRED: ethers.utils.parseUnits("100", 6), + THOUSAND: ethers.utils.parseUnits("1000", 6), + TEN_THOUSAND: ethers.utils.parseUnits("10000", 6), + HUNDRED_THOUSAND: ethers.utils.parseUnits("100000", 6), + MILLION: ethers.utils.parseUnits("1000000", 6), + }, + eight: { + ONE: ethers.utils.parseUnits("1", 8), + TEN: ethers.utils.parseUnits("10", 8), + THOUSAND: ethers.utils.parseUnits("1000", 8), + TEN_THOUSAND: ethers.utils.parseUnits("10000", 8), + HUNDRED_THOUSAND: ethers.utils.parseUnits("100000", 8), + MILLION: ethers.utils.parseUnits("1000000", 8), + }, + eighteen: { + ONE: ethers.utils.parseEther("1"), + TEN: ethers.utils.parseEther("10"), + THOUSAND: ethers.utils.parseEther("1000"), + TEN_THOUSAND: ethers.utils.parseEther("10000"), + HUNDRED_THOUSAND: ethers.utils.parseEther("100000"), + MILLION: ethers.utils.parseEther("1000000"), + TEST_PRICE_1: ethers.utils.parseUnits("93863.654", 18), + TEST_PRICE_2: ethers.utils.parseUnits("99863.654", 18), + TEST_PRICE_3: ethers.utils.parseUnits("16821.273", 18), + TEST_PRICE_4: ethers.utils.parseUnits("46776653369145271678115", 0), + }, +}; diff --git a/packages/aum-oracle/scripts/common/deployment.utils.ts b/packages/aum-oracle/scripts/common/deployment.utils.ts new file mode 100644 index 000000000..719ca02c2 --- /dev/null +++ b/packages/aum-oracle/scripts/common/deployment.utils.ts @@ -0,0 +1,281 @@ +import { ADDRESSES } from "@deploy-configurations/addresses"; +import { Contract, Signer } from "ethers"; +import hre, { ethers } from "hardhat"; + +import { + AccountFactory, + AccountGuard, + AjnaProxyActions, + AjnaRewardClaimer, + BorrowerActions, + ERC20Pool, + ERC20PoolFactory, + ERC721PoolFactory, + KickerActions, + LenderActions, + LPActions, + PoolCommons, + PoolInfoUtils, + PositionManager, + PositionNFTSVG, + RewardsManager, + ServiceRegistry, + SettlerActions, + TakerActions, + Token, + WETH, +} from "../../typechain-types"; +import { HardhatUtils } from "./hardhat.utils"; + +const utils = new HardhatUtils(hre); + +export async function deployLibraries() { + const borrowerActionsInstance = await utils.deployContract("BorrowerActions", []); + const kickerActionsInstance = await utils.deployContract("KickerActions", []); + const actionsInstance = await utils.deployContract("LenderActions", []); + const settlerActionsInstance = await utils.deployContract("SettlerActions", []); + const takerActionsInstance = await utils.deployContract("TakerActions", []); + const lpActionsInstance = await utils.deployContract("LPActions", []); + const poolCommons = await utils.deployContract("PoolCommons", []); + const lenderActionsInstance = await utils.deployContract("LenderActions", []); + + const positionNFTSVGInstance = await utils.deployContract("PositionNFTSVG", []); + return { + poolCommons, + actionsInstance, + borrowerActionsInstance, + positionNFTSVGInstance, + kickerActionsInstance, + settlerActionsInstance, + takerActionsInstance, + lpActionsInstance, + lenderActionsInstance, + }; +} + +export async function deployTokens(receiver: string, mainnetTokens: boolean) { + const usdc = mainnetTokens + ? await utils.getContract("ERC20", ADDRESSES.mainnet.common.USDC) + : await utils.deployContract("Token", ["USDC", "USDC", receiver, 6]); + const wbtc = mainnetTokens + ? await utils.getContract("ERC20", ADDRESSES.mainnet.common.WBTC) + : await utils.deployContract("Token", ["WBTC", "WBTC", receiver, 8]); + const ajna = await utils.deployContract("Token", ["AJNA", "AJNA", receiver, 18]); + const weth = mainnetTokens + ? await utils.getContract("WETH", ADDRESSES.mainnet.common.WETH) + : await utils.deployContract("WETH", []); + console.log("usdc", usdc.address); + console.log("wbtc", wbtc.address); + console.log("ajna", ajna.address); + console.log("weth", weth.address); + console.log("mainnet tokens:", mainnetTokens); + return { usdc, wbtc, ajna, weth }; +} + +export async function deployRewardsContracts( + positionNFTSVGInstance: PositionNFTSVG, + erc20PoolFactory: ERC20PoolFactory, + erc721PoolFactory: ERC721PoolFactory, + ajna: Token +) { + const positionManagerContract = await utils.deployContract( + "PositionManager", + [erc20PoolFactory.address, erc721PoolFactory.address], + { + libraries: { + PositionNFTSVG: positionNFTSVGInstance.address, + }, + } + ); + + const rewardsManagerContract = await utils.deployContract("RewardsManager", [ + ajna.address, + positionManagerContract.address, + ]); + return { rewardsManagerContract, positionManagerContract }; +} + +async function deployServiceRegistry() { + const serviceRegistryContract = await utils.deployContract("ServiceRegistry", [0]); + + return { serviceRegistryContract }; +} + +export async function deployApa( + poolInstance: PoolCommons, + rewardsManager: RewardsManager, + positionManager: PositionManager, + dmpGuardContract: Contract, + guardDeployerSigner: Signer, + weth: WETH, + ajna: Token, + initializeStaking = true +) { + const { serviceRegistryContract } = await deployServiceRegistry(); + const hash = await serviceRegistryContract.getServiceNameHash("DPM_GUARD"); + await serviceRegistryContract.addNamedService(hash, dmpGuardContract.address); + const poolInfoContract = await utils.deployContract("PoolInfoUtils", [], { + libraries: { + PoolCommons: poolInstance.address, + }, + }); + + const arc = await utils.deployContract("AjnaRewardClaimer", [ + rewardsManager.address, + ajna.address, + serviceRegistryContract.address, + ]); + + const ajnaProxyActionsContract = await utils.deployContract("AjnaProxyActions", [ + poolInfoContract.address, + ajna.address, + weth.address, + dmpGuardContract.address, + ]); + + if (initializeStaking) { + await ajnaProxyActionsContract.initialize(positionManager.address, rewardsManager.address, arc.address); + await arc.initializeAjnaProxyActions(ajnaProxyActionsContract.address); + } + + await dmpGuardContract.connect(guardDeployerSigner).setWhitelist(ajnaProxyActionsContract.address, true); + + return { ajnaProxyActionsContract, poolInfo: poolInfoContract, poolInfoContract, ajnaRewardsClaimerContract: arc }; +} +export async function deployGuard() { + const dmpGuardContract = await utils.deployContract("AccountGuard", []); + const dmpFactory = await utils.deployContract("AccountFactory", [dmpGuardContract.address]); + + const [guardDeployerAddress] = await hre.ethers.getSigners(); + const guardDeployerSigner = await utils.impersonate(guardDeployerAddress.address); + + return { dmpGuardContract, guardDeployerSigner, dmpFactory }; +} + +export async function deployPoolFactory( + poolInstance: Contract, + borrowerActionsInstance: Contract, + kickerActionsInstance: KickerActions, + settlerActionsInstance: SettlerActions, + takerActionsInstance: TakerActions, + lpActionsInstance: LPActions, + lenderActionsInstance: LenderActions, + reward: string +) { + const erc20PoolFactory = await utils.deployContract("ERC20PoolFactory", [reward], { + libraries: { + BorrowerActions: borrowerActionsInstance.address, + KickerActions: kickerActionsInstance.address, + LPActions: lpActionsInstance.address, + LenderActions: lenderActionsInstance.address, + PoolCommons: poolInstance.address, + SettlerActions: settlerActionsInstance.address, + TakerActions: takerActionsInstance.address, + }, + }); + + const erc721PoolFactory = await utils.deployContract("ERC721PoolFactory", [reward], { + libraries: { + KickerActions: kickerActionsInstance.address, + LPActions: lpActionsInstance.address, + SettlerActions: settlerActionsInstance.address, + TakerActions: takerActionsInstance.address, + BorrowerActions: borrowerActionsInstance.address, + LenderActions: lenderActionsInstance.address, + PoolCommons: poolInstance.address, + }, + }); + + return { erc20PoolFactory, erc721PoolFactory }; +} +export async function deployPool( + erc20PoolFactory: ERC20PoolFactory, + collateral: string, + quote: string, + deployPools = true +): Promise { + const hash = await erc20PoolFactory.ERC20_NON_SUBSET_HASH(); + let poolAddress = await erc20PoolFactory.deployedPools(hash, collateral, quote); + if (poolAddress === hre.ethers.constants.AddressZero && deployPools) { + console.log("Deploying pool"); + const tx = await erc20PoolFactory.deployPool(collateral, quote, "25000000000000000"); + await tx.wait(); + poolAddress = await erc20PoolFactory.deployedPools(hash, collateral, quote); + } + + return utils.getContract("ERC20Pool", poolAddress); +} +export async function getPool( + erc20PoolFactory: ERC20PoolFactory, + collateral: string, + quote: string +): Promise { + const hash = await erc20PoolFactory.ERC20_NON_SUBSET_HASH(); + const poolAddress = await erc20PoolFactory.deployedPools(hash, collateral, quote); + return utils.getContract("ERC20Pool", poolAddress); +} +export async function deploy(mainnet = false) { + const [deployer] = await ethers.getSigners(); + const { usdc, wbtc, ajna, weth } = await deployTokens(deployer.address, mainnet); + const { + poolCommons, + /*actionsInstance,*/ + borrowerActionsInstance, + positionNFTSVGInstance, + kickerActionsInstance, + settlerActionsInstance, + takerActionsInstance, + lpActionsInstance, + lenderActionsInstance, + } = await deployLibraries(); + + const { dmpFactory, guardDeployerSigner, dmpGuardContract } = await deployGuard(); + const { erc20PoolFactory, erc721PoolFactory } = await deployPoolFactory( + poolCommons, + borrowerActionsInstance, + kickerActionsInstance, + settlerActionsInstance, + takerActionsInstance, + lpActionsInstance, + lenderActionsInstance, + ajna.address + ); + + const { rewardsManagerContract, positionManagerContract } = await deployRewardsContracts( + positionNFTSVGInstance, + erc20PoolFactory, + erc721PoolFactory, + ajna + ); + + const { ajnaProxyActionsContract, poolInfoContract } = await deployApa( + poolCommons, + rewardsManagerContract, + positionManagerContract, + dmpGuardContract, + guardDeployerSigner, + weth, + ajna + ); + const pools = { + wbtcUsdcPool: await deployPool(erc20PoolFactory, wbtc.address, usdc.address), + wethUsdcPool: await deployPool(erc20PoolFactory, weth.address, usdc.address), + }; + + return { + erc20PoolFactory, + erc721PoolFactory, + positionManagerContract, + rewardsManagerContract, + ajnaProxyActionsContract, + poolInfoContract, + usdc, + wbtc, + weth, + ajna, + dmpFactory, + guardDeployerSigner, + dmpGuardContract, + pools, + }; +} diff --git a/packages/aum-oracle/scripts/common/hardhat.utils.ts b/packages/aum-oracle/scripts/common/hardhat.utils.ts new file mode 100644 index 000000000..700b614fc --- /dev/null +++ b/packages/aum-oracle/scripts/common/hardhat.utils.ts @@ -0,0 +1,226 @@ +import "@nomiclabs/hardhat-ethers"; + +import erc20abi from "@abis/external/tokens/IERC20.json"; +import { EventFragment } from "@ethersproject/abi"; +import { FactoryOptions } from "@nomiclabs/hardhat-ethers/types"; +import { BigNumber, constants, Contract, ContractReceipt, Signer } from "ethers"; +import { writeFileSync } from "fs"; +import { ethers } from "hardhat"; +import { HardhatRuntimeEnvironment, Network } from "hardhat/types/runtime"; +import { join } from "path"; + +import { Token, WETH } from "../../typechain-types"; + +export type BasicSimulationData = { + data: string; + from: string; + to: string; +}; + +export type TraceData = BasicSimulationData & { + address: string; + nonce: number; +}; + +export type TraceItem = TraceData & { + operationName: string; +}; + +export let trace: TraceItem[] = []; + +export class HardhatUtils { + public async getMainSignerTransactionCount(): Promise { + const signer: Signer = this.hre.ethers.provider.getSigner(0); + const transactionCount = await signer.getTransactionCount(); + return transactionCount; + } + constructor(public readonly hre: HardhatRuntimeEnvironment, public readonly forked?: Network) {} + public getEvents(receipt: ContractReceipt, eventAbi: EventFragment) { + const iface = new this.hre.ethers.utils.Interface([eventAbi]); + const filteredEvents = receipt.logs?.filter(({ topics }) => topics[0] === iface.getEventTopic(eventAbi.name)); + return ( + filteredEvents?.map(x => ({ + ...iface.parseLog(x), + topics: x.topics, + data: x.data, + address: x.address, + })) || [] + ); + } + + public clearTrace() { + trace = []; + } + + public traceTransaction(operationName: string, result: TraceData) { + trace.push({ + operationName, + address: result.address, + data: result.data, + from: result.from, + to: result.to, + nonce: result.nonce, + }); + } + + public getTraceSize() { + return trace.length; + } + + public async saveTrace(fullFileName: string) { + writeFileSync(join(__dirname, fullFileName), this.printTrace(), { + flag: "w", + }); + } + + public printTrace() { + return JSON.stringify(trace, null, 2); + } + + public async sendLotsOfMoney(target: string, token: Token | WETH, mainnet = false) { + if (mainnet) { + await this.setTokenBalance(target, token.address, BigNumber.from("1000000000000000000").mul(1000)); + } else { + await token.mint(target, BigNumber.from("1000000000000000000").mul(1000)); + } + } + + public async deployContract( + contractName: string, + args: any[], + signerOrOptions?: Signer | FactoryOptions | undefined + ): Promise { + const factory = await ethers.getContractFactory(contractName, signerOrOptions); + const contract = (await factory.deploy(...args)) as unknown as T; + await contract.deployed(); + const receipt = await contract.deployTransaction.wait(); + this.traceTransaction(contractName, { + address: contract.address, + data: contract.deployTransaction.data, + from: receipt.from, + to: receipt.to, + nonce: contract.deployTransaction.nonce, + }); + return contract; + } + + public async getContract(contractName: string, contractAddress: string): Promise { + const contract = (await ethers.getContractAt(contractName, contractAddress)) as T; + return contract; + } + + public async impersonate(user: string): Promise { + if (this.hre.network.name !== "tenderly") { + await this.impersonateAccount(user); + const newSigner = await this.hre.ethers.getSigner(user); + return newSigner; + } else { + return this.hre.ethers.getSigner(user); + } + } + + private async impersonateAccount(account: string) { + await this.hre.network.provider.request({ + method: "hardhat_impersonateAccount", + params: [account], + }); + } + public async findBalancesSlot(tokenAddress: string): Promise { + const encode = (types: any[], values: any[]) => this.hre.ethers.utils.defaultAbiCoder.encode(types, values); + const account = constants.AddressZero; + const probeA = encode(["uint"], [BigNumber.from("100")]); + const probeB = encode(["uint"], [BigNumber.from("200")]); + // const token = await this.hre.ethers.getContractAt("ERC20", tokenAddress); + const token = new this.hre.ethers.Contract(tokenAddress, erc20abi); + for (let i = 0; i < 100; i++) { + let probedSlot = this.hre.ethers.utils.keccak256(encode(["address", "uint"], [account, i])); + // remove padding for JSON RPC + while (probedSlot.startsWith("0x0")) probedSlot = "0x" + probedSlot.slice(3); + const prev = await this.hre.network.provider.send("eth_getStorageAt", [tokenAddress, probedSlot]); + // make sure the probe will change the slot value + const probe = prev === probeA ? probeB : probeA; + + await this.hre.network.provider.send("hardhat_setStorageAt", [tokenAddress, probedSlot, probe]); + + const balance = await token.balanceOf(account); + // reset to previous value + await this.hre.network.provider.send("hardhat_setStorageAt", [tokenAddress, probedSlot, prev]); + if (balance.eq(this.hre.ethers.BigNumber.from(probe))) return i; + } + throw "Balances slot not found!"; + } + /** + * Set token balance to the provided value. + * @param {string} account - address of the wallet holding the tokens + * @param {string}tokenAddress - address of the token contract + * @param {BigNumber} balance - token balance to set + * @return {Promise} if the operation succedded + */ + public async setTokenBalance(account: string, tokenAddress: string, balance: BigNumber): Promise { + const isStorageManipulationSuccessful = await this.setTokenBalanceByStorageManipulation( + account, + tokenAddress, + balance + ); + if (!isStorageManipulationSuccessful) { + const isBridgeImpersonationSuccessful = await this.setTokenBalanceByBridgeImpersonation( + account, + tokenAddress, + balance + ); + return isBridgeImpersonationSuccessful; + } + return isStorageManipulationSuccessful; + } + + private async setTokenBalanceByBridgeImpersonation(account: string, tokenAddress: string, balance: BigNumber) { + const bridgeAddress = "0x8eb8a3b98659cce290402893d0123abb75e3ab28"; + const signer = + this.hre.network.name === "tenderly" + ? await this.hre.ethers.getSigner(bridgeAddress) + : await this.impersonate(bridgeAddress); + const token = await this.hre.ethers.getContractAt("ERC20", tokenAddress, signer); + const balanceOfSource = BigNumber.from((await token.balanceOf(bridgeAddress)).toString()); + console.log("balanceOfSource", balanceOfSource.toString()); + console.log("balance", balance.toString()); + if (balanceOfSource.lt(balance)) { + balance = balanceOfSource.div(10); + console.warn( + "Absurd amount of money requested, even Avalanche Bridge is too poor to handle it sending only ", + balance.toString() + ); + } + try { + await token.transfer(account, balance.toString()); + const balanceAfter = await token.balanceOf(account); + return balance < balanceAfter; + } catch (ex) { + console.log(ex); + return false; + } + } + + private async setTokenBalanceByStorageManipulation( + account: string, + tokenAddress: string, + balance: BigNumber + ): Promise { + try { + const slot = await this.findBalancesSlot(tokenAddress); + let index = this.hre.ethers.utils.solidityKeccak256(["uint256", "uint256"], [account, slot]); + if (index.startsWith("0x0")) index = "0x" + index.slice(3); + + await this.hre.ethers.provider.send("hardhat_setStorageAt", [ + tokenAddress, + index, + this.hre.ethers.utils.hexZeroPad(balance.toHexString(), 32), + ]); + // const token = await this.hre.ethers.getContractAt("ERC20", tokenAddress); + const token = new this.hre.ethers.Contract(tokenAddress, erc20abi); + const balanceAfter = await token.balanceOf(account); + return balance == balanceAfter; + } catch (ex) { + return false; + } + } +} diff --git a/packages/aum-oracle/scripts/common/index.ts b/packages/aum-oracle/scripts/common/index.ts new file mode 100644 index 000000000..d01acd675 --- /dev/null +++ b/packages/aum-oracle/scripts/common/index.ts @@ -0,0 +1,5 @@ +export * from "./ajna-library-helpers.utils"; +export * from "./constants.utils"; +export * from "./deployment.utils"; +export * from "./hardhat.utils"; +export * from "./types"; diff --git a/packages/aum-oracle/scripts/common/trace.json b/packages/aum-oracle/scripts/common/trace.json new file mode 100644 index 000000000..54fe8c8f8 --- /dev/null +++ b/packages/aum-oracle/scripts/common/trace.json @@ -0,0 +1,168 @@ +[ + { + "operationName": "Token", + "address": "0xc6a15814fEFaf471301163AE0a65cDaC48BB2D4d", + "data": "0x60806040523480156200001157600080fd5b506040516200129f3803806200129f833981016040819052620000349162000323565b8383600362000044838262000457565b50600462000053828262000457565b5050506200008e826200006b620000ac60201b60201c565b6200007890600a62000638565b6200008890637735940062000650565b620000b5565b6005805460ff191660ff929092169190911790555062000680915050565b60055460ff1690565b620000cc8282620000d060201b620003f81760201c565b5050565b6001600160a01b0382166200012c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200013a60008383620001d1565b80600260008282546200014e91906200066a565b90915550506001600160a01b038216600090815260208190526040812080548392906200017d9084906200066a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3620000cc6000838362000246565b306001600160a01b03831603620002415760405162461bcd60e51b815260206004820152602d60248201527f43616e6e6f74207472616e7366657220746f6b656e7320746f2074686520636f60448201526c373a3930b1ba1034ba39b2b63360991b606482015260840162000123565b505050565b620002418383836200024160201b620004d11760201c565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200028657600080fd5b81516001600160401b0380821115620002a357620002a36200025e565b604051601f8301601f19908116603f01168101908282118183101715620002ce57620002ce6200025e565b81604052838152602092508683858801011115620002eb57600080fd5b600091505b838210156200030f5785820183015181830184015290820190620002f0565b600093810190920192909252949350505050565b600080600080608085870312156200033a57600080fd5b84516001600160401b03808211156200035257600080fd5b620003608883890162000274565b955060208701519150808211156200037757600080fd5b50620003868782880162000274565b604087015190945090506001600160a01b0381168114620003a657600080fd5b606086015190925060ff81168114620003be57600080fd5b939692955090935050565b600181811c90821680620003de57607f821691505b602082108103620003ff57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200024157600081815260208120601f850160051c810160208610156200042e5750805b601f850160051c820191505b818110156200044f578281556001016200043a565b505050505050565b81516001600160401b038111156200047357620004736200025e565b6200048b81620004848454620003c9565b8462000405565b602080601f831160018114620004c35760008415620004aa5750858301515b600019600386901b1c1916600185901b1785556200044f565b600085815260208120601f198616915b82811015620004f457888601518255948401946001909101908401620004d3565b5085821015620005135787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200057a5781600019048211156200055e576200055e62000523565b808516156200056c57918102915b93841c93908002906200053e565b509250929050565b600082620005935750600162000632565b81620005a25750600062000632565b8160018114620005bb5760028114620005c657620005e6565b600191505062000632565b60ff841115620005da57620005da62000523565b50506001821b62000632565b5060208310610133831016604e8410600b84101617156200060b575081810a62000632565b62000617838362000539565b80600019048211156200062e576200062e62000523565b0290505b92915050565b60006200064960ff84168362000582565b9392505050565b808202811582820484141762000632576200063262000523565b8082018082111562000632576200063262000523565b610c0f80620006906000396000f3fe608060405234801561001057600080fd5b50600436106100c55760003560e01c806306fdde03146100ca578063095ea7b3146100e857806318160ddd1461010b57806323b872dd1461011d578063313ce56714610130578063395093511461014957806340c10f191461015c57806342966c681461017157806370a082311461018457806379cc6790146101ad57806395d89b41146101c0578063a457c2d7146101c8578063a9059cbb146101db578063b3bcfa82146101ee578063dd62ed3e146101fb575b600080fd5b6100d261020e565b6040516100df9190610a05565b60405180910390f35b6100fb6100f6366004610a6f565b6102a0565b60405190151581526020016100df565b6002545b6040519081526020016100df565b6100fb61012b366004610a99565b6102ba565b60055460ff165b60405160ff90911681526020016100df565b6100fb610157366004610a6f565b6102de565b61016f61016a366004610a6f565b610300565b005b61016f61017f366004610ad5565b61030e565b61010f610192366004610aee565b6001600160a01b031660009081526020819052604090205490565b61016f6101bb366004610a6f565b61031b565b6100d2610330565b6100fb6101d6366004610a6f565b61033f565b6100fb6101e9366004610a6f565b6103bf565b6005546101379060ff1681565b61010f610209366004610b10565b6103cd565b60606003805461021d90610b43565b80601f016020809104026020016040519081016040528092919081815260200182805461024990610b43565b80156102965780601f1061026b57610100808354040283529160200191610296565b820191906000526020600020905b81548152906001019060200180831161027957829003601f168201915b5050505050905090565b6000336102ae8185856104d6565b60019150505b92915050565b6000336102c88582856105fa565b6102d3858585610674565b506001949350505050565b6000336102ae8185856102f183836103cd565b6102fb9190610b93565b6104d6565b61030a828261083b565b5050565b6103183382610845565b50565b6103268233836105fa565b61030a8282610845565b60606004805461021d90610b43565b6000338161034d82866103cd565b9050838110156103b25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102d382868684036104d6565b6000336102ae818585610674565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03821661044e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103a9565b61045a6000838361084f565b806002600082825461046c9190610b93565b90915550506001600160a01b03821660009081526020819052604081208054839290610499908490610b93565b90915550506040518181526001600160a01b03831690600090600080516020610bba8339815191529060200160405180910390a35050565b505050565b6001600160a01b0383166105385760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103a9565b6001600160a01b0382166105995760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103a9565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061060684846103cd565b9050600019811461066e57818110156106615760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103a9565b61066e84848484036104d6565b50505050565b6001600160a01b0383166106d85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103a9565b6001600160a01b03821661073a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103a9565b61074583838361084f565b6001600160a01b038316600090815260208190526040902054818110156107bd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103a9565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906107f4908490610b93565b92505081905550826001600160a01b0316846001600160a01b0316600080516020610bba8339815191528460405161082e91815260200190565b60405180910390a361066e565b61030a82826103f8565b61030a82826108bd565b306001600160a01b038316036104d15760405162461bcd60e51b815260206004820152602d60248201527f43616e6e6f74207472616e7366657220746f6b656e7320746f2074686520636f60448201526c373a3930b1ba1034ba39b2b63360991b60648201526084016103a9565b6001600160a01b03821661091d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103a9565b6109298260008361084f565b6001600160a01b0382166000908152602081905260409020548181101561099d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103a9565b6001600160a01b03831660009081526020819052604081208383039055600280548492906109cc908490610ba6565b90915550506040518281526000906001600160a01b03851690600080516020610bba8339815191529060200160405180910390a3505050565b600060208083528351808285015260005b81811015610a3257858101830151858201604001528201610a16565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a6a57600080fd5b919050565b60008060408385031215610a8257600080fd5b610a8b83610a53565b946020939093013593505050565b600080600060608486031215610aae57600080fd5b610ab784610a53565b9250610ac560208501610a53565b9150604084013590509250925092565b600060208284031215610ae757600080fd5b5035919050565b600060208284031215610b0057600080fd5b610b0982610a53565b9392505050565b60008060408385031215610b2357600080fd5b610b2c83610a53565b9150610b3a60208401610a53565b90509250929050565b600181811c90821680610b5757607f821691505b602082108103610b7757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102b4576102b4610b7d565b818103818111156102b4576102b4610b7d56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ef9151dac367731ca410087398949aefeb076de8c8acb49de8ad7e4d3a799cf864736f6c63430008120033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000cd9c63cfee8ad52e6ff0b7f6cb8726933d0ffaa200000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000004414a4e41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004414a4e4100000000000000000000000000000000000000000000000000000000", + "from": "0xcD9C63CFEE8ad52e6ff0B7F6Cb8726933D0FFaa2", + "to": null, + "nonce": 0 + }, + { + "operationName": "BorrowerActions", + "address": "0xCD8B4a7Dd87F56B598B5e64ddFB0Ae5AC20C4116", + "data": "0x61304561003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004b5760003560e01c80634700688d1461005057806391f37310146100835780639883470d146100b0575b600080fd5b81801561005c57600080fd5b5061007061006b366004612c20565b6100dd565b6040519081526020015b60405180910390f35b81801561008f57600080fd5b506100a361009e366004612c78565b6101ed565b60405161007a9190612cfe565b8180156100bc57600080fd5b506100d06100cb366004612d8c565b610662565b60405161007a9190612e07565b60006100e98533610aff565b15610107576040516359bfb80360e11b815260040160405180910390fd5b3360009081526002808501602090815260409283902083516060808201865282548252600183015493820193909352920154928201929092529061014f908690850135610b2f565b915061018061016682600001518560a00135610b4a565b60208084015190859061017b90880188612ea0565b610b7e565b61019d576040516374de9aa760e11b815260040160405180910390fd5b6101b9848787843388606001358960e001358960006001610bce565b60405133907f8d6660b4a409414ebe386e9dd200a5c4e75591f0fc98e1272d7ba207d06d4c3490600090a250949350505050565b610255604051806101800160405280600015158152602001600081526020016000815260200160008152602001600081526020016000151581526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b858411156102765760405163bb55fd2760e01b815260040160405180910390fd5b6102bc6040518060e00160405280600015158152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b8215801560a0830181905286151583526102d557508051155b156102f35760405163162908e360e11b815260040160405180910390fd5b6001600160a01b03861660009081526002808b0160209081526040928390208351606081018552815480825260018301549382019390935292015492820192909252906103449060a08b0135610b4a565b60208301526103538d88610aff565b15158352805161010084015260208082018051610140860152908a013560e08501526060808b0135908501526080808b0135604086015290519084015260a0820151156104b45783816020018181516103ac9190612ed9565b9052506080830180518591906103c3908390612ed9565b90525060608301516103d6908c90610b2f565b602084015282518015610402575060208083015182820151858301516104029361017b908e018e612ea0565b1561049e5760018260c0019015159081151581525050600083600001901515908115158152505060018360a001901515908115158152505080600001518360c001818152505061046f8d8d8d8a85602001518e60000160208101906104679190612ea0565b60ff16610d69565b60408085019182526080860192909252519084018051610490908390612eec565b905250608083015160208201525b83836040018181516104b09190612ed9565b9052505b81511561061b576001600160a01b03871633146104e45760405163cad4de1160e01b815260040160405180910390fd5b825115610504576040516359bfb80360e11b815260040160405180910390fd5b610512868a60a00135610ef9565b6060830181905261054290670de0b6b3a764000061053360e08d0135610f25565b61053d9190612ed9565b610b4a565b6080830181905281518290610558908390612ed9565b905250805161056b9060a08b0135610b4a565b602083018190526060840151610589918c91906101008d0135610f4a565b81608001518360e00181815161059f9190612ed9565b90525060e08301516105b59060a08b0135610b4a565b606084018190526105c7908c90610b2f565b602084018190526105d89086610fb8565b60208083015182820151858301516105f69361017b908e018e612ea0565b610613576040516374de9aa760e11b815260040160405180910390fd5b600160c08301525b6106418a8e8d848b88606001518f60e001358a602001518b600001518b60c00151610bce565b805161012084015260200151610160830152509a9950505050505050505050565b6106d1604051806101a0016040528060001515815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6107176040518060e00160405280600081526020016000815260200160001515815260200160001515815260200160001515815260200160008152602001600081525090565b8415801560608301819052851515604084015261073657508060400151155b156107545760405163162908e360e11b815260040160405180910390fd5b6001600160a01b03861660009081526002808a0160209081526040928390208351606081018552815480825260018301549382019390935292015492820192909252906107a59060a08a0135610b4a565b82526107b18c88610aff565b151583528051610120840152602080820180516101608601529089013560e08501526060808a0135818601526080808b013560408701529151918501919091528201511561099a57805160000361081b576040516308d1fde360e11b815260040160405180910390fd5b600019860361083057805160c083015261084f565b8051610849906108448860a08c0135610fe5565b610ffa565b60c08301525b8160c001518360e0018181516108659190612eec565b90525060e083015161087b9060a08a0135610b4a565b606084015260c08201516108939060a08a0135611011565b61010084015260c082015181516108b7916108ad91612eec565b8960a00135610b4a565b80835260608401516108d1918b91906101008c0135610f4a565b6108df8a8460600151610b2f565b602084015282511561098257815160208083015185820151610908939261017b908d018d612ea0565b15610977576001608083018190526000845260a0840152805160c0840152602080820151610944918e918e918e918c91610467908f018f612ea0565b60208401908152608085019190915251604084018051610965908390612eec565b90525060808301516020820152610982565b60c080830151908401525b60c082015181518290610996908390612eec565b9052505b816040015115610ab9576001600160a01b03871633146109cd5760405163cad4de1160e01b815260040160405180910390fd5b8251156109ed576040516359bfb80360e11b815260040160405180910390fd5b8160600151610a0a57610a048a8460600151610b2f565b60208401525b610a18836020015185610fb8565b6000610a2c83600001518560200151611029565b825190915015801590610a3d575080155b80610a4b5750808260200151105b80610a64575085818360200151610a629190612eec565b105b15610a8257604051633a23d82560e01b815260040160405180910390fd5b60016080840152602082018051879190610a9d908390612eec565b905250604084018051879190610ab4908390612eec565b905250505b610adf898d8c848b88606001518e60e001358a602001518b600001518b60800151610bce565b805161014084015260200151610180830152509998505050505050505050565b6001600160a01b03811660009081526003830160205260409020600101546001600160601b031615155b92915050565b6000610b43610b3e8484611049565b61105f565b9392505050565b6000670de0b6b3a7640000610b60600282612f15565b610b6a8486612f37565b610b749190612ed9565b610b439190612f15565b600060ff8216610b9c5784610b938585610b4a565b10159050610bc6565b670de0b6b3a7640000610baf8186612f15565b610bb99190612f37565b935084610b938585610b4a565b949350505050565b865160009015801590610be45750602088015115155b9050600081610bf4576000610c06565b610c0689600001518a60200151611029565b905083610c73576001600160a01b038816600090815260018d0160205260409020548215610c605781600003610c4f57604051633d1e8af160e21b815260040160405180910390fd5b610c5b8d8a83856110ca565b610c71565b8015610c7157610c718d8a8361119f565b505b8215610d26578015610d1e578a548c546000916001600160601b031690610c9c90600190612eec565b610ca69190612ed9565b90506000610cd1610b3e8d610ccc8c610cc787670de0b6b3a7640000612f37565b611029565b611049565b9050670de0b6b3a7640000878483610ce98c85612ed9565b610cf39190612f37565b610cfd9190612f37565b610d079190612f15565b610d119190612f15565b60408c015250610d269050565b600060408a01525b5050506001600160a01b03909416600090815260029889016020908152604091829020875181559087015160018201559501519490970193909355505050505050565b6000806000198301610e9d57600080670de0b6b3a7640000610d8b8188612f15565b610d959190612f37565b9350858414610e4a57610da88487612eec565b6001600160a01b03881660009081526003808d01602052604082206002810154918101546001909101549396509192610df8926001600160601b0392831692600160a01b909104811691166112e3565b905064173eb4c80a8111610e0e57611cdc610e17565b610e178161137c565b600081815260208c905260409020909250610e469089610e378c8661143e565b87610e418761105f565b611457565b9250505b60408051858152602081018490529081018290526001600160a01b038816907fddd6b496b84171d179d9874158b1cbbe422dd482e5523f1b09cb69ebef2878419060600160405180910390a25050610ee4565b839150846001600160a01b03167f91a9dcdd01df8b934f14307641e884e0ea6e414bf05fe8daf8c74a28f69b55ee83604051610edb91815260200190565b60405180910390a25b610eee88866114e1565b965096945050505050565b600081600181610f11670de0b6b3a764000087612f37565b610f1b9190612ed9565b610b749190612eec565b6000610b29610f3d836802d1a51c7e00500000611029565b6601c6bf526340006117db565b8115610fb25780821015610f71576040516345b3f65d60e01b815260040160405180910390fd5b6000610f7c856117eb565b9050600a8110610fb057610f9084826117fc565b831015610fb057604051635b85919f60e11b815260040160405180910390fd5b505b50505050565b610fc18161105f565b821015610fe157604051638be4f6eb60e01b815260040160405180910390fd5b5050565b600081610b74670de0b6b3a764000085612f37565b60008183111561100a5781610b43565b5090919050565b6000670de0b6b3a7640000600181610f118587612f37565b600081611037600282612f15565b610b6a670de0b6b3a764000086612f37565b60006110558383611822565b5090949350505050565b60008061106e8361103c612f64565b9050610c9f19811280611082575061103c81135b156110a057604051637edf443b60e11b815260040160405180910390fd5b610b436110c56110af83611912565b6110c0670df27a2cdf4480006119a2565b611a86565b611b4b565b811561116d5760008460000183815481106110e7576110e7612f8b565b6000918252602091829020604080518082019091529101546001600160a01b03811682526001600160601b03600160a01b90910481169282018390529092508316101561114d576001600160601b0382166020820152611148858285611be7565b611167565b6001600160601b0382166020820152611167858285611d72565b50610fb2565b604080518082019091526001600160a01b03841681526001600160601b03821660208201528454610fb2918691611d72565b6001600160a01b038216600090815260018085016020526040822082905584546111c99190612eec565b90508082036112005783548490806111e3576111e3612fa1565b600082815260208120820160001990810191909155019055610fb2565b600084600001828154811061121757611217612f8b565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b031691810191909152855490915085908061126657611266612fa1565b600082815260208120820160001990810191909155019055611289858285611d72565b610fb0858660000185815481106112a2576112a2612f8b565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b03169181019190915285611be7565b6000806113146112f38442612eec565b61130590670de0b6b3a7640000612f37565b68c328093e61ee400000611029565b905061132881670de0b6b3a7640000610ffa565b6113329082612eec565b90506000611349670de0b6b3a763ffff1983611a86565b9050600061135787876117db565b90506113668161053d84611b4b565b611371906020612f37565b979650505050505050565b600064173eb4c80a82108061139c57506b033f4a75fb6ff29166751a4b82115b156113ba57604051635665ba4560e11b815260040160405180910390fd5b60006113de6113c8846119a2565b6113d9670df27a2cdf4480006119a2565b611e4f565b905060006113eb82611f15565b905060008212801561140d57506706f05b59d3b2000061140b8383612f64565b135b1561142857610bc6670de0b6b3a7640000820561103d612f64565b610bc6670de0b6b3a7640000820561103c612f64565b6000610b4361144d8484611f87565b61053d8585612035565b600285015460009042810361147f5760405163c1e4c5f760e01b815260040160405180910390fd5b6114968760010154886000015487878760006120a2565b9150838760010160008282546114ac9190612ed9565b90915550508654829088906000906114c5908490612ed9565b909155506114d790508782888561211f565b5095945050505050565b6001600160a01b03808216600090815260038085016020908152604080842081516101208101835281548088168083526001600160601b03600160a01b9283900481168488015260018086015480831686890152600160601b908190048c16606087015260028701548084166080880152048b1660a086015297850154808b1660c086019081529390041660e084015260049384015460ff16151561010084015287529189019093529084209051928101805492959194939091169290916115aa908490612eec565b925050819055508160c001516001600160a01b03168160000160008282546115d29190612ed9565b9091555050835484906000906115f0906001600160601b0316612fb7565b82546001600160601b039182166101009390930a92830291909202199091161790558354600160601b90046001600160a01b03908116908416148015611645575060018401546001600160a01b038481169116145b1561166e5783546001600160601b031684556001840180546001600160a01b031916905561179d565b83546001600160a01b03808516600160601b90920416036116d35760a0820180516001600160a01b039081166000908152600387016020526040902060010180546001600160601b03908116909155915186549116600160601b02911617845561179d565b60018401546001600160a01b03808516911603611739576060820180516001600160a01b039081166000908152600387016020526040902060020180546001600160601b0316905590516001860180546001600160a01b0319169190921617905561179d565b60a0820180516060840180516001600160a01b03908116600090815260038901602052604080822060020180546001600160601b03908116600160601b97861688021790915593519551831682529020600101805490921693169091029190911790555b50506001600160a01b03166000908152600391820160205260408120818155600181018290556002810182905591820155600401805460ff19169055565b60008183101561100a5781610b43565b8054600090610b2990600190612eec565b60008115610b2957610b4361181484610cc785612179565b678ac7230489e80000611029565b60008080611000670de0b6b3a764000082808080805b861561190457611848878b612ed9565b93508b84612001811061185d5761185d612f8b565b015492508b6120010184612001811061187857611878612f8b565b01549150816000036118935761188e8684610b4a565b6118b5565b6118b56118a08388612f37565b846a0c097ce7bc90715b34b9f160241b61218d565b6118bf9086612ed9565b90508a8110156118de57611cdc84116118d9578399508094505b6118f8565b81156118f1576118ee868361223b565b95505b8098508597505b600187901c9650611838565b505050505050509250925092565b60007809392ee8e921d5d073aff322e62439fcf32d7f344649470f8f198212156119575760405163e608e18b60e01b8152600481018390526024015b60405180910390fd5b7809392ee8e921d5d073aff322e62439fcf32d7f344649470f90821315611994576040516371f72a3160e01b81526004810183905260240161194e565b50670de0b6b3a76400000290565b60008082136119c75760405163309fa7dd60e11b81526004810183905260240161194e565b6000670de0b6b3a764000083126119e0575060016119f9565b6000199050826a0c097ce7bc90715b34b9f160241b0492505b6000611a0e670de0b6b3a76400008505612250565b670de0b6b3a764000081029350905083811d670de0b6b3a763ffff198101611a3857505002919050565b6706f05b59d3b200005b6000811315611a7d57670de0b6b3a7640000828002059150671bc16d674ec800008212611a75579384019360019190911d905b60011d611a42565b50505002919050565b6000600160ff1b831480611a9d5750600160ff1b82145b15611abb57604051630d01a11b60e21b815260040160405180910390fd5b60008060008512611acc5784611ad1565b846000035b915060008412611ae15783611ae6565b836000035b90506000611af4838361232e565b90506001600160ff1b03811115611b215760405163bf79e8d960e01b81526004810182905260240161194e565b600019808713908613808218600114611b3a5782611b3f565b826000035b98975050505050505050565b600080821215611b9e5768033dd1780914b9711419821215611b6f57506000919050565b611b7b82600003611b4b565b6a0c097ce7bc90715b34b9f160241b81611b9757611b97612eff565b0592915050565b680a688906bd8b0000008212611bca5760405163e69458f960e01b81526004810183905260240161194e565b670de0b6b3a7640000604083901b04610b43816123f4565b919050565b6000611bf4826002612f37565b8454909150818111611c1157611c0c85858584612a86565b610fb0565b6000856000018381548110611c2857611c28612f8b565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529050611c70836001612ed9565b82118015611cc1575060208101516001600160601b031686611c93856001612ed9565b81548110611ca357611ca3612f8b565b600091825260209091200154600160a01b90046001600160601b0316115b15611d215785611cd084612fda565b93508381548110611ce357611ce3612f8b565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b03169181019190915290505b84602001516001600160601b031681602001516001600160601b031611611d5357611d4e86868685612a86565b611d6a565b611d5f86828685612a86565b611d6a868685611be7565b505050505050565b82546001821480611dc2575083611d8a600284612f15565b81548110611d9a57611d9a612f8b565b60009182526020918290200154908401516001600160601b03600160a01b9092048216911611155b15611dd857611dd384848484612a86565b610fb2565b611e3a8480611de8600286612f15565b81548110611df857611df8612f8b565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091528484612a86565b610fb28484611e4a600286612f15565b611d72565b6000600160ff1b831480611e665750600160ff1b82145b15611e845760405163b3c754a360e01b815260040160405180910390fd5b60008060008512611e955784611e9a565b846000035b915060008412611eaa5783611eaf565b836000035b90506000611ec683670de0b6b3a764000084612b37565b90506001600160ff1b03811115611ef357604051637cb4bef560e01b81526004810182905260240161194e565b600019808713908613808218600114611f0c5782611b3f565b611b3f83612ff3565b6000670afdc366fbc00000600160ff1b03821315611f4957604051635399a28560e11b81526004810183905260240161194e565b670de0b6b3a764000082076000819003611f6557829150611f81565b80830391506000831315611f8157670de0b6b3a7640000820191505b50919050565b6000611f9282612fda565b9150600183836120018110611fa957611fa9612f8b565b0154915060008060005b85841660000361202b57611fc78487612eec565b925086836120018110611fdc57611fdc612f8b565b015491508661200101836120018110611ff757611ff7612f8b565b01549050806000036120095781612013565b6120138183610b4a565b61201d9086612eec565b9450600184901b9350611fb3565b5050505092915050565b600061204082612fda565b9150670de0b6b3a764000090505b6120008211610b29576000836120010183612001811061207057612070612f8b565b015490508015612087576120848282610b4a565b91505b61209083612b91565b61209a9084612ed9565b92505061204e565b6000841580156120b0575086155b156120c6576120bf8484610b4a565b9050612115565b856000036120d8576120bf8484610b4a565b612112866120e68587612f37565b6120f0868b612f37565b612102670de0b6b3a76400008a612f37565b61210c9190612ed9565b85612bb0565b90505b9695505050505050565b8015610fb2576001600160a01b03821660009081526003850160205260409020600181015484106121525781815561216c565b818160000160008282546121669190612ed9565b90915550505b4260019091015550505050565b6000610b29670de0b6b3a764000083612f37565b60008080600019858709858702925082811083820303915050806000036121c7578382816121bd576121bd612eff565b0492505050610b43565b8084116121d357600080fd5b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000670de0b6b3a7640000610b748385612f37565b6000600160801b821061227057608091821c9161226d9082612ed9565b90505b600160401b821061228e57604091821c9161228b9082612ed9565b90505b600160201b82106122ac57602091821c916122a99082612ed9565b90505b6201000082106122c957601091821c916122c69082612ed9565b90505b61010082106122e557600891821c916122e29082612ed9565b90505b6010821061230057600491821c916122fd9082612ed9565b90505b6004821061231b57600291821c916123189082612ed9565b90505b60028210611be257610b29600182612ed9565b60008080600019848609848602925082811083820303915050670de0b6b3a764000081106123725760405163698d9a0160e11b81526004810182905260240161194e565b600080670de0b6b3a764000086880991506706f05b59d3b1ffff82119050826000036123b05780670de0b6b3a7640000850401945050505050610b29565b620400008285030493909111909103600160ee1b02919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690201905092915050565b600160bf1b6001603f1b8216156124145768016a09e667f3bcc9090260401c5b6001603e1b82161561242f576801306fe0a31b7152df0260401c5b6001603d1b82161561244a576801172b83c7d517adce0260401c5b6001603c1b8216156124655768010b5586cf9890f62a0260401c5b6001603b1b821615612480576801059b0d31585743ae0260401c5b6001603a1b82161561249b57680102c9a3e778060ee70260401c5b600160391b8216156124b65768010163da9fb33356d80260401c5b600160381b8216156124d157680100b1afa5abcbed610260401c5b600160371b8216156124ec5768010058c86da1c09ea20260401c5b600160361b821615612507576801002c605e2e8cec500260401c5b600160351b82161561252257680100162f3904051fa10260401c5b600160341b82161561253d576801000b175effdc76ba0260401c5b600160331b82161561255857680100058ba01fb9f96d0260401c5b600160321b8216156125735768010002c5cc37da94920260401c5b600160311b82161561258e576801000162e525ee05470260401c5b600160301b8216156125a95768010000b17255775c040260401c5b6001602f1b8216156125c4576801000058b91b5bc9ae0260401c5b6001602e1b8216156125df57680100002c5c89d5ec6d0260401c5b6001602d1b8216156125fa5768010000162e43f4f8310260401c5b6001602c1b82161561261557680100000b1721bcfc9a0260401c5b6001602b1b8216156126305768010000058b90cf1e6e0260401c5b6001602a1b82161561264b576801000002c5c863b73f0260401c5b600160291b82161561266657680100000162e430e5a20260401c5b600160281b821615612681576801000000b1721835510260401c5b600160271b82161561269c57680100000058b90c0b490260401c5b600160261b8216156126b75768010000002c5c8601cc0260401c5b600160251b8216156126d2576801000000162e42fff00260401c5b600160241b8216156126ed5768010000000b17217fbb0260401c5b600160231b821615612708576801000000058b90bfce0260401c5b600160221b82161561272357680100000002c5c85fe30260401c5b600160211b82161561273e5768010000000162e42ff10260401c5b600160201b82161561275957680100000000b17217f80260401c5b63800000008216156127745768010000000058b90bfc0260401c5b634000000082161561278f576801000000002c5c85fe0260401c5b63200000008216156127aa57680100000000162e42ff0260401c5b63100000008216156127c5576801000000000b17217f0260401c5b63080000008216156127e057680100000000058b90c00260401c5b63040000008216156127fb5768010000000002c5c8600260401c5b6302000000821615612816576801000000000162e4300260401c5b63010000008216156128315768010000000000b172180260401c5b6280000082161561284b576801000000000058b90c0260401c5b6240000082161561286557680100000000002c5c860260401c5b6220000082161561287f5768010000000000162e430260401c5b6210000082161561289957680100000000000b17210260401c5b620800008216156128b35768010000000000058b910260401c5b620400008216156128cd576801000000000002c5c80260401c5b620200008216156128e757680100000000000162e40260401c5b620100008216156129005761b172600160401b010260401c5b618000821615612918576158b9600160401b010260401c5b61400082161561293057612c5d600160401b010260401c5b6120008216156129485761162e600160401b010260401c5b61100082161561296057610b17600160401b010260401c5b6108008216156129785761058c600160401b010260401c5b610400821615612990576102c6600160401b010260401c5b6102008216156129a857610163600160401b010260401c5b6101008216156129bf5760b1600160401b010260401c5b60808216156129d5576059600160401b010260401c5b60408216156129eb57602c600160401b010260401c5b6020821615612a01576016600160401b010260401c5b6010821615612a1757600b600160401b010260401c5b6008821615612a2d576006600160401b010260401c5b6004821615612a43576003600160401b010260401c5b6002821615612a59576001600160401b010260401c5b6001821615612a6f576001600160401b010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b808203612acc57835460018101855560008581526020908190208551918601516001600160601b0316600160a01b026001600160a01b0390921691909117910155612b16565b82846000018381548110612ae257612ae2612f8b565b6000918252602091829020835193909201516001600160601b0316600160a01b026001600160a01b03909316929092179101555b5090516001600160a01b031660009081526001909201602052604090912055565b6000808060001985870985870292508281108382030391505080600003612b67578382816121bd576121bd612eff565b8381106121d357604051631dcf306360e21b8152600481018290526024810185905260440161194e565b60008115611be257612ba860001983186001612ed9565b909116919050565b600080612bbe86868661218d565b90506001836002811115612bd457612bd4612f4e565b148015612bf1575060008480612bec57612bec612eff565b868809115b15612c0457612c01600182612ed9565b90505b95945050505050565b60006101208284031215611f8157600080fd5b6000806000806101808587031215612c3757600080fd5b843593506020850135925060408501359150612c568660608701612c0d565b905092959194509250565b80356001600160a01b0381168114611be257600080fd5b6000806000806000806000806000806102408b8d031215612c9857600080fd5b8a35995060208b0135985060408b0135975060608b01359650612cbe8c60808d01612c0d565b95506101a08b01359450612cd56101c08c01612c61565b93506101e08b013592506102008b013591506102208b013590509295989b9194979a5092959850565b81511515815261018081016020830151602083015260408301516040830152606083015160608301526080830151608083015260a0830151612d4460a084018215159052565b5060c0838101519083015260e0808401519083015261010080840151908301526101208084015190830152610140808401519083015261016092830151929091019190915290565b60008060008060008060008060006102208a8c031215612dab57600080fd5b8935985060208a0135975060408a0135965060608a01359550612dd18b60808c01612c0d565b9450612de06101a08b01612c61565b93506101c08a013592506101e08a013591506102008a013590509295985092959850929598565b8151151581526101a081016020830151602083015260408301516040830152606083015160608301526080830151608083015260a0830151612e4d60a084018215159052565b5060c0838101519083015260e08084015190830152610100808401519083015261012080840151908301526101408084015190830152610160808401519083015261018092830151929091019190915290565b600060208284031215612eb257600080fd5b813560ff81168114610b4357600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610b2957610b29612ec3565b81810381811115610b2957610b29612ec3565b634e487b7160e01b600052601260045260246000fd5b600082612f3257634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610b2957610b29612ec3565b634e487b7160e01b600052602160045260246000fd5b8181036000831280158383131683831282161715612f8457612f84612ec3565b5092915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60006001600160601b03821680612fd057612fd0612ec3565b6000190192915050565b600060018201612fec57612fec612ec3565b5060010190565b6000600160ff1b820161300857613008612ec3565b506000039056fea2646970667358221220ecb187e7ba5703059dbb0e729cb26d67f7470118151bb28e3fd8e38dadb330b664736f6c63430008120033", + "from": "0xcD9C63CFEE8ad52e6ff0B7F6Cb8726933D0FFaa2", + "to": null, + "nonce": 1 + }, + { + "operationName": "KickerActions", + "address": "0x13354607fEfe661c2169A06c36A5C80E2270417D", + "data": "0x6128ac61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004b5760003560e01c80632de27df214610050578063a22346e3146100c5578063f88050b7146100e5575b600080fd5b81801561005c57600080fd5b5061007061006b3660046125ef565b610113565b6040516100bc9190600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b60405180910390f35b8180156100d157600080fd5b506100706100e036600461265b565b610138565b8180156100f157600080fd5b506101056101003660046126bb565b61050b565b6040519081526020016100bc565b61011b612589565b61012b878787878787600061066a565b90505b9695505050505050565b610140612589565b600083815260208781526040808320338452600381018352818420825161012081018452858152938401859052918301849052606083018490526080830184905260a0830184905260c0830184905260e08301849052610100830193909352908160010154836002015410156101b857815460e08201525b82546060820152600183015460208201526101d2866109a2565b60808201526101e18a87610a14565b60c08201526101f08a87610ac2565b60a0820181905260c082015161020591610b35565b604082018190526020820151606083015160e0840151608085015161022d9491906000610b69565b8082526040820151101561024357604081015181525b80516000036102655760405163bb55fd2760e01b815260040160405180910390fd5b61027f8b8b8a8a6102758d610bd4565b5186518b9061066a565b8051825191955010156102b85783518082526102aa908b906102a59060608b0135612712565b610be7565b6060850152600084526102cd565b8051845185906102c9908390612725565b9052505b8360600151816080015110156102f657604051631eceae9960e21b815260040160405180910390fd5b6040810151815114801561030c57506020810151155b1561033a57606081015161010082015260c081015161032e908b908890610bf6565b600060c08201526103bb565b61035d816020015182606001518360400151846000015185608001516001610ca7565b610100820152805160a082015160009161037691610d0c565b9050806000036103995760405163bb55fd2760e01b815260040160405180910390fd5b6103a48b8883610bf6565b808260c0018181516103b69190612725565b905250505b6103ce8160e00151826101000151610d21565b61010082018190526000036103f65760405163955a8bf560e01b815260040160405180910390fd5b6000816101000151826060015161040d9190612725565b905081602001516000148015610425575060c0820151155b801561043057508015155b15610479576000845542600285015560405181815287907f30ee43613aaa48d222b158aab1123c5a29d452f8b1a849e5f815dd355923ba859060200160405180910390a26104b5565b8161010001518360000160008282546104929190612725565b9091555050610100820151845485906000906104af908490612725565b90915550505b815161010083015160608701516040518a9333937f0130a7b525bd6b1e72def1ee0b77f3467028a0e958e30174a0c95eb3860fc221936104f493612738565b60405180910390a350505050979650505050505050565b600282015460008181526005840160205260408120549091906105318162127500612712565b42108061054d575084546203f4809061054a9042612725565b11155b1561056b576040516357d0f8ef60e01b815260040160405180910390fd5b6001850154600061059a61058760208801356060890135610b35565b60028a01548835908560408b0135610d38565b90506105ad662386f26fc1000082610b35565b94506105b98582612725565b6105c39083612712565b9150816000036105e65760405163d8b9cde160e01b815260040160405180910390fd5b60018088018390554288556105fb9085612712565b600288018190556000818152600589016020526040902042908190559094507f3dacf6b19b0a84358a76a3338466cd428d1d4e80e53ccfe91b15d9b8021df96090839061064790610dbb565b8660405161065793929190612738565b60405180910390a1505050509392505050565b610672612589565b6001600160a01b0384166000908152600389016020526040902060018101546001600160601b0316156106b8576040516359bfb80360e11b815260040160405180910390fd5b6001600160a01b038516600090815260028801602052604090819020805460808501819052600182015460a086015291840191909152610700896102a58660608b0135612712565b8360600181815250506107586040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61076a84604001518960a00135610b35565b80825260a085015160208084018290526060870151610796939291610791908d018d61274e565b610e4b565b156107b4576040516312eb95c560e21b815260040160405180910390fd5b6107db6107c983600201548a60a00135610b35565b6ba25c8b0b1bdd606602df22a6610d21565b604082018190526107ec9087610e9b565b8a546001600160601b03166108008a610ec8565b61080a9190612712565b606080830182905261084591610840918d9161083b918d01359061083690670de0b6b3a7640000612771565b610ed9565b610ef9565b6109a2565b608082018190528151602083015161085c92610f0f565b60c0830181905260a0830182905260808301516040840151610886938f9388938d93919291610f98565b6108948b8260c0015161114e565b84526001600160a01b038716600090815260018a0160205260409020546108be908a9089906111da565b6108e16108d385604001518a60e00135610b35565b673782dace9d900000610ed9565b60e082018190526108f69060a08a0135610b35565b61010082015260e081015161090f9060208a0135612712565b602085015260e081015160408501805161092a908390612712565b9052506040840151825561010081015181516001600160a01b038916917f9f9a32e7f0271518f9b1895d0b1f2f4f73ed305e48b0a3782932094f9d00d948916109739190612712565b83602001518460c0015160405161098c93929190612738565b60405180910390a2505050979650505050505050565b6000806109b18361103c612788565b9050610c9f198112806109c5575061103c81135b156109e357604051637edf443b60e11b815260040160405180910390fd5b610a0d610a086109f283611326565b610a03670df27a2cdf4480006113b6565b61149a565b61155f565b9392505050565b6000610a1f826127af565b9150600183836120018110610a3657610a366127c8565b0154915060008060005b858416600003610ab857610a548487612725565b925086836120018110610a6957610a696127c8565b015491508661200101836120018110610a8457610a846127c8565b0154905080600003610a965781610aa0565b610aa08183610b35565b610aaa9086612725565b9450600184901b9350610a40565b5050505092915050565b6000610acd826127af565b9150670de0b6b3a764000090505b6120008211610b2f5760008361200101836120018110610afd57610afd6127c8565b015490508015610b1457610b118282610b35565b91505b610b1d836115f6565b610b279084612712565b925050610adb565b92915050565b6000670de0b6b3a7640000610b4b6002826127f4565b610b558486612771565b610b5f9190612712565b610a0d91906127f4565b600084158015610b77575086155b15610b8357508261012e565b85600003610b9257508261012e565b61012b610b9f8489612771565b610bb1670de0b6b3a764000088612771565b610bbb9190612712565b85610bce670de0b6b3a76400008a612771565b85611615565b610bdc6125bf565b610b2f826001611672565b6000610a0d6108408484610ef9565b610bff826127af565b91505b6120008211610ca25760008184846120018110610c2157610c216127c8565b016000828254610c319190612725565b925050819055905060008461200101846120018110610c5257610c526127c8565b015490508015610c8657610c668282610b35565b610c79610c738585612712565b83610b35565b610c839190612725565b92505b610c8f846115f6565b610c999085612712565b93505050610c02565b505050565b600084158015610cb5575086155b15610cc157508261012e565b85600003610cd057508261012e565b61012b86610ce6670de0b6b3a764000087612771565b610cf0868b612771565b610d02670de0b6b3a76400008a612771565b610bce9190612712565b600081610b5f670de0b6b3a764000085612771565b600081831115610d315781610a0d565b5090919050565b600080610d458486612712565b905080831115610db15782610d62670dcef33a6f83800089610b35565b610d6c9190612712565b9150610d948282610d85670de0b6b3e2feca008a610b35565b610d8f9190612712565b610d21565b610d9e9083612725565b9150610dae82610d8f8386612725565b91505b5095945050505050565b60008115610e46576000610dcf8342612725565b90506000610ddf610e10836127f4565b676765c793fa10079d601b1b901c90506000610e1e6b0331adfc6b81cf95c39de3b1603c610e0f610e1087612808565b610e1991906127f4565b6116f2565b9050610e40610e2d838361176a565b610e3b90633b9aca00612771565b611783565b93505050505b919050565b600060ff8216610e695784610e608585610b35565b10159050610e93565b670de0b6b3a7640000610e7c81866127f4565b610e869190612771565b935084610e608585610b35565b949350505050565b610ea4816109a2565b821015610ec457604051638be4f6eb60e01b815260040160405180910390fd5b5050565b8054600090610b2f90600190612725565b600081610ee76002826127f4565b610b55670de0b6b3a764000086612771565b6000610f0583836117a2565b5090949350505050565b6000808084610f26670de0b6b3a764000088612771565b610f3091906127f4565b9050838110610f4857662386f26fc100009250610f83565b610f80670429d069189e0000610d8f662386f26fc10000610f698589610ed9565b610f7b90670de0b6b3a7640000612725565b611892565b92505b610f8d8387610b35565b915050935093915050565b85546001600160a01b031916331786556001860180546001600160601b034281166001600160601b03199283161790925560028801805492851692909116919091179055610fe5846118a2565b6003870180546001600160a01b0319166001600160a01b03929092169190911790556110108361190f565b86546001600160601b0391909116600160a01b026001600160a01b0390911617865561103b8161190f565b6003870180546001600160a01b0316600160a01b6001600160601b03938416021790558754889160009161106f9116612832565b82546001600160601b039182166101009390930a92830291909202199091161790558654600160601b90046001600160a01b03161561110457600180880180546001600160a01b03908116600090815260038b01602052604090206002018054828a16600160601b9081026001600160601b03928316179092559254938a018054949092160292909116919091179055611123565b86546001600160601b0316600160601b6001600160a01b038716021787555b505050600190930180546001600160a01b039092166001600160a01b03199092169190911790555050565b33600090815260048301602052604081206001810180548491908490611175908490612712565b909155505080548381106111a257838260000160008282546111979190612725565b909155506111d29050565b6111ac8185612725565b925060008260000181905550828560020160008282546111cc9190612712565b90915550505b505092915050565b6001600160a01b038216600090815260018085016020526040822082905584546112049190612725565b905080820361123b57835484908061121e5761121e612860565b600082815260208120820160001990810191909155019055611320565b6000846000018281548110611252576112526127c8565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b03169181019190915285549091508590806112a1576112a1612860565b6000828152602081208201600019908101919091550190556112c4858285611977565b61131e858660000185815481106112dd576112dd6127c8565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b03169181019190915285611a54565b505b50505050565b60007809392ee8e921d5d073aff322e62439fcf32d7f344649470f8f1982121561136b5760405163e608e18b60e01b8152600481018390526024015b60405180910390fd5b7809392ee8e921d5d073aff322e62439fcf32d7f344649470f908213156113a8576040516371f72a3160e01b815260048101839052602401611362565b50670de0b6b3a76400000290565b60008082136113db5760405163309fa7dd60e11b815260048101839052602401611362565b6000670de0b6b3a764000083126113f45750600161140d565b6000199050826a0c097ce7bc90715b34b9f160241b0492505b6000611422670de0b6b3a76400008505611bdf565b670de0b6b3a764000081029350905083811d670de0b6b3a763ffff19810161144c57505002919050565b6706f05b59d3b200005b600081131561149157670de0b6b3a7640000828002059150671bc16d674ec800008212611489579384019360019190911d905b60011d611456565b50505002919050565b6000600160ff1b8314806114b15750600160ff1b82145b156114cf57604051630d01a11b60e21b815260040160405180910390fd5b600080600085126114e057846114e5565b846000035b9150600084126114f557836114fa565b836000035b905060006115088383611cbd565b90506001600160ff1b038111156115355760405163bf79e8d960e01b815260048101829052602401611362565b60001980871390861380821860011461154e5782611553565b826000035b98975050505050505050565b6000808212156115b25768033dd1780914b971141982121561158357506000919050565b61158f8260000361155f565b6a0c097ce7bc90715b34b9f160241b816115ab576115ab6127de565b0592915050565b680a688906bd8b00000082126115de5760405163e69458f960e01b815260048101839052602401611362565b670de0b6b3a7640000604083901b04610a0d81611d83565b60008115610e465761160d60001983186001612712565b909116919050565b600080611623868686612415565b905060018360028111156116395761163961281c565b148015611656575060008480611651576116516127de565b868809115b1561166957611666600182612712565b90505b95945050505050565b61167a6125bf565b8254821061169b576040805180820190915260008082526020820152610a0d565b8260000182815481106116b0576116b06127c8565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b60006116ff600283612808565b60000361171757676765c793fa10079d601b1b611719565b825b90506117266002836127f4565b91505b8115610b2f57611739838461176a565b9250611746600283612808565b1561175857611755818461176a565b90505b6117636002836127f4565b9150611729565b6000676765c793fa10079d601b1b610b4b6002826127f4565b6000633b9aca0061179883631dcd6500612712565b610b2f91906127f4565b60008080611000670de0b6b3a764000082808080805b8615611884576117c8878b612712565b93508b8461200181106117dd576117dd6127c8565b015492508b612001018461200181106117f8576117f86127c8565b01549150816000036118135761180e8684610b35565b611835565b6118356118208388612771565b846a0c097ce7bc90715b34b9f160241b612415565b61183f9086612712565b90508a81101561185e57611cdc8411611859578399508094505b611878565b81156118715761186e86836124c3565b95505b8098508597505b600187901c96506117b8565b505050505050509250925092565b600081831015610d315781610a0d565b60006001600160a01b0382111561190b5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663630206269747360c81b6064820152608401611362565b5090565b60006001600160601b0382111561190b5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b6064820152608401611362565b825460018214806119c757508361198f6002846127f4565b8154811061199f5761199f6127c8565b60009182526020918290200154908401516001600160601b03600160a01b9092048216911611155b156119dd576119d8848484846124d8565b611320565b611a3f84806119ed6002866127f4565b815481106119fd576119fd6127c8565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b03169181019190915284846124d8565b6113208484611a4f6002866127f4565b611977565b6000611a61826002612771565b8454909150818111611a7e57611a79858585846124d8565b61131e565b6000856000018381548110611a9557611a956127c8565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529050611add836001612712565b82118015611b2e575060208101516001600160601b031686611b00856001612712565b81548110611b1057611b106127c8565b600091825260209091200154600160a01b90046001600160601b0316115b15611b8e5785611b3d846127af565b93508381548110611b5057611b506127c8565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b03169181019190915290505b84602001516001600160601b031681602001516001600160601b031611611bc057611bbb868686856124d8565b611bd7565b611bcc868286856124d8565b611bd7868685611a54565b505050505050565b6000600160801b8210611bff57608091821c91611bfc9082612712565b90505b600160401b8210611c1d57604091821c91611c1a9082612712565b90505b600160201b8210611c3b57602091821c91611c389082612712565b90505b620100008210611c5857601091821c91611c559082612712565b90505b6101008210611c7457600891821c91611c719082612712565b90505b60108210611c8f57600491821c91611c8c9082612712565b90505b60048210611caa57600291821c91611ca79082612712565b90505b60028210610e4657610b2f600182612712565b60008080600019848609848602925082811083820303915050670de0b6b3a76400008110611d015760405163698d9a0160e11b815260048101829052602401611362565b600080670de0b6b3a764000086880991506706f05b59d3b1ffff8211905082600003611d3f5780670de0b6b3a7640000850401945050505050610b2f565b620400008285030493909111909103600160ee1b02919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690201905092915050565b600160bf1b6001603f1b821615611da35768016a09e667f3bcc9090260401c5b6001603e1b821615611dbe576801306fe0a31b7152df0260401c5b6001603d1b821615611dd9576801172b83c7d517adce0260401c5b6001603c1b821615611df45768010b5586cf9890f62a0260401c5b6001603b1b821615611e0f576801059b0d31585743ae0260401c5b6001603a1b821615611e2a57680102c9a3e778060ee70260401c5b600160391b821615611e455768010163da9fb33356d80260401c5b600160381b821615611e6057680100b1afa5abcbed610260401c5b600160371b821615611e7b5768010058c86da1c09ea20260401c5b600160361b821615611e96576801002c605e2e8cec500260401c5b600160351b821615611eb157680100162f3904051fa10260401c5b600160341b821615611ecc576801000b175effdc76ba0260401c5b600160331b821615611ee757680100058ba01fb9f96d0260401c5b600160321b821615611f025768010002c5cc37da94920260401c5b600160311b821615611f1d576801000162e525ee05470260401c5b600160301b821615611f385768010000b17255775c040260401c5b6001602f1b821615611f53576801000058b91b5bc9ae0260401c5b6001602e1b821615611f6e57680100002c5c89d5ec6d0260401c5b6001602d1b821615611f895768010000162e43f4f8310260401c5b6001602c1b821615611fa457680100000b1721bcfc9a0260401c5b6001602b1b821615611fbf5768010000058b90cf1e6e0260401c5b6001602a1b821615611fda576801000002c5c863b73f0260401c5b600160291b821615611ff557680100000162e430e5a20260401c5b600160281b821615612010576801000000b1721835510260401c5b600160271b82161561202b57680100000058b90c0b490260401c5b600160261b8216156120465768010000002c5c8601cc0260401c5b600160251b821615612061576801000000162e42fff00260401c5b600160241b82161561207c5768010000000b17217fbb0260401c5b600160231b821615612097576801000000058b90bfce0260401c5b600160221b8216156120b257680100000002c5c85fe30260401c5b600160211b8216156120cd5768010000000162e42ff10260401c5b600160201b8216156120e857680100000000b17217f80260401c5b63800000008216156121035768010000000058b90bfc0260401c5b634000000082161561211e576801000000002c5c85fe0260401c5b632000000082161561213957680100000000162e42ff0260401c5b6310000000821615612154576801000000000b17217f0260401c5b630800000082161561216f57680100000000058b90c00260401c5b630400000082161561218a5768010000000002c5c8600260401c5b63020000008216156121a5576801000000000162e4300260401c5b63010000008216156121c05768010000000000b172180260401c5b628000008216156121da576801000000000058b90c0260401c5b624000008216156121f457680100000000002c5c860260401c5b6220000082161561220e5768010000000000162e430260401c5b6210000082161561222857680100000000000b17210260401c5b620800008216156122425768010000000000058b910260401c5b6204000082161561225c576801000000000002c5c80260401c5b6202000082161561227657680100000000000162e40260401c5b6201000082161561228f5761b172600160401b010260401c5b6180008216156122a7576158b9600160401b010260401c5b6140008216156122bf57612c5d600160401b010260401c5b6120008216156122d75761162e600160401b010260401c5b6110008216156122ef57610b17600160401b010260401c5b6108008216156123075761058c600160401b010260401c5b61040082161561231f576102c6600160401b010260401c5b61020082161561233757610163600160401b010260401c5b61010082161561234e5760b1600160401b010260401c5b6080821615612364576059600160401b010260401c5b604082161561237a57602c600160401b010260401c5b6020821615612390576016600160401b010260401c5b60108216156123a657600b600160401b010260401c5b60088216156123bc576006600160401b010260401c5b60048216156123d2576003600160401b010260401c5b60028216156123e8576001600160401b010260401c5b60018216156123fe576001600160401b010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b600080806000198587098587029250828110838203039150508060000361244f57838281612445576124456127de565b0492505050610a0d565b80841161245b57600080fd5b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000670de0b6b3a7640000610b5f8385612771565b80820361251e57835460018101855560008581526020908190208551918601516001600160601b0316600160a01b026001600160a01b0390921691909117910155612568565b82846000018381548110612534576125346127c8565b6000918252602091829020835193909201516001600160601b0316600160a01b026001600160a01b03909316929092179101555b5090516001600160a01b031660009081526001909201602052604090912055565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080518082019091526000808252602082015290565b600061012082840312156125e957600080fd5b50919050565b6000806000806000806101c0878903121561260957600080fd5b86359550602087013594506040870135935061262888606089016125d6565b92506101808701356001600160a01b038116811461264557600080fd5b809250506101a087013590509295509295509295565b60008060008060008060006101e0888a03121561267757600080fd5b8735965060208801359550604088013594506060880135935061269d8960808a016125d6565b92506101a088013591506101c0880135905092959891949750929550565b600080600083850360c08112156126d157600080fd5b84359350602085013592506080603f19820112156126ee57600080fd5b506040840190509250925092565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b2f57610b2f6126fc565b81810381811115610b2f57610b2f6126fc565b9283526020830191909152604082015260600190565b60006020828403121561276057600080fd5b813560ff81168114610a0d57600080fd5b8082028115828204841417610b2f57610b2f6126fc565b81810360008312801583831316838312821617156127a8576127a86126fc565b5092915050565b6000600182016127c1576127c16126fc565b5060010190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b600082612803576128036127de565b500490565b600082612817576128176127de565b500690565b634e487b7160e01b600052602160045260246000fd5b60006001600160601b038281166002600160601b03198101612856576128566126fc565b6001019392505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220637b015e4ceefe930d1fd9f184069ae9d80884ac061aa3d3559d0acf7ef35c7664736f6c63430008120033", + "from": "0xcD9C63CFEE8ad52e6ff0B7F6Cb8726933D0FFaa2", + "to": null, + "nonce": 2 + }, + { + "operationName": "LenderActions", + "address": "0xa593F8228a1f0e4acCcEb1C59E90b7047fFdD09D", + "data": "0x61295561003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100775760003560e01c80632f9fa1031461007c5780633806e8ef146100b657806350865720146100e657806380f2fcd014610115578063ba9784e814610135578063bf2980c714610163578063fd4682de14610183575b600080fd5b81801561008857600080fd5b5061009c6100973660046125f8565b6101a3565b604080519283526020830191909152015b60405180910390f35b8180156100c257600080fd5b506100d66100d136600461264c565b6103ed565b6040516100ad9493929190612691565b8180156100f257600080fd5b506101066101013660046126ac565b6108ea565b6040516100ad939291906126f1565b81801561012157600080fd5b5061009c610130366004612707565b610b31565b81801561014157600080fd5b50610155610150366004612742565b610b70565b6040519081526020016100ad565b81801561016f57600080fd5b5061015561017e366004612742565b610c23565b81801561018f57600080fd5b5061009c61019e366004612774565b610dca565b600080823581036101c75760405163162908e360e11b815260040160405180910390fd5b602083013515806101dd5750611cdc8360200135115b156101fb576040516363df817160e01b815260040160405180910390fd5b6020808401356000908152908790526040902060028101544281036102335760405163c1e4c5f760e01b815260040160405180910390fd5b6000610243888760200135610eee565b90506000610255898860200135610f9c565b90506000610263828461100f565b90506000610274896020013561104a565b9050883560006102888d60608e01356110b5565b90506000811580159061029e5750818c60200135115b905080156102d1576102ce836102b78f60e001356110cb565b6102c990670de0b6b3a764000061281e565b61100f565b92505b6102e889600101548a6000015487868860006110f1565b9a508a60000361030b5760405163955a8bf560e01b815260040160405180910390fd5b60006103178488611169565b90508060000361033a5760405163162908e360e11b815260040160405180910390fd5b6103498f8e6020013583611189565b6103558a8a338f611240565b8b8a60000160008282546103699190612831565b90915550829050610385576103828f8f606001356110b5565b92505b61038e8361104a565b9a508c60200135336001600160a01b03167f8b24a9808cf05d3d8e48ac09e4f649054994a88cfa657b3f4bf340b62137df1e868f8f6040516103d2939291906126f1565b60405180910390a35050505050505050505094509492505050565b60008060008084602001356000036104185760405163162908e360e11b815260040160405180910390fd5b604085013585350361043d576040516343c7e10b60e01b815260040160405180910390fd5b60208501351580159061045857508561010001358560200135105b15610476576040516345b3f65d60e01b815260040160405180910390fd5b6040850135158061048c5750611cdc8560400135115b156104aa576040516363df817160e01b815260040160405180910390fd5b600088600087604001358152602001908152602001600020905061053d604051806101e001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6002820154610100820181905242900361056a5760405163c1e4c5f760e01b815260040160405180910390fd5b8635600081815260208c815260408083203384526003810190925290912090916105939061104a565b8352600180830154602085015282546040808601919091529082015460808501526105c0908a013561104a565b60e08401526080830151600283015410156105dd57805460608401525b6106368b6040518060e001604052808c602001358152602001866060015181526020018660400151815260200186602001518152602001866000015181526020018c6000013581526020018d610100013581525061129b565b60c08601529850955061064d8b60608c0135611460565b9450848360000151101580156106665750848360e00151105b1561067f5761067c866102b78c60e001356110cb565b95505b61068d8b8a60400135610eee565b6101408401526106a18b60408b0135610f9c565b61018084018190526101408401516106b89161100f565b61016084018190526001850154855460e08601516106da93908a9060006110f1565b9650866000036106fd5760405163955a8bf560e01b815260040160405180910390fd5b61071a8b8a6040013561071589876101800151611169565b611189565b61072c89606001358b60a0013561100f565b6101c08401526040890135893510801561074a575084836101c00151115b156107685760405163444507e160e01b815260040160405180910390fd5b878360400151610778919061281e565b60a08401526020830151158015610791575060c0830151155b80156107a0575060a083015115155b156107dd576000825542600283015560a08301516040519081528935906000805160206129008339815191529060200160405180910390a26107fe565b878160000160008282546107f1919061281e565b909155505060a083015182555b336000908152600385016020526040902060018101546101208501819052610100850151106108465787815561010084015161083b906001612831565b610120850152610860565b8781600001600082825461085a9190612831565b90915550505b6108738460800151856101200151611474565b600182015584548890869060009061088c908490612831565b909155505060408051908b0135908b359033907f9d7ab6bb30c003ae7d5b583911db0ada7a9e51b0b4ac7ac1bb5e6896e82e4dbe906108d2908c908f908f908e90612691565b60405180910390a45050505050945094509450949050565b600080600083602001356000036109145760405163162908e360e11b815260040160405180910390fd5b83356000908152602088815260408083203384526003810183528184206001810154835160e081018552868152948501869052928401859052606084018590526080840185905260a0840185905260c08401949094529291818460020154101561098057825460208201525b80602001516000036109a557604051639b0e91e160e01b815260040160405180910390fd5b602088013581526109b6883561104a565b60808201528354604082015260018401546060820152873560a082015261010089013560c082015260006109ea8b8361129b565b919950975090506109ff8b60608c0135611460565b95506000610a158a604001358c60a0013561100f565b905086811180610a3b575060608b013515801590610a3b57506120008c01548b60600135115b15610a595760405163444507e160e01b815260040160405180910390fd5b6000888460400151610a6b919061281e565b905083606001516000148015610a7f575082155b8015610a8a57508015155b15610ac257600087554260028801556040518181528b35906000805160206129008339815191529060200160405180910390a2610adf565b88866000016000828254610ad6919061281e565b90915550508087555b6040518b359033907f0130a7b525bd6b1e72def1ee0b77f3467028a0e958e30174a0c95eb3860fc22190610b18908e908e908e906126f1565b60405180910390a3505050505050509450945094915050565b60008083600003610b555760405163162908e360e11b815260040160405180910390fd5b610b62878787878761148b565b915091509550959350505050565b600082600003610b935760405163162908e360e11b815260040160405180910390fd5b811580610ba15750611cdc82115b15610bbf576040516363df817160e01b815260040160405180910390fd5b6000610bcb858461169b565b90506000610bd88461104a565b6000858152602089905260409020909150610bf690338488856116b4565b925082600003610c195760405163955a8bf560e01b815260040160405180910390fd5b5050949350505050565b600082600003610c465760405163162908e360e11b815260040160405180910390fd5b6000828152602086905260409020600181015480851115610c7a57604051633a23d82560e01b815260040160405180910390fd5b6000610c858561104a565b83549091506000610c96898861169b565b9050610ca78483838b87600161173e565b955085600003610cca5760405163955a8bf560e01b815260040160405180910390fd5b3360009081526003860160205260408120600181015460028801549192911015610cf2575080545b801580610cfe57508088115b15610d1c5760405163955a8bf560e01b815260040160405180910390fd5b610d26888561281e565b935083158015610d34575082155b15610d3d578599505b610d478a8761281e565b60018801819055955085158015610d5c575082155b8015610d6757508315155b15610d9e576000875542600288015560405184815289906000805160206129008339815191529060200160405180910390a2610dbb565b87826000016000828254610db2919061281e565b90915550508387555b50505050505050949350505050565b60008080808087875b8887108015610de157508185105b15610e78578a8a86818110610df857610df8612844565b90506020020135935087841115610e22576040516339cf269160e21b815260040160405180910390fd5b610e308d8d6001848861148b565b5092506000839003610e555760405163162908e360e11b815260040160405180910390fd5b610e5f8388612831565b9650610e6b838261281e565b9050846001019450610dd3565b888714610ede576000610e8b8d8a61169b565b90506000610e988a61104a565b9050610eb88f60008c815260200190815260200160002033848c856116b4565b975087600003610edb5760405163955a8bf560e01b815260040160405180910390fd5b50505b5050505050965096945050505050565b6000610ef98261285a565b9150600183836120018110610f1057610f10612844565b0154915060008060005b858416600003610f9257610f2e848761281e565b925086836120018110610f4357610f43612844565b015491508661200101836120018110610f5e57610f5e612844565b0154905080600003610f705781610f7a565b610f7a818361100f565b610f84908661281e565b9450600184901b9350610f1a565b5050505092915050565b6000610fa78261285a565b9150670de0b6b3a764000090505b61200082116110095760008361200101836120018110610fd757610fd7612844565b015490508015610fee57610feb828261100f565b91505b610ff783611782565b6110019084612831565b925050610fb5565b92915050565b6000670de0b6b3a7640000611025600282612889565b61102f84866128ab565b6110399190612831565b6110439190612889565b9392505050565b6000806110598361103c6128c2565b9050610c9f1981128061106d575061103c81135b1561108b57604051637edf443b60e11b815260040160405180910390fd5b6110436110b061109a836117a3565b6110ab670df27a2cdf448000611833565b611917565b6119dc565b60006110c18383611a73565b5090949350505050565b60006110096110e3836813c9647e25a9940000611169565b67016345785d8a0000611b63565b6000841580156110ff575086155b1561110b57508261115f565b8560000361111a57508261115f565b61115c86611130670de0b6b3a7640000876128ab565b61113a868b6128ab565b61114c670de0b6b3a76400008a6128ab565b6111569190612831565b85611b73565b90505b9695505050505050565b600081611177600282612889565b61102f670de0b6b3a7640000866128ab565b6111928261285a565b915060008060005b612000851161123857858561200181106111b6576111b6612844565b0154925085612001018561200181106111d1576111d1612844565b015491506111df8484612831565b90508115611208576111f1838361100f565b6111fb828461100f565b611205919061281e565b93505b808686612001811061121c5761121c612844565b015561122785611782565b6112319086612831565b945061119a565b505050505050565b8015611295576001600160a01b03821660009081526003850160205260409020600181015484106112735781815561128d565b818160000160008282546112879190612831565b90915550505b426001909101555b50505050565b6000806000806112af868660a00151610eee565b9050806000036112d25760405163bb55fd2760e01b815260040160405180910390fd5b60006112e2878760a00151610f9c565b905060006112f0838361100f565b9050600061131388606001518960400151848b602001518c608001516000611bd0565b9050600082896000015110801561132a5750885182115b15611374578860000151975061135189606001518a60400151858b8d6080015160016110f1565b9650611361878a60200151611b63565b965061136d8885611169565b90506113e5565b818310156113b45782975061139a89606001518a60400151858b8d6080015160016110f1565b96506113aa878a60200151611b63565b96508490506113e5565b886020015196506113d689606001518a60400151858a8d608001516000611bd0565b97506113e28885611169565b90505b886040015187036113f7578297508490505b611401818661281e565b9550866000036114245760405163955a8bf560e01b815260040160405180910390fd5b806000036114455760405163162908e360e11b815260040160405180910390fd5b6114548a8a60a0015183611c35565b50505050509250925092565b600061104361146f84846110b5565b61104a565b6000818310156114845781611043565b5090919050565b600081815260208690526040812060018101548291908083036114c157604051633a23d82560e01b815260040160405180910390fd5b33600090815260038301602052604081206001810154600285015491929110156114e9575080545b8060000361150a57604051639b0e91e160e01b815260040160405180910390fd5b60006115158861104a565b855490915060006115268d8b61169b565b90506115328b87611b63565b985060006115458784848d88600161173e565b9050806000036115685760405163955a8bf560e01b815260040160405180910390fd5b848111611577578098506115a8565b849850611585858b83611ce6565b9950896000036115a85760405163955a8bf560e01b815260040160405180910390fd5b6115b2838a611b63565b6115bc908461281e565b9250821580156115ca575081155b156115d3578699505b6115dd878b611b63565b99506115e98a8861281e565b965086158015906115f957508c87105b15611617576040516345b3f65d60e01b815260040160405180910390fd5b600188018790558615801561162a575081155b801561163557508215155b1561166c57600088554260028901556040518381528b906000805160206129008339815191529060200160405180910390a2611689565b88866000016000828254611680919061281e565b90915550508288555b50505050505050509550959350505050565b60006110436116aa8484610eee565b6102c98585610f9c565b60028501546000904281036116dc5760405163c1e4c5f760e01b815260040160405180910390fd5b6116f387600101548860000154878787600061173e565b9150838760010160008282546117099190612831565b9091555050865482908890600090611722908490612831565b90915550611734905087828885611240565b5095945050505050565b60008415801561174c575086155b156117625761175b848461100f565b905061115f565b856000036117745761175b848461100f565b61115c8661113085876128ab565b6000811561179e5761179960001983186001612831565b821690505b919050565b60007809392ee8e921d5d073aff322e62439fcf32d7f344649470f8f198212156117e85760405163e608e18b60e01b8152600481018390526024015b60405180910390fd5b7809392ee8e921d5d073aff322e62439fcf32d7f344649470f90821315611825576040516371f72a3160e01b8152600481018390526024016117df565b50670de0b6b3a76400000290565b60008082136118585760405163309fa7dd60e11b8152600481018390526024016117df565b6000670de0b6b3a764000083126118715750600161188a565b6000199050826a0c097ce7bc90715b34b9f160241b0492505b600061189f670de0b6b3a76400008505611d94565b670de0b6b3a764000081029350905083811d670de0b6b3a763ffff1981016118c957505002919050565b6706f05b59d3b200005b600081131561190e57670de0b6b3a7640000828002059150671bc16d674ec800008212611906579384019360019190911d905b60011d6118d3565b50505002919050565b6000600160ff1b83148061192e5750600160ff1b82145b1561194c57604051630d01a11b60e21b815260040160405180910390fd5b6000806000851261195d5784611962565b846000035b9150600084126119725783611977565b836000035b905060006119858383611e72565b90506001600160ff1b038111156119b25760405163bf79e8d960e01b8152600481018290526024016117df565b6000198087139086138082186001146119cb57826119d0565b826000035b98975050505050505050565b600080821215611a2f5768033dd1780914b9711419821215611a0057506000919050565b611a0c826000036119dc565b6a0c097ce7bc90715b34b9f160241b81611a2857611a28612873565b0592915050565b680a688906bd8b0000008212611a5b5760405163e69458f960e01b8152600481018390526024016117df565b670de0b6b3a7640000604083901b0461104381611f38565b60008080611000670de0b6b3a764000082808080805b8615611b5557611a99878b612831565b93508b846120018110611aae57611aae612844565b015492508b61200101846120018110611ac957611ac9612844565b0154915081600003611ae457611adf868461100f565b611b06565b611b06611af183886128ab565b846a0c097ce7bc90715b34b9f160241b611ce6565b611b109086612831565b90508a811015611b2f57611cdc8411611b2a578399508094505b611b49565b8115611b4257611b3f86836125ca565b95505b8098508597505b600187901c9650611a89565b505050505050509250925092565b6000818311156114845781611043565b600080611b81868686611ce6565b90506001836002811115611b9757611b976128e9565b148015611bb4575060008480611baf57611baf612873565b868809115b15611bc757611bc4600182612831565b90505b95945050505050565b600084158015611bde575086155b15611bea57508261115f565b85600003611bf957508261115f565b61115c611c0684896128ab565b611c18670de0b6b3a7640000886128ab565b611c229190612831565b85611156670de0b6b3a76400008a6128ab565b611c3e8261285a565b91505b6120008211611ce15760008184846120018110611c6057611c60612844565b016000828254611c70919061281e565b925050819055905060008461200101846120018110611c9157611c91612844565b015490508015611cc557611ca5828261100f565b611cb8611cb28585612831565b8361100f565b611cc2919061281e565b92505b611cce84611782565b611cd89085612831565b93505050611c41565b505050565b6000808060001985870985870292508281108382030391505080600003611d2057838281611d1657611d16612873565b0492505050611043565b808411611d2c57600080fd5b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000600160801b8210611db457608091821c91611db19082612831565b90505b600160401b8210611dd257604091821c91611dcf9082612831565b90505b600160201b8210611df057602091821c91611ded9082612831565b90505b620100008210611e0d57601091821c91611e0a9082612831565b90505b6101008210611e2957600891821c91611e269082612831565b90505b60108210611e4457600491821c91611e419082612831565b90505b60048210611e5f57600291821c91611e5c9082612831565b90505b6002821061179e57611009600182612831565b60008080600019848609848602925082811083820303915050670de0b6b3a76400008110611eb65760405163698d9a0160e11b8152600481018290526024016117df565b600080670de0b6b3a764000086880991506706f05b59d3b1ffff8211905082600003611ef45780670de0b6b3a7640000850401945050505050611009565b620400008285030493909111909103600160ee1b02919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690201905092915050565b600160bf1b6001603f1b821615611f585768016a09e667f3bcc9090260401c5b6001603e1b821615611f73576801306fe0a31b7152df0260401c5b6001603d1b821615611f8e576801172b83c7d517adce0260401c5b6001603c1b821615611fa95768010b5586cf9890f62a0260401c5b6001603b1b821615611fc4576801059b0d31585743ae0260401c5b6001603a1b821615611fdf57680102c9a3e778060ee70260401c5b600160391b821615611ffa5768010163da9fb33356d80260401c5b600160381b82161561201557680100b1afa5abcbed610260401c5b600160371b8216156120305768010058c86da1c09ea20260401c5b600160361b82161561204b576801002c605e2e8cec500260401c5b600160351b82161561206657680100162f3904051fa10260401c5b600160341b821615612081576801000b175effdc76ba0260401c5b600160331b82161561209c57680100058ba01fb9f96d0260401c5b600160321b8216156120b75768010002c5cc37da94920260401c5b600160311b8216156120d2576801000162e525ee05470260401c5b600160301b8216156120ed5768010000b17255775c040260401c5b6001602f1b821615612108576801000058b91b5bc9ae0260401c5b6001602e1b82161561212357680100002c5c89d5ec6d0260401c5b6001602d1b82161561213e5768010000162e43f4f8310260401c5b6001602c1b82161561215957680100000b1721bcfc9a0260401c5b6001602b1b8216156121745768010000058b90cf1e6e0260401c5b6001602a1b82161561218f576801000002c5c863b73f0260401c5b600160291b8216156121aa57680100000162e430e5a20260401c5b600160281b8216156121c5576801000000b1721835510260401c5b600160271b8216156121e057680100000058b90c0b490260401c5b600160261b8216156121fb5768010000002c5c8601cc0260401c5b600160251b821615612216576801000000162e42fff00260401c5b600160241b8216156122315768010000000b17217fbb0260401c5b600160231b82161561224c576801000000058b90bfce0260401c5b600160221b82161561226757680100000002c5c85fe30260401c5b600160211b8216156122825768010000000162e42ff10260401c5b600160201b82161561229d57680100000000b17217f80260401c5b63800000008216156122b85768010000000058b90bfc0260401c5b63400000008216156122d3576801000000002c5c85fe0260401c5b63200000008216156122ee57680100000000162e42ff0260401c5b6310000000821615612309576801000000000b17217f0260401c5b630800000082161561232457680100000000058b90c00260401c5b630400000082161561233f5768010000000002c5c8600260401c5b630200000082161561235a576801000000000162e4300260401c5b63010000008216156123755768010000000000b172180260401c5b6280000082161561238f576801000000000058b90c0260401c5b624000008216156123a957680100000000002c5c860260401c5b622000008216156123c35768010000000000162e430260401c5b621000008216156123dd57680100000000000b17210260401c5b620800008216156123f75768010000000000058b910260401c5b62040000821615612411576801000000000002c5c80260401c5b6202000082161561242b57680100000000000162e40260401c5b620100008216156124445761b172600160401b010260401c5b61800082161561245c576158b9600160401b010260401c5b61400082161561247457612c5d600160401b010260401c5b61200082161561248c5761162e600160401b010260401c5b6110008216156124a457610b17600160401b010260401c5b6108008216156124bc5761058c600160401b010260401c5b6104008216156124d4576102c6600160401b010260401c5b6102008216156124ec57610163600160401b010260401c5b6101008216156125035760b1600160401b010260401c5b6080821615612519576059600160401b010260401c5b604082161561252f57602c600160401b010260401c5b6020821615612545576016600160401b010260401c5b601082161561255b57600b600160401b010260401c5b6008821615612571576006600160401b010260401c5b6004821615612587576003600160401b010260401c5b600282161561259d576001600160401b010260401c5b60018216156125b3576001600160401b010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b6000670de0b6b3a764000061103983856128ab565b600061012082840312156125f257600080fd5b50919050565b6000806000808486036101a081121561261057600080fd5b853594506020860135935061262887604088016125df565b9250604061015f198201121561263d57600080fd5b50929591945092610160019150565b6000806000808486036101e081121561266457600080fd5b853594506020860135935061267c87604088016125df565b9250608061015f198201121561263d57600080fd5b93845260208401929092526040830152606082015260800190565b6000806000808486036101c08112156126c457600080fd5b85359450602086013593506126dc87604088016125df565b9250606061015f198201121561263d57600080fd5b9283526020830191909152604082015260600190565b600080600080600060a0868803121561271f57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806000806080858703121561275857600080fd5b5050823594602084013594506040840135936060013592509050565b60008060008060008060a0878903121561278d57600080fd5b863595506020870135945060408701356001600160401b03808211156127b257600080fd5b818901915089601f8301126127c657600080fd5b8135818111156127d557600080fd5b8a60208260051b85010111156127ea57600080fd5b979a9699505060200196606081013595608090910135945092505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561100957611009612808565b8082018082111561100957611009612808565b634e487b7160e01b600052603260045260246000fd5b60006001820161286c5761286c612808565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826128a657634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761100957611009612808565b81810360008312801583831316838312821617156128e2576128e2612808565b5092915050565b634e487b7160e01b600052602160045260246000fdfe30ee43613aaa48d222b158aab1123c5a29d452f8b1a849e5f815dd355923ba85a264697066735822122020d561819e833f0a99b6762f27ff69b4ade2f8897912c3f31d7267a91efc48de64736f6c63430008120033", + "from": "0xcD9C63CFEE8ad52e6ff0B7F6Cb8726933D0FFaa2", + "to": null, + "nonce": 3 + }, + { + "operationName": "SettlerActions", + "address": "0x42198b61C30Db50bD39FA1e7D5422F09df6b4A06", + "data": "0x61243661003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063e47aaa311461003a575b600080fd5b81801561004657600080fd5b5061005a610055366004612191565b6100af565b6040516100a69190600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b60405180910390f35b6100e86040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81516001600160a01b031660009081526003890160205260408120600101546001600160601b031690819003610131576040516338e806f160e11b815260040160405180910390fd5b82516001600160a01b031660009081526002808801602090815260409283902083516060810185528154815260018201549281019290925290910154918101919091526203f4806101828342612286565b1080156101925750602081015115155b156101b0576040516320560ae760e21b815260040160405180910390fd5b805183526020810180516040850152815160a080860191909152905160808501526101e5908a908a90879085908a01356103e4565b6020878101919091528301528082521580159061020457506020810151155b156102e6576000846040015161024083600001518660a00151896020013561022c9190612286565b6102369190612299565b8860a00135610716565b61024a9190612299565b9050600087600101548c60020154610275670de0b6b3e2feca006102708e612000015490565b61073e565b61027f9190612299565b6102899190612299565b9050808211156102c85782516102b5906102b06102a68486612286565b8a60a00135610768565b61077d565b835184906102c4908390612286565b9052505b8251156102e3576102e08b8b88868b60a00135610794565b83525b50505b805160a0840180516102f9908390612286565b905250835160a08401516040519081526001600160a01b03909116907fa3788eedc10ef3ec6982384227c562c6666cf2b6af4f6a583b6d5d0f2ba0d2049060200160405180910390a28051600003610379578351602080830151610372928d928d928d929161036a908c018c6122ac565b60ff166108e4565b5060208201525b80516020808501919091528101516060840181905260808401805161039f908390612286565b90525092516001600160a01b03166000908152600296870160209081526040918290208551815590850151600182015593015192909501919091559695505050505050565b8151602080840151908501515b80158015906103ff57508215155b801561040a57508115155b1561070b5761046c60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610477886001610a74565b6101208401525060a08201819052610490908990610b64565b6060820181905261014082015260a08101516104ab90610c12565b60e0820152610140810151156106ce576104c5848661073e565b602082015260e08101516104da908490610716565b60c08201526101208101516101408201516104f5919061073e565b6101008201819052602082015111801590610518575080602001518160c0015110155b15610555576105308160200151826101200151610c84565b610140820152602081015160e082015161054a9190610ca4565b8152600093506105d3565b8061010001518160c001511061059b576105788161010001518260e00151610ca4565b815261010081015161058a9086610768565b6105949085612286565b93506105d3565b6105ae8160c00151826101200151610c84565b61014082015282815260c08101516105c69086610768565b6105d09085612286565b93505b80516105df9084612286565b60a0820151600090815260208b9052604090208054608084015282516001820154929550909161060f9190612299565b60408301526060820151610140830151610629919061077d565b6101408301819052606083018051610642908390612286565b90525060a082015161014083015161065b918b91610cd0565b604082015115801561066f57506060820151155b801561067e5750608082015115155b156106bd576000815542600282015560a082015160808301516040519081526000805160206123e18339815191529060200160405180910390a26106c8565b604082015160018201555b506106fa565b60a0810151600090815260208a905260408120885160e08401516106f493908790610d81565b50600092505b610703826122cf565b9150506103f1565b955095509592505050565b6000670de0b6b3a764000061072b83856122e6565b6107359190612313565b90505b92915050565b6000670de0b6b3a7640000610754600282612313565b61075e84866122e6565b61072b9190612299565b60008161072b670de0b6b3a7640000856122e6565b60008183111561078d5781610735565b5090919050565b81515b6020840151158015906107a957508015155b156108db576000806107bc876001610a74565b925050915060006107cd8884610b64565b905060006107db838361073e565b905060006107e9868861073e565b90506000818310610823576000965060006108048387610c84565b90506108108186612286565b915061081d8c8883610cd0565b50610844565b61082d8389610768565b6108379088612286565b96506108448b8786610cd0565b600086815260208d90526040902080548061085e89610c12565b836001015461086d91906122e6565b61087f670de0b6b3a7640000866122e6565b6108899190612299565b116108bc576000825542600283015560405181815288906000805160206123e18339815191529060200160405180910390a25b8b60200180516108cb906122cf565b9052506107979650505050505050565b95945050505050565b6000806000198301610a1857600080670de0b6b3a76400006109068188612313565b61091091906122e6565b93508584146109c5576109238487612286565b6001600160a01b03881660009081526003808d01602052604082206002810154918101546001909101549396509192610973926001600160601b0392831692600160a01b90910481169116610e0b565b905064173eb4c80a811161098957611cdc610992565b61099281610ea4565b600081815260208c9052604090209092506109c190896109b28c86610f6e565b876109bc87610c12565b610d81565b9250505b60408051858152602081018490529081018290526001600160a01b038816907fddd6b496b84171d179d9874158b1cbbe422dd482e5523f1b09cb69ebef2878419060600160405180910390a25050610a5f565b839150846001600160a01b03167f91a9dcdd01df8b934f14307641e884e0ea6e414bf05fe8daf8c74a28f69b55ee83604051610a5691815260200190565b60405180910390a25b610a698886610f87565b965096945050505050565b60008080611000670de0b6b3a764000082808080805b8615610b5657610a9a878b612299565b93508b846120018110610aaf57610aaf612335565b015492508b61200101846120018110610aca57610aca612335565b0154915081600003610ae557610ae0868461073e565b610b07565b610b07610af283886122e6565b846a0c097ce7bc90715b34b9f160241b611281565b610b119086612299565b90508a811015610b3057611cdc8411610b2b578399508094505b610b4a565b8115610b4357610b408683610716565b95505b8098508597505b600187901c9650610a8a565b505050505050509250925092565b6000610b6f82612361565b9150600183836120018110610b8657610b86612335565b0154915060008060005b858416600003610c0857610ba48487612286565b925086836120018110610bb957610bb9612335565b015491508661200101836120018110610bd457610bd4612335565b0154905080600003610be65781610bf0565b610bf0818361073e565b610bfa9086612286565b9450600184901b9350610b90565b5050505092915050565b600080610c218361103c61237a565b9050610c9f19811280610c35575061103c81135b15610c5357604051637edf443b60e11b815260040160405180910390fd5b610c7d610c78610c628361132f565b610c73670df27a2cdf4480006113bf565b6114a3565b611568565b9392505050565b600081610c92600282612313565b61075e670de0b6b3a7640000866122e6565b600081600181610cbc670de0b6b3a7640000876122e6565b610cc69190612299565b61072b9190612286565b610cd982612361565b91505b6120008211610d7c5760008184846120018110610cfb57610cfb612335565b016000828254610d0b9190612286565b925050819055905060008461200101846120018110610d2c57610d2c612335565b015490508015610d6057610d40828261073e565b610d53610d4d8585612299565b8361073e565b610d5d9190612286565b92505b610d6984611604565b610d739085612299565b93505050610cdc565b505050565b6002850154600090428103610da95760405163c1e4c5f760e01b815260040160405180910390fd5b610dc0876001015488600001548787876000611623565b915083876001016000828254610dd69190612299565b9091555050865482908890600090610def908490612299565b90915550610e019050878288856116a0565b5095945050505050565b600080610e3c610e1b8442612286565b610e2d90670de0b6b3a76400006122e6565b68c328093e61ee400000610c84565b9050610e5081670de0b6b3a764000061077d565b610e5a9082612286565b90506000610e71670de0b6b3a763ffff19836114a3565b90506000610e7f87876116fb565b9050610e8e8161027084611568565b610e999060206122e6565b979650505050505050565b600064173eb4c80a821080610ec457506b033f4a75fb6ff29166751a4b82115b15610ee257604051635665ba4560e11b815260040160405180910390fd5b6000610f06610ef0846113bf565b610f01670df27a2cdf4480006113bf565b61170b565b90506000610f13826117d1565b9050600082128015610f3557506706f05b59d3b20000610f33838361237a565b135b15610f5857610f50670de0b6b3a7640000820561103d61237a565b949350505050565b610f50670de0b6b3a7640000820561103c61237a565b6000610735610f7d8484610b64565b6102708585611843565b6001600160a01b03808216600090815260038085016020908152604080842081516101208101835281548088168083526001600160601b03600160a01b9283900481168488015260018086015480831686890152600160601b908190048c16606087015260028701548084166080880152048b1660a086015297850154808b1660c086019081529390041660e084015260049384015460ff1615156101008401528752918901909352908420905192810180549295919493909116929091611050908490612286565b925050819055508160c001516001600160a01b03168160000160008282546110789190612299565b909155505083548490600090611096906001600160601b03166123a1565b82546001600160601b039182166101009390930a92830291909202199091161790558354600160601b90046001600160a01b039081169084161480156110eb575060018401546001600160a01b038481169116145b156111145783546001600160601b031684556001840180546001600160a01b0319169055611243565b83546001600160a01b03808516600160601b90920416036111795760a0820180516001600160a01b039081166000908152600387016020526040902060010180546001600160601b03908116909155915186549116600160601b029116178455611243565b60018401546001600160a01b038085169116036111df576060820180516001600160a01b039081166000908152600387016020526040902060020180546001600160601b0316905590516001860180546001600160a01b03191691909216179055611243565b60a0820180516060840180516001600160a01b03908116600090815260038901602052604080822060020180546001600160601b03908116600160601b97861688021790915593519551831682529020600101805490921693169091029190911790555b50506001600160a01b03166000908152600391820160205260408120818155600181018290556002810182905591820155600401805460ff19169055565b60008080600019858709858702925082811083820303915050806000036112bb578382816112b1576112b16122fd565b0492505050610c7d565b8084116112c757600080fd5b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b60007809392ee8e921d5d073aff322e62439fcf32d7f344649470f8f198212156113745760405163e608e18b60e01b8152600481018390526024015b60405180910390fd5b7809392ee8e921d5d073aff322e62439fcf32d7f344649470f908213156113b1576040516371f72a3160e01b81526004810183905260240161136b565b50670de0b6b3a76400000290565b60008082136113e45760405163309fa7dd60e11b81526004810183905260240161136b565b6000670de0b6b3a764000083126113fd57506001611416565b6000199050826a0c097ce7bc90715b34b9f160241b0492505b600061142b670de0b6b3a764000085056118b0565b670de0b6b3a764000081029350905083811d670de0b6b3a763ffff19810161145557505002919050565b6706f05b59d3b200005b600081131561149a57670de0b6b3a7640000828002059150671bc16d674ec800008212611492579384019360019190911d905b60011d61145f565b50505002919050565b6000600160ff1b8314806114ba5750600160ff1b82145b156114d857604051630d01a11b60e21b815260040160405180910390fd5b600080600085126114e957846114ee565b846000035b9150600084126114fe5783611503565b836000035b90506000611511838361198e565b90506001600160ff1b0381111561153e5760405163bf79e8d960e01b81526004810182905260240161136b565b600019808713908613808218600114611557578261155c565b826000035b98975050505050505050565b6000808212156115bb5768033dd1780914b971141982121561158c57506000919050565b61159882600003611568565b6a0c097ce7bc90715b34b9f160241b816115b4576115b46122fd565b0592915050565b680a688906bd8b00000082126115e75760405163e69458f960e01b81526004810183905260240161136b565b670de0b6b3a7640000604083901b04610c7d81611a54565b919050565b600081156115ff5761161b60001983186001612299565b909116919050565b600084158015611631575086155b1561164757611640848461073e565b9050611696565b8560000361165957611640848461073e565b6116938661166785876122e6565b611671868b6122e6565b611683670de0b6b3a76400008a6122e6565b61168d9190612299565b856120e6565b90505b9695505050505050565b80156116f5576001600160a01b03821660009081526003850160205260409020600181015484106116d3578181556116ed565b818160000160008282546116e79190612299565b90915550505b426001909101555b50505050565b60008183101561078d5781610735565b6000600160ff1b8314806117225750600160ff1b82145b156117405760405163b3c754a360e01b815260040160405180910390fd5b600080600085126117515784611756565b846000035b915060008412611766578361176b565b836000035b9050600061178283670de0b6b3a764000084612137565b90506001600160ff1b038111156117af57604051637cb4bef560e01b81526004810182905260240161136b565b6000198087139086138082186001146117c8578261155c565b61155c836123c4565b6000670afdc366fbc00000600160ff1b0382131561180557604051635399a28560e11b81526004810183905260240161136b565b670de0b6b3a7640000820760008190036118215782915061183d565b8083039150600083131561183d57670de0b6b3a7640000820191505b50919050565b600061184e82612361565b9150670de0b6b3a764000090505b6120008211610738576000836120010183612001811061187e5761187e612335565b01549050801561189557611892828261073e565b91505b61189e83611604565b6118a89084612299565b92505061185c565b6000600160801b82106118d057608091821c916118cd9082612299565b90505b600160401b82106118ee57604091821c916118eb9082612299565b90505b600160201b821061190c57602091821c916119099082612299565b90505b62010000821061192957601091821c916119269082612299565b90505b610100821061194557600891821c916119429082612299565b90505b6010821061196057600491821c9161195d9082612299565b90505b6004821061197b57600291821c916119789082612299565b90505b600282106115ff57610738600182612299565b60008080600019848609848602925082811083820303915050670de0b6b3a764000081106119d25760405163698d9a0160e11b81526004810182905260240161136b565b600080670de0b6b3a764000086880991506706f05b59d3b1ffff8211905082600003611a105780670de0b6b3a7640000850401945050505050610738565b620400008285030493909111909103600160ee1b02919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690201905092915050565b600160bf1b6001603f1b821615611a745768016a09e667f3bcc9090260401c5b6001603e1b821615611a8f576801306fe0a31b7152df0260401c5b6001603d1b821615611aaa576801172b83c7d517adce0260401c5b6001603c1b821615611ac55768010b5586cf9890f62a0260401c5b6001603b1b821615611ae0576801059b0d31585743ae0260401c5b6001603a1b821615611afb57680102c9a3e778060ee70260401c5b600160391b821615611b165768010163da9fb33356d80260401c5b600160381b821615611b3157680100b1afa5abcbed610260401c5b600160371b821615611b4c5768010058c86da1c09ea20260401c5b600160361b821615611b67576801002c605e2e8cec500260401c5b600160351b821615611b8257680100162f3904051fa10260401c5b600160341b821615611b9d576801000b175effdc76ba0260401c5b600160331b821615611bb857680100058ba01fb9f96d0260401c5b600160321b821615611bd35768010002c5cc37da94920260401c5b600160311b821615611bee576801000162e525ee05470260401c5b600160301b821615611c095768010000b17255775c040260401c5b6001602f1b821615611c24576801000058b91b5bc9ae0260401c5b6001602e1b821615611c3f57680100002c5c89d5ec6d0260401c5b6001602d1b821615611c5a5768010000162e43f4f8310260401c5b6001602c1b821615611c7557680100000b1721bcfc9a0260401c5b6001602b1b821615611c905768010000058b90cf1e6e0260401c5b6001602a1b821615611cab576801000002c5c863b73f0260401c5b600160291b821615611cc657680100000162e430e5a20260401c5b600160281b821615611ce1576801000000b1721835510260401c5b600160271b821615611cfc57680100000058b90c0b490260401c5b600160261b821615611d175768010000002c5c8601cc0260401c5b600160251b821615611d32576801000000162e42fff00260401c5b600160241b821615611d4d5768010000000b17217fbb0260401c5b600160231b821615611d68576801000000058b90bfce0260401c5b600160221b821615611d8357680100000002c5c85fe30260401c5b600160211b821615611d9e5768010000000162e42ff10260401c5b600160201b821615611db957680100000000b17217f80260401c5b6380000000821615611dd45768010000000058b90bfc0260401c5b6340000000821615611def576801000000002c5c85fe0260401c5b6320000000821615611e0a57680100000000162e42ff0260401c5b6310000000821615611e25576801000000000b17217f0260401c5b6308000000821615611e4057680100000000058b90c00260401c5b6304000000821615611e5b5768010000000002c5c8600260401c5b6302000000821615611e76576801000000000162e4300260401c5b6301000000821615611e915768010000000000b172180260401c5b62800000821615611eab576801000000000058b90c0260401c5b62400000821615611ec557680100000000002c5c860260401c5b62200000821615611edf5768010000000000162e430260401c5b62100000821615611ef957680100000000000b17210260401c5b62080000821615611f135768010000000000058b910260401c5b62040000821615611f2d576801000000000002c5c80260401c5b62020000821615611f4757680100000000000162e40260401c5b62010000821615611f605761b172600160401b010260401c5b618000821615611f78576158b9600160401b010260401c5b614000821615611f9057612c5d600160401b010260401c5b612000821615611fa85761162e600160401b010260401c5b611000821615611fc057610b17600160401b010260401c5b610800821615611fd85761058c600160401b010260401c5b610400821615611ff0576102c6600160401b010260401c5b61020082161561200857610163600160401b010260401c5b61010082161561201f5760b1600160401b010260401c5b6080821615612035576059600160401b010260401c5b604082161561204b57602c600160401b010260401c5b6020821615612061576016600160401b010260401c5b601082161561207757600b600160401b010260401c5b600882161561208d576006600160401b010260401c5b60048216156120a3576003600160401b010260401c5b60028216156120b9576001600160401b010260401c5b60018216156120cf576001600160401b010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b6000806120f4868686611281565b9050600183600281111561210a5761210a61234b565b148015612127575060008480612122576121226122fd565b868809115b156108db57611696600182612299565b6000808060001985870985870292508281108382030391505080600003612167578382816112b1576112b16122fd565b8381106112c757604051631dcf306360e21b8152600481018290526024810185905260440161136b565b60008060008060008060008789036102208112156121ae57600080fd5b8835975060208901359650604089013595506060890135945060808901359350610120609f19820112156121e157600080fd5b60a08901925060606101bf19820112156121fa57600080fd5b50604051606081016001600160401b038111828210171561222b57634e487b7160e01b600052604160045260246000fd5b6040526101c08901356001600160a01b038116811461224957600080fd5b81526101e08901356020820152610200909801356040890152509497939650919490939192565b634e487b7160e01b600052601160045260246000fd5b8181038181111561073857610738612270565b8082018082111561073857610738612270565b6000602082840312156122be57600080fd5b813560ff81168114610c7d57600080fd5b6000816122de576122de612270565b506000190190565b808202811582820484141761073857610738612270565b634e487b7160e01b600052601260045260246000fd5b60008261233057634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60006001820161237357612373612270565b5060010190565b818103600083128015838313168383128216171561239a5761239a612270565b5092915050565b60006001600160601b038216806123ba576123ba612270565b6000190192915050565b6000600160ff1b82016123d9576123d9612270565b506000039056fe30ee43613aaa48d222b158aab1123c5a29d452f8b1a849e5f815dd355923ba85a26469706673582212203eb5afc038d99c23c54336afa74283f278e014ca1b37ea0b9c967c2d0da5403b64736f6c63430008120033", + "from": "0xcD9C63CFEE8ad52e6ff0B7F6Cb8726933D0FFaa2", + "to": null, + "nonce": 4 + }, + { + "operationName": "TakerActions", + "address": "0x14912c49CF9ee1AbdFEc50D067ef083b34423Aa4", + "data": "0x613b0061003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004b5760003560e01c80630f4a0c2d146100505780632f39ec5c14610086578063db04b0f3146100a6575b600080fd5b81801561005c57600080fd5b5061007061006b366004613759565b6100db565b60405161007d91906137ca565b60405180910390f35b81801561009257600080fd5b506100706100a136600461387e565b610330565b8180156100b257600080fd5b506100c66100c1366004613900565b610511565b6040805192835260208301919091520161007d565b6100e361355c565b826000036101045760405163162908e360e11b815260040160405180910390fd5b6001600160a01b03841660009081526002808801602090815260409283902083516060810185528154815260018083015493820193909352920154928201929092529060ff16866000015160ff1614801561016a5750670de0b6b3a76400008160200151105b806101845750855160ff1615801561018457506020810151155b156101a257604051633a23d82560e01b815260040160405180910390fd5b80516101608301526020808201516101a08401526040805160a080820183526001600160a01b03891682529281018790529188015190820152865160ff166060820152608081018490526000906101fc908c908490610640565b90508060c0015182602001818151610214919061394e565b9052506101808101516101a082015161022d919061394e565b82526101c0810151602088018051610246908390613961565b90525061018081015160208801805161026090839061394e565b905250602087015160a08801516102779190610841565b606088015261028b8b8b8b8b8b878c61087e565b60208088019190915260a087019190915290151561014086018190526101008601929092528351610180860152838101516101c0808701919091529089015160e0808701919091526060808b015160c08089019190915285015187529184015191860191909152610160830151604086015282015160808501526103145780610180015161031b565b806101a001515b61012084015250909998505050505050505050565b61033861355c565b6001600160a01b038516600090815260028089016020908152604080842081516060810183528154815260018201549381018490529301549083015290910361039457604051633a23d82560e01b815260040160405180910390fd5b8060000151826101600181815250508060200151826101a001818152505060006103f68c8c8c856040518060a001604052808d6001600160a01b031681526020018c151581526020018b81526020018e60a0015181526020018a815250610933565b90508060c001518260200181815161040e919061394e565b9052506101808101516101a0820151610427919061394e565b82526101c0810151602089018051610440908390613961565b90525061018081015160208901805161045a90839061394e565b905250602088015160a08901516104719190610841565b60608901526104858c8c8c8c8c878d61087e565b60208088019190915260a087019190915290151561014086018190526101008601929092528351610180860152838101516101c080870191909152908a015160e08601526060808b015160c080880191909152840151865290830151908501526104f4578061018001516104fb565b806101a001515b61012084015250909a9950505050505050505050565b600080826000036105355760405163162908e360e11b815260040160405180910390fd5b8354801580159061055257506203f48061054f824261394e565b11155b1561061f576001850154600061056783610adc565b90506105738287610b6c565b945061057f8582610b83565b935061058b858361394e565b915081876001018190555060008488600301546105a89190613961565b600389018190556002808a0154600081815260058c0160205260409081902060048d0154600182015592830184905551929350917f2115712930a0e5047c8904a9cc557d2b1ba5a21876e04f59249843ce1a74d6999061060d90879087908690613974565b60405180910390a15050505050610638565b60405163bec2cf4b60e01b815260040160405180910390fd5b509250929050565b6106486135d4565b81516001600160a01b03166000908152600385016020908152604091829020855191860151928501519092610681928492909190610baf565b6000196101e0820152670de0b6b3a764000060a08201526020850151909250600160ff168460600151036106d6576106c1670de0b6b3a7640000826139a0565b6106d390670de0b6b3a76400006139b4565b90505b6106f76106e7828660200151610b6c565b8560400151866080015186610d1d565b9250610704868385610f3d565b835161016084015160c0850151602080870151610120880151604080519586529285019390935290830152151560608201526001600160a01b03909116907f4591b2dfbebff121b3ccd19ae2407e59a9cefd959b35e12d82752cb5bc6eb7579060800160405180910390a2606084015160001901610838576000670de0b6b3a76400008460c0015161079691906139a0565b6107a890670de0b6b3a76400006139b4565b90508360c001518114610836576107c781670de0b6b3a7640000613961565b6107d987602001518760200151610b6c565b1061081d576107f0670de0b6b3a764000082613961565b905061080c8460c0015182610805919061394e565b8551610841565b60e085015260c08401819052610836565b604051634b6f00d760e01b815260040160405180910390fd5b505b50509392505050565b6000670de0b6b3a76400006108576002826139a0565b61086184866139b4565b61086b9190613961565b61087591906139a0565b90505b92915050565b600080600080600061089887600001518960a00151610841565b90506108af898960600151838b61010001516110cb565b6108bd8a8960600151611139565b9450866020015192506108da818860200151878b6000015161114d565b1561090957600193506108fc8c8c8c898b602001518d6000015160ff16611195565b6020890182905290935091505b610924898d8c8a8a8d606001518e60e001518c8c158d61131e565b50975097509750979350505050565b61093b6135d4565b81516001600160a01b0316600090815260038701602090815260409091208451918501516060850151919261097292849290610baf565b91506109828584604001516114b9565b6101e083018190526000036109aa5760405163bb55fd2760e01b815260040160405180910390fd5b6109b78360400151611567565b60808301819052825111156109df576040516351522bb560e11b815260040160405180910390fd5b8260200151156109f157608082015182525b6109ff8584604001516115d9565b60a0830152602084015160608401516080850151610a1f92919085610d1d565b91508160c00151600003610a465760405163bb55fd2760e01b815260040160405180910390fd5b610a5d878688848760400151886020015188611646565b825160408085015161016085015160c086015160208088015161012089015186519586529185019390935293830152606082015290151560808201526001600160a01b03909116907fcb6905a59200cc485bfe6d2168392e96a0f204daf9e3937dff19180cb0d796a49060a00160405180910390a25095945050505050565b60008115610b67576000610af0834261394e565b90506000610b00610e10836139a0565b676765c793fa10079d601b1b901c90506000610b3f6b0331adfc6b81cf95c39de3b1603c610b30610e10876139cb565b610b3a91906139a0565b611888565b9050610b61610b4e8383611900565b610b5c90633b9aca006139b4565b611919565b93505050505b919050565b600081831115610b7c5781610875565b5090919050565b6000670de0b6b3a7640000600181610b9b85876139b4565b610ba59190613961565b61086b919061394e565b610bb76135d4565b60018501546001600160601b03166000819003610be7576040516338e806f160e11b815260040160405180910390fd5b610e10610bf4824261394e565b11610c1257604051630b768a0360e31b815260040160405180910390fd5b6101a08201859052600486015460ff16610c6457610c378566f8b0a10e470000610841565b6101c083018190526101a083018051610c51908390613961565b90525060048601805460ff191660011790555b610c73826101a0015184610841565b6040830152600386015460028701546001600160601b03600160a01b909204821691610ca191168284611938565b80845260408401518854610cca9288918591600160a01b9091046001600160601b0316906119d1565b60608401819052610cdd90600090611a82565b610cef90670de0b6b3a76400006139df565b610100840152505093546001600160a01b031661014085015250505060608101516000131561012082015290565b610d256135d4565b6000826101200151610d3f57670de0b6b3a7640000610d56565b6060830151610d5690670de0b6b3a764000061394e565b90506000836101200151610d6b578351610d79565b610d79828560000151610841565b9050600019846101e0015103610d9157600019610da4565b610da4846101e001518560a00151610841565b6101608501526000610db68883610841565b9050846040015185610160015111158015610dd657508085610160015111155b15610e3657610df3610ded86610160015184611a92565b87611ab2565b60c0860152610160850151610e089088611a92565b6101808601526101e085015161020086015260c08501518551610e2b9190610841565b610160860152610ee4565b80856040015111610e9f57610e52610ded866040015184611a92565b60c08601526101a0850151610180860152604085015160a0860151610e779190611a92565b610200860152610120850151610e91578460400151610e2b565b610e2b856040015184611a92565b60c08501889052610eb08188611a92565b61018086015260a0850151610ec6908290611a92565b61020086015260c08501518551610edd9190610841565b6101608601525b84610120015115610f0c57610f028561016001518660600151610841565b6020860152610f2e565b610f288561016001518660600151610f2390613a06565b610841565b60208601525b8493505050505b949350505050565b80610120015115610ffa576020810151600383018054600090610f6a9084906001600160a01b0316613a22565b92506101000a8154816001600160a01b0302191690836001600160a01b0316021790555080602001518360040160008361014001516001600160a01b03166001600160a01b031681526020019081526020016000206001016000828254610fd19190613961565b90915550506020810151600284018054600090610fef908490613961565b909155506110c69050565b60038201546020820151611017916001600160a01b031690610b6c565b6020820181905260038301805460009061103b9084906001600160a01b0316613a42565b92506101000a8154816001600160a01b0302191690836001600160a01b0316021790555080602001518360040160008361014001516001600160a01b03166001600160a01b0316815260200190815260200160002060010160008282546110a2919061394e565b909155505060208101516002840180546000906110c090849061394e565b90915550505b505050565b811561113357808210156110f2576040516345b3f65d60e01b815260040160405180910390fd5b60006110fd85611ac9565b9050600a8110611131576111118482611ada565b83101561113157604051635b85919f60e11b815260040160405180910390fd5b505b50505050565b60006108756111488484611b00565b611567565b600060ff821661116b57846111628585610841565b10159050610f35565b670de0b6b3a764000061117e81866139a0565b61118891906139b4565b9350846111628585610841565b60008060001983016112c257600080670de0b6b3a76400006111b781886139a0565b6111c191906139b4565b9350858414611276576111d4848761394e565b6001600160a01b03881660009081526003808d01602052604082206002810154918101546001909101549396509192611224926001600160601b0392831692600160a01b90910481169116611938565b905064173eb4c80a811161123a57611cdc611243565b61124381611b16565b600081815260208c90526040902090925061127290896112638c86611bd3565b8761126d87611567565b611bec565b9250505b866001600160a01b03167fddd6b496b84171d179d9874158b1cbbe422dd482e5523f1b09cb69ebef2878418584846040516112b393929190613974565b60405180910390a25050611309565b839150846001600160a01b03167f91a9dcdd01df8b934f14307641e884e0ea6e414bf05fe8daf8c74a28f69b55ee8360405161130091815260200190565b60405180910390a25b6113138886611c76565b965096945050505050565b8651600090158015906113345750602088015115155b9050600081611344576000611356565b61135689600001518a60200151611a92565b9050836113c3576001600160a01b038816600090815260018d01602052604090205482156113b0578160000361139f57604051633d1e8af160e21b815260040160405180910390fd5b6113ab8d8a8385611f70565b6113c1565b80156113c1576113c18d8a83612045565b505b821561147657801561146e578a548c546000916001600160601b0316906113ec9060019061394e565b6113f69190613961565b905060006114216111488d61141c8c61141787670de0b6b3a76400006139b4565b611a92565b611b00565b9050670de0b6b3a76400008784836114398c85613961565b61144391906139b4565b61144d91906139b4565b61145791906139a0565b61146191906139a0565b60408c0152506114769050565b600060408a01525b5050506001600160a01b03909416600090815260029889016020908152604091829020875181559087015160018201559501519490970193909355505050505050565b60006114c482613a62565b91506001838361200181106114db576114db613a7b565b0154915060008060005b85841660000361155d576114f9848761394e565b92508683612001811061150e5761150e613a7b565b01549150866120010183612001811061152957611529613a7b565b015490508060000361153b5781611545565b6115458183610841565b61154f908661394e565b9450600184901b93506114e5565b5050505092915050565b6000806115768361103c6139df565b9050610c9f1981128061158a575061103c81135b156115a857604051637edf443b60e11b815260040160405180910390fd5b6115d26115cd6115b783612189565b6115c8670df27a2cdf448000612219565b6122fd565b6123bf565b9392505050565b60006115e482613a62565b9150670de0b6b3a764000090505b6120008211610878576000836120010183612001811061161457611614613a7b565b01549050801561162b576116288282610841565b91505b61163483612456565b61163e9084613961565b9250506115f2565b600083815260208690526040812060028101546101e084015160a0850151929391926116729190610841565b90506000806000876116c5576116b486600101548760000154866116a88b60c001518c600001518d60800151610f23919061394e565b8b608001516000612475565b91508192506116c5868633856124ed565b86610120015115611713576116ef86600101548760000154868a602001518b608001516000612475565b90506116fb8184613961565b925061170e8686896101400151846124ed565b6117df565b60038a01546020880151611730916001600160a01b031690610b6c565b6020880181905260038b0180546000906117549084906001600160a01b0316613a42565b92506101000a8154816001600160a01b0302191690836001600160a01b0316021790555086602001518d60040160008961014001516001600160a01b03166001600160a01b0316815260200190815260200160002060010160008282546117bb919061394e565b9091555050602087015160028e0180546000906117d990849061394e565b90915550505b6117ef8c8a896102000151612547565b821561180f57828660000160008282546118099190613961565b90915550505b8660c001518660010160008282546118279190613961565b909155505061014087015160408051848152602081018490526001600160a01b039092169133917fd43d7a2b808648e0814e6795ea3a9b723df6eae4046a7e279a036458f38bc644910160405180910390a350505050505050505050505050565b60006118956002836139cb565b6000036118ad57676765c793fa10079d601b1b6118af565b825b90506118bc6002836139a0565b91505b8115610878576118cf8384611900565b92506118dc6002836139cb565b156118ee576118eb8184611900565b90505b6118f96002836139a0565b91506118bf565b6000676765c793fa10079d601b1b6108576002826139a0565b6000633b9aca0061192e83631dcd6500613961565b61087891906139a0565b600080611969611948844261394e565b61195a90670de0b6b3a76400006139b4565b68c328093e61ee400000611a92565b905061197d81670de0b6b3a7640000610b6c565b611987908261394e565b9050600061199e670de0b6b3a763ffff19836122fd565b905060006119ac87876125f3565b90506119bb81610f23846123bf565b6119c69060206139b4565b979650505050505050565b6000806119de8787611a92565b9050600085821215611a3057611a29670de0b6b3a7640000611a24670de0b6b3a763ffff19611a1f611a10898c6139df565b611a1a888d6139df565b612603565b611a82565b6126c9565b9050611a6c565b6000611a3c85886139df565b90506000811215611a5857670de0b6b3a763ffff199150611a6a565b8015611a6a57670de0b6b3a764000091505b505b611a7685826122fd565b98975050505050505050565b600081831215610b7c5781610875565b600081611aa06002826139a0565b610861670de0b6b3a7640000866139b4565b600081611abf81856139a0565b61087591906139b4565b80546000906108789060019061394e565b6000811561087857610875611af284611417856126d9565b678ac7230489e80000611a92565b6000611b0c83836126ed565b5090949350505050565b600064173eb4c80a821080611b3657506b033f4a75fb6ff29166751a4b82115b15611b5457604051635665ba4560e11b815260040160405180910390fd5b6000611b73611b6284612219565b611a1a670df27a2cdf448000612219565b90506000611b80826127dd565b9050600082128015611ba257506706f05b59d3b20000611ba083836139df565b135b15611bbd57610f35670de0b6b3a7640000820561103d6139df565b610f35670de0b6b3a7640000820561103c6139df565b6000610875611be284846114b9565b610f2385856115d9565b6002850154600090428103611c145760405163c1e4c5f760e01b815260040160405180910390fd5b611c2b87600101548860000154878787600061284f565b915083876001016000828254611c419190613961565b9091555050865482908890600090611c5a908490613961565b90915550611c6c9050878288856124ed565b5095945050505050565b6001600160a01b03808216600090815260038085016020908152604080842081516101208101835281548088168083526001600160601b03600160a01b9283900481168488015260018086015480831686890152600160601b908190048c16606087015260028701548084166080880152048b1660a086015297850154808b1660c086019081529390041660e084015260049384015460ff1615156101008401528752918901909352908420905192810180549295919493909116929091611d3f90849061394e565b925050819055508160c001516001600160a01b0316816000016000828254611d679190613961565b909155505083548490600090611d85906001600160601b0316613a91565b82546001600160601b039182166101009390930a92830291909202199091161790558354600160601b90046001600160a01b03908116908416148015611dda575060018401546001600160a01b038481169116145b15611e035783546001600160601b031684556001840180546001600160a01b0319169055611f32565b83546001600160a01b03808516600160601b9092041603611e685760a0820180516001600160a01b039081166000908152600387016020526040902060010180546001600160601b03908116909155915186549116600160601b029116178455611f32565b60018401546001600160a01b03808516911603611ece576060820180516001600160a01b039081166000908152600387016020526040902060020180546001600160601b0316905590516001860180546001600160a01b03191691909216179055611f32565b60a0820180516060840180516001600160a01b03908116600090815260038901602052604080822060020180546001600160601b03908116600160601b97861688021790915593519551831682529020600101805490921693169091029190911790555b50506001600160a01b03166000908152600391820160205260408120818155600181018290556002810182905591820155600401805460ff19169055565b8115612013576000846000018381548110611f8d57611f8d613a7b565b6000918252602091829020604080518082019091529101546001600160a01b03811682526001600160601b03600160a01b909104811692820183905290925083161015611ff3576001600160601b0382166020820152611fee858285612893565b61200d565b6001600160601b038216602082015261200d858285612a1e565b50611133565b604080518082019091526001600160a01b03841681526001600160601b03821660208201528454611133918691612a1e565b6001600160a01b0382166000908152600180850160205260408220829055845461206f919061394e565b90508082036120a657835484908061208957612089613ab4565b600082815260208120820160001990810191909155019055611133565b60008460000182815481106120bd576120bd613a7b565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b031691810191909152855490915085908061210c5761210c613ab4565b60008281526020812082016000199081019190915501905561212f858285612a1e565b6111318586600001858154811061214857612148613a7b565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b03169181019190915285612893565b60007809392ee8e921d5d073aff322e62439fcf32d7f344649470f8f198212156121ce5760405163e608e18b60e01b8152600481018390526024015b60405180910390fd5b7809392ee8e921d5d073aff322e62439fcf32d7f344649470f9082131561220b576040516371f72a3160e01b8152600481018390526024016121c5565b50670de0b6b3a76400000290565b600080821361223e5760405163309fa7dd60e11b8152600481018390526024016121c5565b6000670de0b6b3a7640000831261225757506001612270565b6000199050826a0c097ce7bc90715b34b9f160241b0492505b6000612285670de0b6b3a76400008505612afb565b670de0b6b3a764000081029350905083811d670de0b6b3a763ffff1981016122af57505002919050565b6706f05b59d3b200005b60008113156122f457670de0b6b3a7640000828002059150671bc16d674ec8000082126122ec579384019360019190911d905b60011d6122b9565b50505002919050565b6000600160ff1b8314806123145750600160ff1b82145b1561233257604051630d01a11b60e21b815260040160405180910390fd5b600080600085126123435784612348565b846000035b915060008412612358578361235d565b836000035b9050600061236b8383612bd9565b90506001600160ff1b038111156123985760405163bf79e8d960e01b8152600481018290526024016121c5565b6000198087139086138082186001146123b15782611a76565b505060000395945050505050565b6000808212156124125768033dd1780914b97114198212156123e357506000919050565b6123ef826000036123bf565b6a0c097ce7bc90715b34b9f160241b8161240b5761240b61398a565b0592915050565b680a688906bd8b000000821261243e5760405163e69458f960e01b8152600481018390526024016121c5565b670de0b6b3a7640000604083901b046115d281612c9f565b60008115610b675761246d60001983186001613961565b909116919050565b600084158015612483575086155b1561248f5750826124e3565b8560000361249e5750826124e3565b6124e0866124b4670de0b6b3a7640000876139b4565b6124be868b6139b4565b6124d0670de0b6b3a76400008a6139b4565b6124da9190613961565b85613331565b90505b9695505050505050565b8015611133576001600160a01b03821660009081526003850160205260409020600181015484106125205781815561253a565b818160000160008282546125349190613961565b90915550505b4260019091015550505050565b61255082613a62565b91505b61200082116110c6576000818484612001811061257257612572613a7b565b016000828254612582919061394e565b9250508190559050600084612001018461200181106125a3576125a3613a7b565b0154905080156125d7576125b78282610841565b6125ca6125c48585613961565b83610841565b6125d4919061394e565b92505b6125e084612456565b6125ea9085613961565b93505050612553565b600081831015610b7c5781610875565b6000600160ff1b83148061261a5750600160ff1b82145b156126385760405163b3c754a360e01b815260040160405180910390fd5b60008060008512612649578461264e565b846000035b91506000841261265e5783612663565b836000035b9050600061267a83670de0b6b3a76400008461338e565b90506001600160ff1b038111156126a757604051637cb4bef560e01b8152600481018290526024016121c5565b6000198087139086138082186001146126c05782611a76565b611a7683613a06565b600081831315610b7c5781610875565b6000610878670de0b6b3a7640000836139b4565b60008080611000670de0b6b3a764000082808080805b86156127cf57612713878b613961565b93508b84612001811061272857612728613a7b565b015492508b6120010184612001811061274357612743613a7b565b015491508160000361275e576127598684610841565b612780565b61278061276b83886139b4565b846a0c097ce7bc90715b34b9f160241b61345a565b61278a9086613961565b90508a8110156127a957611cdc84116127a4578399508094505b6127c3565b81156127bc576127b98683613496565b95505b8098508597505b600187901c9650612703565b505050505050509250925092565b6000670afdc366fbc00000600160ff1b0382131561281157604051635399a28560e11b8152600481018390526024016121c5565b670de0b6b3a76400008207600081900361282d57829150612849565b8083039150600083131561284957670de0b6b3a7640000820191505b50919050565b60008415801561285d575086155b156128735761286c8484610841565b90506124e3565b856000036128855761286c8484610841565b6124e0866124b485876139b4565b60006128a08260026139b4565b84549091508181116128bd576128b8858585846134ab565b611131565b60008560000183815481106128d4576128d4613a7b565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b031691810191909152905061291c836001613961565b8211801561296d575060208101516001600160601b03168661293f856001613961565b8154811061294f5761294f613a7b565b600091825260209091200154600160a01b90046001600160601b0316115b156129cd578561297c84613a62565b9350838154811061298f5761298f613a7b565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b03169181019190915290505b84602001516001600160601b031681602001516001600160601b0316116129ff576129fa868686856134ab565b612a16565b612a0b868286856134ab565b612a16868685612893565b505050505050565b82546001821480612a6e575083612a366002846139a0565b81548110612a4657612a46613a7b565b60009182526020918290200154908401516001600160601b03600160a01b9092048216911611155b15612a8457612a7f848484846134ab565b611133565b612ae68480612a946002866139a0565b81548110612aa457612aa4613a7b565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b03169181019190915284846134ab565b6111338484612af66002866139a0565b612a1e565b6000600160801b8210612b1b57608091821c91612b189082613961565b90505b600160401b8210612b3957604091821c91612b369082613961565b90505b600160201b8210612b5757602091821c91612b549082613961565b90505b620100008210612b7457601091821c91612b719082613961565b90505b6101008210612b9057600891821c91612b8d9082613961565b90505b60108210612bab57600491821c91612ba89082613961565b90505b60048210612bc657600291821c91612bc39082613961565b90505b60028210610b6757610878600182613961565b60008080600019848609848602925082811083820303915050670de0b6b3a76400008110612c1d5760405163698d9a0160e11b8152600481018290526024016121c5565b600080670de0b6b3a764000086880991506706f05b59d3b1ffff8211905082600003612c5b5780670de0b6b3a7640000850401945050505050610878565b620400008285030493909111909103600160ee1b02919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690201905092915050565b600160bf1b6001603f1b821615612cbf5768016a09e667f3bcc9090260401c5b6001603e1b821615612cda576801306fe0a31b7152df0260401c5b6001603d1b821615612cf5576801172b83c7d517adce0260401c5b6001603c1b821615612d105768010b5586cf9890f62a0260401c5b6001603b1b821615612d2b576801059b0d31585743ae0260401c5b6001603a1b821615612d4657680102c9a3e778060ee70260401c5b600160391b821615612d615768010163da9fb33356d80260401c5b600160381b821615612d7c57680100b1afa5abcbed610260401c5b600160371b821615612d975768010058c86da1c09ea20260401c5b600160361b821615612db2576801002c605e2e8cec500260401c5b600160351b821615612dcd57680100162f3904051fa10260401c5b600160341b821615612de8576801000b175effdc76ba0260401c5b600160331b821615612e0357680100058ba01fb9f96d0260401c5b600160321b821615612e1e5768010002c5cc37da94920260401c5b600160311b821615612e39576801000162e525ee05470260401c5b600160301b821615612e545768010000b17255775c040260401c5b6001602f1b821615612e6f576801000058b91b5bc9ae0260401c5b6001602e1b821615612e8a57680100002c5c89d5ec6d0260401c5b6001602d1b821615612ea55768010000162e43f4f8310260401c5b6001602c1b821615612ec057680100000b1721bcfc9a0260401c5b6001602b1b821615612edb5768010000058b90cf1e6e0260401c5b6001602a1b821615612ef6576801000002c5c863b73f0260401c5b600160291b821615612f1157680100000162e430e5a20260401c5b600160281b821615612f2c576801000000b1721835510260401c5b600160271b821615612f4757680100000058b90c0b490260401c5b600160261b821615612f625768010000002c5c8601cc0260401c5b600160251b821615612f7d576801000000162e42fff00260401c5b600160241b821615612f985768010000000b17217fbb0260401c5b600160231b821615612fb3576801000000058b90bfce0260401c5b600160221b821615612fce57680100000002c5c85fe30260401c5b600160211b821615612fe95768010000000162e42ff10260401c5b600160201b82161561300457680100000000b17217f80260401c5b638000000082161561301f5768010000000058b90bfc0260401c5b634000000082161561303a576801000000002c5c85fe0260401c5b632000000082161561305557680100000000162e42ff0260401c5b6310000000821615613070576801000000000b17217f0260401c5b630800000082161561308b57680100000000058b90c00260401c5b63040000008216156130a65768010000000002c5c8600260401c5b63020000008216156130c1576801000000000162e4300260401c5b63010000008216156130dc5768010000000000b172180260401c5b628000008216156130f6576801000000000058b90c0260401c5b6240000082161561311057680100000000002c5c860260401c5b6220000082161561312a5768010000000000162e430260401c5b6210000082161561314457680100000000000b17210260401c5b6208000082161561315e5768010000000000058b910260401c5b62040000821615613178576801000000000002c5c80260401c5b6202000082161561319257680100000000000162e40260401c5b620100008216156131ab5761b172600160401b010260401c5b6180008216156131c3576158b9600160401b010260401c5b6140008216156131db57612c5d600160401b010260401c5b6120008216156131f35761162e600160401b010260401c5b61100082161561320b57610b17600160401b010260401c5b6108008216156132235761058c600160401b010260401c5b61040082161561323b576102c6600160401b010260401c5b61020082161561325357610163600160401b010260401c5b61010082161561326a5760b1600160401b010260401c5b6080821615613280576059600160401b010260401c5b604082161561329657602c600160401b010260401c5b60208216156132ac576016600160401b010260401c5b60108216156132c257600b600160401b010260401c5b60088216156132d8576006600160401b010260401c5b60048216156132ee576003600160401b010260401c5b6002821615613304576001600160401b010260401c5b600182161561331a576001600160401b010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b60008061333f86868661345a565b9050600183600281111561335557613355613922565b14801561337257506000848061336d5761336d61398a565b868809115b1561338557613382600182613961565b90505b95945050505050565b60008080600019858709858702925082811083820303915050806000036133c8578382816133be576133be61398a565b04925050506115d2565b8381106133f257604051631dcf306360e21b815260048101829052602481018590526044016121c5565b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b600080806000198587098587029250828110838203039150508060000361348a578382816133be576133be61398a565b8084116133f257600080fd5b6000670de0b6b3a764000061086b83856139b4565b8082036134f157835460018101855560008581526020908190208551918601516001600160601b0316600160a01b026001600160a01b039092169190911791015561353b565b8284600001838154811061350757613507613a7b565b6000918252602091829020835193909201516001600160601b0316600160a01b026001600160a01b03909316929092179101555b5090516001600160a01b031660009081526001909201602052604090912055565b604051806101e0016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081525090565b60405180610220016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405161012081016001600160401b038111828210171561369457634e487b7160e01b600052604160045260246000fd5b60405290565b803560ff81168114610b6757600080fd5b80358015158114610b6757600080fd5b600061012082840312156136ce57600080fd5b6136d6613663565b90506136e18261369a565b81526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015261372160c083016136ab565b60c082015260e082013560e082015261010080830135818301525092915050565b80356001600160a01b0381168114610b6757600080fd5b600080600080600080600080610200898b03121561377657600080fd5b8835975060208901359650604089013595506060890135945061379c8a60808b016136bb565b93506137ab6101a08a01613742565b92506101c089013591506101e089013590509295985092959890939650565b60006101e082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516138498285018215159052565b5050610160838101519083015261018080840151908301526101a080840151908301526101c092830151929091019190915290565b60008060008060008060008060006102208a8c03121561389d57600080fd5b8935985060208a0135975060408a0135965060608a013595506138c38b60808c016136bb565b94506138d26101a08b01613742565b93506138e16101c08b016136ab565b92506101e08a013591506102008a013590509295985092959850929598565b6000806040838503121561391357600080fd5b50508035926020909101359150565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561087857610878613938565b8082018082111561087857610878613938565b9283526020830191909152604082015260600190565b634e487b7160e01b600052601260045260246000fd5b6000826139af576139af61398a565b500490565b808202811582820484141761087857610878613938565b6000826139da576139da61398a565b500690565b81810360008312801583831316838312821617156139ff576139ff613938565b5092915050565b6000600160ff1b8201613a1b57613a1b613938565b5060000390565b6001600160a01b038181168382160190808211156139ff576139ff613938565b6001600160a01b038281168282160390808211156139ff576139ff613938565b600060018201613a7457613a74613938565b5060010190565b634e487b7160e01b600052603260045260246000fd5b60006001600160601b03821680613aaa57613aaa613938565b6000190192915050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220369b2693c23f59692c2e57ccda5fcd81cd14f854d97f10bbe83a4d462050ec7c64736f6c63430008120033", + "from": "0xcD9C63CFEE8ad52e6ff0B7F6Cb8726933D0FFaa2", + "to": null, + "nonce": 5 + }, + { + "operationName": "LPActions", + "address": "0x297b0988FD2a8744379Ef9F2188Bf70fb73c8038", + "data": "0x610b8861003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061006c5760003560e01c8063296bff251461007157806331100943146100935780634b740e8f146100b357806358353580146100d3578063d3f900a3146100f3578063e817b3fb14610113575b600080fd5b81801561007d57600080fd5b5061009161008c366004610810565b610133565b005b81801561009f57600080fd5b506100916100ae366004610877565b6101dc565b8180156100bf57600080fd5b506100916100ce366004610810565b6102c7565b8180156100df57600080fd5b506100916100ee366004610900565b61036b565b8180156100ff57600080fd5b5061009161010e366004610981565b610626565b81801561011f57600080fd5b5061009161012e366004610877565b6106c1565b8060005b8181101561019257846000858584818110610154576101546109da565b905060200201602081019061016991906109f0565b6001600160a01b031681526020810191909152604001600020805460ff19169055600101610137565b50336001600160a01b03167fde63bcd4c57b5d710a16396f80a2797846720923ff52198e806544ccbb720b2b84846040516101ce929190610a0b565b60405180910390a250505050565b828181146101fd576040516392019b0360e01b815260040160405180910390fd5b6000805b8281101561026b5786868281811061021b5761021b6109da565b905060200201359150848482818110610236576102366109da565b90506020020135896000848152602001908152602001600020600082825461025e9190610a6d565b9091555050600101610201565b50866001600160a01b0316336001600160a01b03167fa9f6ab83637f87ef702b94c10d09430c40cd3d4642d14fc2a07408bde931545f888888886040516102b59493929190610ab2565b60405180910390a35050505050505050565b8060005b8181101561032f5760018560008686858181106102ea576102ea6109da565b90506020020160208101906102ff91906109f0565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556001016102cb565b50336001600160a01b03167f6dceda33b951e30872202c47c5e3b449112437927dbc475dfaedd3a22889aa5484846040516101ce929190610a0b565b6001600160a01b03831633148015906103a657506001600160a01b03831660009081526020868152604080832033845290915290205460ff16155b156103c457604051633d80a49160e11b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316036103f65760405163378386fb60e21b815260040160405180910390fd5b80600080805b838110156105da57858582818110610416576104166109da565b905060200201359250611cdc831115610442576040516363df817160e01b815260040160405180910390fd5b600083815260208c815260408083206001600160a01b038c16845260038101909252822060028201546001820154929391929091818310610484576000610487565b83545b905060008f60008f6001600160a01b03166001600160a01b0316815260200190815260200160002060008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008a81526020019081526020016000205490508060000361050757604051631d7eb35960e31b815260040160405180910390fd5b610511818361079a565b9050801561059e576001600160a01b038d166000908152600387016020526040902060018101548581111561055f57828260000160008282546105549190610a6d565b909155506105639050565b8282555b828760000160008282546105779190610ae4565b909155506105879050838b610a6d565b995061059385826107b5565b826001018190555050505b505050506001600160a01b038a8116600090815260208e81526040808320938d16835292815282822088835290529081205550506001016103fc565b507f98b14a8359f3da2f702dde7a51271b67ea43d27b8712e860408b8bf8dd0eb6828787878785604051610612959493929190610af7565b60405180910390a150505050505050505050565b806000805b8281101561066b57848482818110610645576106456109da565b602090810292909201356000818152928a9052604083209290925550915060010161062b565b50846001600160a01b0316336001600160a01b03167fdf7f78d931b4e040d4598563bab17506dba0aed1a0515c51fd7dbc2a2382afdf86866040516106b1929190610b36565b60405180910390a3505050505050565b828181146106e2576040516392019b0360e01b815260040160405180910390fd5b6000805b8281101561075057868682818110610700576107006109da565b90506020020135915084848281811061071b5761071b6109da565b9050602002013589600084815260200190815260200160002060008282546107439190610ae4565b90915550506001016106e6565b50866001600160a01b0316336001600160a01b03167f4a7a52e2fe7e10addaa7f875ecf9ec17563ec12be96c885457061cfc04e05660888888886040516102b59493929190610ab2565b6000818311156107aa57816107ac565b825b90505b92915050565b6000818310156107aa57816107ac565b60008083601f8401126107d757600080fd5b5081356001600160401b038111156107ee57600080fd5b6020830191508360208260051b850101111561080957600080fd5b9250929050565b60008060006040848603121561082557600080fd5b8335925060208401356001600160401b0381111561084257600080fd5b61084e868287016107c5565b9497909650939450505050565b80356001600160a01b038116811461087257600080fd5b919050565b6000806000806000806080878903121561089057600080fd5b863595506108a06020880161085b565b945060408701356001600160401b03808211156108bc57600080fd5b6108c88a838b016107c5565b909650945060608901359150808211156108e157600080fd5b506108ee89828a016107c5565b979a9699509497509295939492505050565b600080600080600080600060c0888a03121561091b57600080fd5b8735965060208801359550604088013594506109396060890161085b565b93506109476080890161085b565b925060a08801356001600160401b0381111561096257600080fd5b61096e8a828b016107c5565b989b979a50959850939692959293505050565b6000806000806060858703121561099757600080fd5b843593506109a76020860161085b565b925060408501356001600160401b038111156109c257600080fd5b6109ce878288016107c5565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610a0257600080fd5b6107ac8261085b565b60208082528181018390526000908460408401835b86811015610a4c576001600160a01b03610a398461085b565b1682529183019190830190600101610a20565b509695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156107af576107af610a57565b81835260006001600160fb1b03831115610a9957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000610ac6604083018688610a80565b8281036020840152610ad9818587610a80565b979650505050505050565b818103818111156107af576107af610a57565b6001600160a01b03868116825285166020820152608060408201819052600090610b249083018587610a80565b90508260608301529695505050505050565b602081526000610b4a602083018486610a80565b94935050505056fea2646970667358221220164d777cbf21d863e050c069ad4cd5752fc60e076ad7d2fb0d44fecca068992264736f6c63430008120033", + "from": "0xcD9C63CFEE8ad52e6ff0B7F6Cb8726933D0FFaa2", + "to": null, + "nonce": 6 + }, + { + "operationName": "PoolCommons", + "address": "0x2F92aC7c2D18bE332eb99e37368a62AeDDA47096", + "data": "0x61237a61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061006c5760003560e01c80630cbcb4cd146100715780635676e1ff1461009757806378792ff1146100b95780639b5bef86146100cc578063edf6fdf6146100fa578063fc99bab01461010d575b600080fd5b61008461007f366004611ea5565b610120565b6040519081526020015b60405180910390f35b8180156100a357600080fd5b506100b76100b2366004611f1f565b61014c565b005b6100846100c7366004611fe3565b610600565b8180156100d857600080fd5b506100ec6100e736600461200f565b610631565b60405161008e929190612064565b610084610108366004612072565b61077f565b61008461011b366004612072565b61078a565b60006101436301e1338061013484866120a1565b61013e91906120ce565b61079e565b90505b92915050565b6101c5604051806101e001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b84548152600185015460208083019190915260028601546040808401919091526003808801546060850152600488015461012085015288015460808401528401519084015161021491906120e2565b6101c0820181905260a084015161022b91906107f9565b8160c001818152505061025f610255858560400151846101c001518760a00151866080015161082d565b8260c001516108b9565b8160a001818152505061027a8360a0015182608001516107f9565b60e08201526101c08101516102909083906107f9565b610100820152610120810151421461048a578061012001516000036102da5760c0810151815260a0810151602082015260e081015160408201526101008101516060820152610461565b6102f6816101200151426102ee91906120e2565b610e106108d0565b610140820181905261031a906103159066cd367959873bd819906108f0565b6109b5565b61016082015261014081015161033d9061031590661d50ecc3a59ad519906108f0565b6101808201526101608101516103699061035f90670de0b6b3a76400006120f5565b87600101546108f0565b61037c82610160015183600001516108f0565b610386919061211c565b81526101608101516103ae906103a490670de0b6b3a76400006120f5565b87600201546108f0565b6103c182610160015183602001516108f0565b6103cb919061211c565b60208201526101808101516103f6906103ec90670de0b6b3a76400006120f5565b87600401546108f0565b61040982610180015183604001516108f0565b610413919061211c565b604082015261018081015161043e9061043490670de0b6b3a76400006120f5565b87600501546108f0565b61045182610180015183606001516108f0565b61045b919061211c565b60608201525b805185556020810151600186015560408101516002860155606081015160038601554260048601555b67016345785d8a00008360e001511180156104b957506104b5816020015166b1a2bc2ec500006107f9565b8151105b1561051b5767016345785d8a0000600160d01b4265ffffffffffff16028117875560e08401516040517f20ae1d4a2e8d297f3820670c20fc79531e31643d4b201892680e7df3c4ab15999261050e9291612064565b60405180910390a16105ce565b855461a8c09061053a90600160d01b900465ffffffffffff16426120e2565b11156105ce5761055d838260000151836020015184604001518560600151610a25565b6101a0820181905260e0840151146105ce576101a081015165ffffffffffff4216600160d01b026001600160d01b03821617875560e08401516040517f2463616ef8e6f9bddf00e4964b853ad9050f87cd3c73985d2ee6b6c8a8336991926105c59291612064565b60405180910390a15b60c0810151600187015560a0810151600287015560e08101516004870155610100015160059095019490945550505050565b6000610627846106226301e1338061061887426120e2565b61013490876120a1565b6107f9565b90505b9392505050565b6000808061064b6301e133806101348660e08a01356120a1565b905061065b8660a00135826107f9565b9250600061066986856107f9565b905060006b033f4a75fb6ff29166751a4b821115610689575060016106ab565b64173eb4c80a82101561069f5750611cdc6106ab565b6106a882610bb5565b90505b60006106bb8a8a60600135610c7f565b9050818111156106c9578091505b60006106d58b84610c95565b90508015610770576107196106fa6106f58e600001548f60010154610da0565b610db2565b61062261070f670de0b6b3a7640000896120e2565b8d606001356107f9565b95506000670de0b6b3a76400006107576107338985610e5c565b610752610748670de0b6b3a76400008b6120e2565b610622600a610e71565b610e85565b6107619190612144565b905061076e8c8583610e95565b505b50505050509550959350505050565b600061014682610db2565b600061014682600001548360010154610da0565b6000680736ea4425c11ac63182106107d15760405163062bb40d60e31b8152600481018390526024015b60405180910390fd5b6714057b7ef767814f820261062a670de0b6b3a76400006706f05b59d3b20000830104611038565b6000670de0b6b3a764000061080f6002826120ce565b61081984866120a1565b6108239190612144565b61014391906120ce565b60008061083b85858561107e565b905080600003610853576120008701545b9150610896565b6b033f4a75fb6ff29166751a4b811061086f5760009150610896565b64173eb4c80a811061088d5761084c8761088883610bb5565b610c95565b61200087015491505b6108a48261075288876107f9565b6108ae90836120e2565b979650505050505050565b6000818310156108c95781610143565b5090919050565b6000816108de6002826120ce565b610819670de0b6b3a7640000866120a1565b6000600160ff1b8314806109075750600160ff1b82145b1561092557604051630d01a11b60e21b815260040160405180910390fd5b60008060008512610936578461093b565b846000035b91506000841261094b5783610950565b836000035b9050600061095e83836110a8565b90506001600160ff1b0381111561098b5760405163bf79e8d960e01b8152600481018290526024016107c8565b6000198087139086138082186001146109a457826109a9565b826000035b98975050505050505050565b600068023f2fa8f6da5b9d31198212156109d157506000919050565b680736ea4425c11ac63182126109fd576040516399bb754160e01b8152600481018390526024016107c8565b6714057b7ef767814f820261062a670de0b6b3a76400006706f05b59d3b2000083010561116e565b60008060008760600151600014610a6a57610a408787610da0565b9150670de0b6b3a7640000610a5d670e27c49886e6000084612157565b610a679190612187565b90505b600084600003610a8257670de0b6b3a7640000610a8c565b610a8c86866108d0565b60e08a015194509050670de0b6b3a76400006002633b9aca0082610ab0868661211c565b610aba91906120f5565b610ac49190612187565b610ace91906122ea565b610ad891906120f5565b610ae283836120f5565b610aed906004612157565b1215610b1057610b098960e00151670f43fc2c04ee00006107f9565b9350610b8a565b670de0b6b3a7640000600281610b26868561211c565b610b3091906120f5565b610b3a91906122ea565b610b449190612187565b610b5690670de0b6b3a76400006120f5565b610b6084836120f5565b610b6b906004612157565b1315610b8a57610b878960e00151670c7d713b49da00006107f9565b93505b610ba8681b1ae4d6e2ef50000061075266038d7ea4c68000876108b9565b9998505050505050505050565b600064173eb4c80a821080610bd557506b033f4a75fb6ff29166751a4b82115b15610bf357604051635665ba4560e11b815260040160405180910390fd5b6000610c17610c01846111f2565b610c12670df27a2cdf4480006111f2565b6112d6565b90506000610c248261139c565b9050600082128015610c4657506706f05b59d3b20000610c4483836120f5565b135b15610c6957610c61670de0b6b3a7640000820561103d6120f5565b949350505050565b610c61670de0b6b3a7640000820561103c6120f5565b6000610c8b838361140a565b5090949350505050565b6000610ca0826122f9565b9150670de0b6b3a7640000612000600080610cba866114fa565b905060005b818410610d9557610cd08484612144565b90506120008111610cbf5760008861200101826120018110610cf457610cf4612312565b0154905087851615610d7557600089836120018110610d1557610d15612312565b0154905081600003610d3057610d2b87826107f9565b610d52565b610d52610d3d83896120a1565b826a0c097ce7bc90715b34b9f160241b611519565b610d5c9089612144565b9750829450888503610d6f575050610d95565b50610d88565b8015610d8857610d8586826115c8565b95505b600185901c945050610cbf565b505050505092915050565b600081156101465761014383836108d0565b600080610dc783670de0b6b3a7640000610e85565b610dd490620f42406120a1565b610de89069d3c21bcecceda10000006120e2565b9050670de0b6b3a7640000811015610e0a5750670de0b6b3a764000092915050565b6000610e1e826704a03ce68d2155566115dd565b9050610e44610e3582670214e8348c4f00006107f9565b68056bc75e2d631000006108d0565b610c6190670de0b6b3a76400006120e2565b50919050565b600081610823670de0b6b3a7640000856120a1565b6000610146670de0b6b3a7640000836120a1565b6000818311156108c95781610143565b610e9e826122f9565b9150600080600080610eaf866114fa565b90505b612000811161102f5780861615610fa05786866120018110610ed657610ed6612312565b015492508661200101866120018110610ef157610ef1612312565b015491508115610f53576000610f0786846107f9565b9050610f1383856107f9565b610f1d82866107f9565b610f2791906120e2565b610f319086612144565b9450808861200101886120018110610f4b57610f4b612312565b015550610f8f565b82610f5e86856107f9565b610f6891906120e2565b610f729085612144565b9350848761200101876120018110610f8c57610f8c612312565b01555b610f9981876120e2565b9550611027565b6000610fac8288612144565b90508488826120018110610fc257610fc2612312565b016000828254610fd29190612144565b92505081905593508761200101816120018110610ff157610ff1612312565b0154925082156110255761100e61100886866120e2565b846107f9565b61101885856107f9565b61102291906120e2565b94505b505b60011b610eb2565b50505050505050565b6000680a688906bd8b000000821061106657604051634a4f26f160e01b8152600481018390526024016107c8565b670de0b6b3a7640000604083901b0461062a8161161f565b6000831561109e5761109961109384846107f9565b856108d0565b610627565b5060009392505050565b60008080600019848609848602925082811083820303915050670de0b6b3a764000081106110ec5760405163698d9a0160e11b8152600481018290526024016107c8565b600080670de0b6b3a764000086880991506706f05b59d3b1ffff821190508260000361112a5780670de0b6b3a7640000850401945050505050610146565b620400008285030493909111909103600160ee1b02919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690201905092915050565b6000808212156111c15768033dd1780914b971141982121561119257506000919050565b61119e8260000361116e565b6a0c097ce7bc90715b34b9f160241b816111ba576111ba6120b8565b0592915050565b680a688906bd8b00000082126110665760405163e69458f960e01b8152600481018390526024016107c8565b919050565b60008082136112175760405163309fa7dd60e11b8152600481018390526024016107c8565b6000670de0b6b3a7640000831261123057506001611249565b6000199050826a0c097ce7bc90715b34b9f160241b0492505b600061125e670de0b6b3a76400008505611cb1565b670de0b6b3a764000081029350905083811d670de0b6b3a763ffff19810161128857505002919050565b6706f05b59d3b200005b60008113156112cd57670de0b6b3a7640000828002059150671bc16d674ec8000082126112c5579384019360019190911d905b60011d611292565b50505002919050565b6000600160ff1b8314806112ed5750600160ff1b82145b1561130b5760405163b3c754a360e01b815260040160405180910390fd5b6000806000851261131c5784611321565b846000035b9150600084126113315783611336565b836000035b9050600061134d83670de0b6b3a764000084611d8f565b90506001600160ff1b0381111561137a57604051637cb4bef560e01b8152600481018290526024016107c8565b60001980871390861380821860011461139357826109a9565b6109a983612328565b6000670afdc366fbc00000600160ff1b038213156113d057604051635399a28560e11b8152600481018390526024016107c8565b670de0b6b3a7640000820760008190036113ec57829150610e56565b80830391506000831315610e565750670de0b6b3a764000001919050565b60008080611000670de0b6b3a764000082808080805b86156114ec57611430878b612144565b93508b84612001811061144557611445612312565b015492508b6120010184612001811061146057611460612312565b015491508160000361147b5761147686846107f9565b61149d565b61149d61148883886120a1565b846a0c097ce7bc90715b34b9f160241b611519565b6114a79086612144565b90508a8110156114c657611cdc84116114c1578399508094505b6114e0565b81156114d9576114d686836115c8565b95505b8098508597505b600187901c9650611420565b505050505050509250925092565b600081156111ed5761151160001983186001612144565b909116919050565b600080806000198587098587029250828110838203039150508060000361155357838281611549576115496120b8565b049250505061062a565b80841161155f57600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000670de0b6b3a764000061082383856120a1565b6000826000036116055781156115f45760006115fe565b670de0b6b3a76400005b9050610146565b61014361161a61161485611de3565b84611e99565b611038565b600160bf1b6001603f1b82161561163f5768016a09e667f3bcc9090260401c5b6001603e1b82161561165a576801306fe0a31b7152df0260401c5b6001603d1b821615611675576801172b83c7d517adce0260401c5b6001603c1b8216156116905768010b5586cf9890f62a0260401c5b6001603b1b8216156116ab576801059b0d31585743ae0260401c5b6001603a1b8216156116c657680102c9a3e778060ee70260401c5b600160391b8216156116e15768010163da9fb33356d80260401c5b600160381b8216156116fc57680100b1afa5abcbed610260401c5b600160371b8216156117175768010058c86da1c09ea20260401c5b600160361b821615611732576801002c605e2e8cec500260401c5b600160351b82161561174d57680100162f3904051fa10260401c5b600160341b821615611768576801000b175effdc76ba0260401c5b600160331b82161561178357680100058ba01fb9f96d0260401c5b600160321b82161561179e5768010002c5cc37da94920260401c5b600160311b8216156117b9576801000162e525ee05470260401c5b600160301b8216156117d45768010000b17255775c040260401c5b6001602f1b8216156117ef576801000058b91b5bc9ae0260401c5b6001602e1b82161561180a57680100002c5c89d5ec6d0260401c5b6001602d1b8216156118255768010000162e43f4f8310260401c5b6001602c1b82161561184057680100000b1721bcfc9a0260401c5b6001602b1b82161561185b5768010000058b90cf1e6e0260401c5b6001602a1b821615611876576801000002c5c863b73f0260401c5b600160291b82161561189157680100000162e430e5a20260401c5b600160281b8216156118ac576801000000b1721835510260401c5b600160271b8216156118c757680100000058b90c0b490260401c5b600160261b8216156118e25768010000002c5c8601cc0260401c5b600160251b8216156118fd576801000000162e42fff00260401c5b600160241b8216156119185768010000000b17217fbb0260401c5b600160231b821615611933576801000000058b90bfce0260401c5b600160221b82161561194e57680100000002c5c85fe30260401c5b600160211b8216156119695768010000000162e42ff10260401c5b600160201b82161561198457680100000000b17217f80260401c5b638000000082161561199f5768010000000058b90bfc0260401c5b63400000008216156119ba576801000000002c5c85fe0260401c5b63200000008216156119d557680100000000162e42ff0260401c5b63100000008216156119f0576801000000000b17217f0260401c5b6308000000821615611a0b57680100000000058b90c00260401c5b6304000000821615611a265768010000000002c5c8600260401c5b6302000000821615611a41576801000000000162e4300260401c5b6301000000821615611a5c5768010000000000b172180260401c5b62800000821615611a76576801000000000058b90c0260401c5b62400000821615611a9057680100000000002c5c860260401c5b62200000821615611aaa5768010000000000162e430260401c5b62100000821615611ac457680100000000000b17210260401c5b62080000821615611ade5768010000000000058b910260401c5b62040000821615611af8576801000000000002c5c80260401c5b62020000821615611b1257680100000000000162e40260401c5b62010000821615611b2b5761b172600160401b010260401c5b618000821615611b43576158b9600160401b010260401c5b614000821615611b5b57612c5d600160401b010260401c5b612000821615611b735761162e600160401b010260401c5b611000821615611b8b57610b17600160401b010260401c5b610800821615611ba35761058c600160401b010260401c5b610400821615611bbb576102c6600160401b010260401c5b610200821615611bd357610163600160401b010260401c5b610100821615611bea5760b1600160401b010260401c5b6080821615611c00576059600160401b010260401c5b6040821615611c1657602c600160401b010260401c5b6020821615611c2c576016600160401b010260401c5b6010821615611c4257600b600160401b010260401c5b6008821615611c58576006600160401b010260401c5b6004821615611c6e576003600160401b010260401c5b6002821615611c84576001600160401b010260401c5b6001821615611c9a576001600160401b010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b6000600160801b8210611cd157608091821c91611cce9082612144565b90505b600160401b8210611cef57604091821c91611cec9082612144565b90505b600160201b8210611d0d57602091821c91611d0a9082612144565b90505b620100008210611d2a57601091821c91611d279082612144565b90505b6101008210611d4657600891821c91611d439082612144565b90505b60108210611d6157600491821c91611d5e9082612144565b90505b60048210611d7c57600291821c91611d799082612144565b90505b600282106111ed57610146600182612144565b6000808060001985870985870292508281108382030391505080600003611dbf57838281611549576115496120b8565b83811061155f578084604051631dcf306360e21b81526004016107c8929190612064565b6000670de0b6b3a7640000821015611e1157604051633621413760e21b8152600481018390526024016107c8565b6000611e26670de0b6b3a76400008404611cb1565b670de0b6b3a764000081029250905082811c670de0b6b3a763ffff198101611e4f575050919050565b6706f05b59d3b200005b8015611e9157670de0b6b3a7640000828002049150671bc16d674ec800008210611e89579283019260019190911c905b60011c611e59565b505050919050565b600061014383836110a8565b60008060408385031215611eb857600080fd5b50508035926020909101359150565b60405161012081016001600160401b0381118282101715611ef857634e487b7160e01b600052604160045260246000fd5b60405290565b803560ff811681146111ed57600080fd5b803580151581146111ed57600080fd5b60008060008060008587036101a0811215611f3957600080fd5b86359550602087013594506040870135935061012080605f1983011215611f5f57600080fd5b611f67611ec7565b9150611f7560608901611efe565b82526080880135602083015260a0880135604083015260c0880135606083015260e088013560808301526101008089013560a0840152611fb6828a01611f0f565b60c084015261014089013560e0840152610160890135908301525094979396509194610180013592915050565b600080600060608486031215611ff857600080fd5b505081359360208301359350604090920135919050565b60008060008060008587036101a081121561202957600080fd5b8635955060208701359450610120603f198201121561204757600080fd5b509396929550505060408301926101608101359250610180013590565b918252602082015260400190565b60006020828403121561208457600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176101465761014661208b565b634e487b7160e01b600052601260045260246000fd5b6000826120dd576120dd6120b8565b500490565b818103818111156101465761014661208b565b81810360008312801583831316838312821617156121155761211561208b565b5092915050565b808201828112600083128015821682158216171561213c5761213c61208b565b505092915050565b808201808211156101465761014661208b565b80820260008212600160ff1b841416156121735761217361208b565b81810583148215176101465761014661208b565b600082612196576121966120b8565b600160ff1b8214600019841416156121b0576121b061208b565b500590565b80825b60018086116121c757506121fa565b6001600160ff1b038290048211156121e1576121e161208b565b808616156121ee57918102915b9490941c9380026121b8565b935093915050565b600082801561221857600181146122225761222b565b6001915050610146565b82915050610146565b508161223957506000610146565b506001600082138082146122525780156122715761228b565b6001600160ff1b0383900483111561226c5761226c61208b565b61228b565b6001600160ff1b0383900583121561228b5761228b61208b565b50808316156122975750805b6122a78360011c838402836121b5565b600082136001600160ff1b03829004831116156122c6576122c661208b565b60008212600160ff1b829005831216156122e2576122e261208b565b029392505050565b600061014360ff841683612202565b60006001820161230b5761230b61208b565b5060010190565b634e487b7160e01b600052603260045260246000fd5b6000600160ff1b820161233d5761233d61208b565b506000039056fea2646970667358221220496f2e6d0fbcaa0caa853653346f256c9bec446c54eb607245fe6336c679ae8664736f6c63430008120033", + "from": "0xcD9C63CFEE8ad52e6ff0B7F6Cb8726933D0FFaa2", + "to": null, + "nonce": 7 + }, + { + "operationName": "LenderActions", + "address": "0xf046585E5Dd98706EB2E7b5184cD783E47140779", + "data": "0x61295561003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100775760003560e01c80632f9fa1031461007c5780633806e8ef146100b657806350865720146100e657806380f2fcd014610115578063ba9784e814610135578063bf2980c714610163578063fd4682de14610183575b600080fd5b81801561008857600080fd5b5061009c6100973660046125f8565b6101a3565b604080519283526020830191909152015b60405180910390f35b8180156100c257600080fd5b506100d66100d136600461264c565b6103ed565b6040516100ad9493929190612691565b8180156100f257600080fd5b506101066101013660046126ac565b6108ea565b6040516100ad939291906126f1565b81801561012157600080fd5b5061009c610130366004612707565b610b31565b81801561014157600080fd5b50610155610150366004612742565b610b70565b6040519081526020016100ad565b81801561016f57600080fd5b5061015561017e366004612742565b610c23565b81801561018f57600080fd5b5061009c61019e366004612774565b610dca565b600080823581036101c75760405163162908e360e11b815260040160405180910390fd5b602083013515806101dd5750611cdc8360200135115b156101fb576040516363df817160e01b815260040160405180910390fd5b6020808401356000908152908790526040902060028101544281036102335760405163c1e4c5f760e01b815260040160405180910390fd5b6000610243888760200135610eee565b90506000610255898860200135610f9c565b90506000610263828461100f565b90506000610274896020013561104a565b9050883560006102888d60608e01356110b5565b90506000811580159061029e5750818c60200135115b905080156102d1576102ce836102b78f60e001356110cb565b6102c990670de0b6b3a764000061281e565b61100f565b92505b6102e889600101548a6000015487868860006110f1565b9a508a60000361030b5760405163955a8bf560e01b815260040160405180910390fd5b60006103178488611169565b90508060000361033a5760405163162908e360e11b815260040160405180910390fd5b6103498f8e6020013583611189565b6103558a8a338f611240565b8b8a60000160008282546103699190612831565b90915550829050610385576103828f8f606001356110b5565b92505b61038e8361104a565b9a508c60200135336001600160a01b03167f8b24a9808cf05d3d8e48ac09e4f649054994a88cfa657b3f4bf340b62137df1e868f8f6040516103d2939291906126f1565b60405180910390a35050505050505050505094509492505050565b60008060008084602001356000036104185760405163162908e360e11b815260040160405180910390fd5b604085013585350361043d576040516343c7e10b60e01b815260040160405180910390fd5b60208501351580159061045857508561010001358560200135105b15610476576040516345b3f65d60e01b815260040160405180910390fd5b6040850135158061048c5750611cdc8560400135115b156104aa576040516363df817160e01b815260040160405180910390fd5b600088600087604001358152602001908152602001600020905061053d604051806101e001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6002820154610100820181905242900361056a5760405163c1e4c5f760e01b815260040160405180910390fd5b8635600081815260208c815260408083203384526003810190925290912090916105939061104a565b8352600180830154602085015282546040808601919091529082015460808501526105c0908a013561104a565b60e08401526080830151600283015410156105dd57805460608401525b6106368b6040518060e001604052808c602001358152602001866060015181526020018660400151815260200186602001518152602001866000015181526020018c6000013581526020018d610100013581525061129b565b60c08601529850955061064d8b60608c0135611460565b9450848360000151101580156106665750848360e00151105b1561067f5761067c866102b78c60e001356110cb565b95505b61068d8b8a60400135610eee565b6101408401526106a18b60408b0135610f9c565b61018084018190526101408401516106b89161100f565b61016084018190526001850154855460e08601516106da93908a9060006110f1565b9650866000036106fd5760405163955a8bf560e01b815260040160405180910390fd5b61071a8b8a6040013561071589876101800151611169565b611189565b61072c89606001358b60a0013561100f565b6101c08401526040890135893510801561074a575084836101c00151115b156107685760405163444507e160e01b815260040160405180910390fd5b878360400151610778919061281e565b60a08401526020830151158015610791575060c0830151155b80156107a0575060a083015115155b156107dd576000825542600283015560a08301516040519081528935906000805160206129008339815191529060200160405180910390a26107fe565b878160000160008282546107f1919061281e565b909155505060a083015182555b336000908152600385016020526040902060018101546101208501819052610100850151106108465787815561010084015161083b906001612831565b610120850152610860565b8781600001600082825461085a9190612831565b90915550505b6108738460800151856101200151611474565b600182015584548890869060009061088c908490612831565b909155505060408051908b0135908b359033907f9d7ab6bb30c003ae7d5b583911db0ada7a9e51b0b4ac7ac1bb5e6896e82e4dbe906108d2908c908f908f908e90612691565b60405180910390a45050505050945094509450949050565b600080600083602001356000036109145760405163162908e360e11b815260040160405180910390fd5b83356000908152602088815260408083203384526003810183528184206001810154835160e081018552868152948501869052928401859052606084018590526080840185905260a0840185905260c08401949094529291818460020154101561098057825460208201525b80602001516000036109a557604051639b0e91e160e01b815260040160405180910390fd5b602088013581526109b6883561104a565b60808201528354604082015260018401546060820152873560a082015261010089013560c082015260006109ea8b8361129b565b919950975090506109ff8b60608c0135611460565b95506000610a158a604001358c60a0013561100f565b905086811180610a3b575060608b013515801590610a3b57506120008c01548b60600135115b15610a595760405163444507e160e01b815260040160405180910390fd5b6000888460400151610a6b919061281e565b905083606001516000148015610a7f575082155b8015610a8a57508015155b15610ac257600087554260028801556040518181528b35906000805160206129008339815191529060200160405180910390a2610adf565b88866000016000828254610ad6919061281e565b90915550508087555b6040518b359033907f0130a7b525bd6b1e72def1ee0b77f3467028a0e958e30174a0c95eb3860fc22190610b18908e908e908e906126f1565b60405180910390a3505050505050509450945094915050565b60008083600003610b555760405163162908e360e11b815260040160405180910390fd5b610b62878787878761148b565b915091509550959350505050565b600082600003610b935760405163162908e360e11b815260040160405180910390fd5b811580610ba15750611cdc82115b15610bbf576040516363df817160e01b815260040160405180910390fd5b6000610bcb858461169b565b90506000610bd88461104a565b6000858152602089905260409020909150610bf690338488856116b4565b925082600003610c195760405163955a8bf560e01b815260040160405180910390fd5b5050949350505050565b600082600003610c465760405163162908e360e11b815260040160405180910390fd5b6000828152602086905260409020600181015480851115610c7a57604051633a23d82560e01b815260040160405180910390fd5b6000610c858561104a565b83549091506000610c96898861169b565b9050610ca78483838b87600161173e565b955085600003610cca5760405163955a8bf560e01b815260040160405180910390fd5b3360009081526003860160205260408120600181015460028801549192911015610cf2575080545b801580610cfe57508088115b15610d1c5760405163955a8bf560e01b815260040160405180910390fd5b610d26888561281e565b935083158015610d34575082155b15610d3d578599505b610d478a8761281e565b60018801819055955085158015610d5c575082155b8015610d6757508315155b15610d9e576000875542600288015560405184815289906000805160206129008339815191529060200160405180910390a2610dbb565b87826000016000828254610db2919061281e565b90915550508387555b50505050505050949350505050565b60008080808087875b8887108015610de157508185105b15610e78578a8a86818110610df857610df8612844565b90506020020135935087841115610e22576040516339cf269160e21b815260040160405180910390fd5b610e308d8d6001848861148b565b5092506000839003610e555760405163162908e360e11b815260040160405180910390fd5b610e5f8388612831565b9650610e6b838261281e565b9050846001019450610dd3565b888714610ede576000610e8b8d8a61169b565b90506000610e988a61104a565b9050610eb88f60008c815260200190815260200160002033848c856116b4565b975087600003610edb5760405163955a8bf560e01b815260040160405180910390fd5b50505b5050505050965096945050505050565b6000610ef98261285a565b9150600183836120018110610f1057610f10612844565b0154915060008060005b858416600003610f9257610f2e848761281e565b925086836120018110610f4357610f43612844565b015491508661200101836120018110610f5e57610f5e612844565b0154905080600003610f705781610f7a565b610f7a818361100f565b610f84908661281e565b9450600184901b9350610f1a565b5050505092915050565b6000610fa78261285a565b9150670de0b6b3a764000090505b61200082116110095760008361200101836120018110610fd757610fd7612844565b015490508015610fee57610feb828261100f565b91505b610ff783611782565b6110019084612831565b925050610fb5565b92915050565b6000670de0b6b3a7640000611025600282612889565b61102f84866128ab565b6110399190612831565b6110439190612889565b9392505050565b6000806110598361103c6128c2565b9050610c9f1981128061106d575061103c81135b1561108b57604051637edf443b60e11b815260040160405180910390fd5b6110436110b061109a836117a3565b6110ab670df27a2cdf448000611833565b611917565b6119dc565b60006110c18383611a73565b5090949350505050565b60006110096110e3836813c9647e25a9940000611169565b67016345785d8a0000611b63565b6000841580156110ff575086155b1561110b57508261115f565b8560000361111a57508261115f565b61115c86611130670de0b6b3a7640000876128ab565b61113a868b6128ab565b61114c670de0b6b3a76400008a6128ab565b6111569190612831565b85611b73565b90505b9695505050505050565b600081611177600282612889565b61102f670de0b6b3a7640000866128ab565b6111928261285a565b915060008060005b612000851161123857858561200181106111b6576111b6612844565b0154925085612001018561200181106111d1576111d1612844565b015491506111df8484612831565b90508115611208576111f1838361100f565b6111fb828461100f565b611205919061281e565b93505b808686612001811061121c5761121c612844565b015561122785611782565b6112319086612831565b945061119a565b505050505050565b8015611295576001600160a01b03821660009081526003850160205260409020600181015484106112735781815561128d565b818160000160008282546112879190612831565b90915550505b426001909101555b50505050565b6000806000806112af868660a00151610eee565b9050806000036112d25760405163bb55fd2760e01b815260040160405180910390fd5b60006112e2878760a00151610f9c565b905060006112f0838361100f565b9050600061131388606001518960400151848b602001518c608001516000611bd0565b9050600082896000015110801561132a5750885182115b15611374578860000151975061135189606001518a60400151858b8d6080015160016110f1565b9650611361878a60200151611b63565b965061136d8885611169565b90506113e5565b818310156113b45782975061139a89606001518a60400151858b8d6080015160016110f1565b96506113aa878a60200151611b63565b96508490506113e5565b886020015196506113d689606001518a60400151858a8d608001516000611bd0565b97506113e28885611169565b90505b886040015187036113f7578297508490505b611401818661281e565b9550866000036114245760405163955a8bf560e01b815260040160405180910390fd5b806000036114455760405163162908e360e11b815260040160405180910390fd5b6114548a8a60a0015183611c35565b50505050509250925092565b600061104361146f84846110b5565b61104a565b6000818310156114845781611043565b5090919050565b600081815260208690526040812060018101548291908083036114c157604051633a23d82560e01b815260040160405180910390fd5b33600090815260038301602052604081206001810154600285015491929110156114e9575080545b8060000361150a57604051639b0e91e160e01b815260040160405180910390fd5b60006115158861104a565b855490915060006115268d8b61169b565b90506115328b87611b63565b985060006115458784848d88600161173e565b9050806000036115685760405163955a8bf560e01b815260040160405180910390fd5b848111611577578098506115a8565b849850611585858b83611ce6565b9950896000036115a85760405163955a8bf560e01b815260040160405180910390fd5b6115b2838a611b63565b6115bc908461281e565b9250821580156115ca575081155b156115d3578699505b6115dd878b611b63565b99506115e98a8861281e565b965086158015906115f957508c87105b15611617576040516345b3f65d60e01b815260040160405180910390fd5b600188018790558615801561162a575081155b801561163557508215155b1561166c57600088554260028901556040518381528b906000805160206129008339815191529060200160405180910390a2611689565b88866000016000828254611680919061281e565b90915550508288555b50505050505050509550959350505050565b60006110436116aa8484610eee565b6102c98585610f9c565b60028501546000904281036116dc5760405163c1e4c5f760e01b815260040160405180910390fd5b6116f387600101548860000154878787600061173e565b9150838760010160008282546117099190612831565b9091555050865482908890600090611722908490612831565b90915550611734905087828885611240565b5095945050505050565b60008415801561174c575086155b156117625761175b848461100f565b905061115f565b856000036117745761175b848461100f565b61115c8661113085876128ab565b6000811561179e5761179960001983186001612831565b821690505b919050565b60007809392ee8e921d5d073aff322e62439fcf32d7f344649470f8f198212156117e85760405163e608e18b60e01b8152600481018390526024015b60405180910390fd5b7809392ee8e921d5d073aff322e62439fcf32d7f344649470f90821315611825576040516371f72a3160e01b8152600481018390526024016117df565b50670de0b6b3a76400000290565b60008082136118585760405163309fa7dd60e11b8152600481018390526024016117df565b6000670de0b6b3a764000083126118715750600161188a565b6000199050826a0c097ce7bc90715b34b9f160241b0492505b600061189f670de0b6b3a76400008505611d94565b670de0b6b3a764000081029350905083811d670de0b6b3a763ffff1981016118c957505002919050565b6706f05b59d3b200005b600081131561190e57670de0b6b3a7640000828002059150671bc16d674ec800008212611906579384019360019190911d905b60011d6118d3565b50505002919050565b6000600160ff1b83148061192e5750600160ff1b82145b1561194c57604051630d01a11b60e21b815260040160405180910390fd5b6000806000851261195d5784611962565b846000035b9150600084126119725783611977565b836000035b905060006119858383611e72565b90506001600160ff1b038111156119b25760405163bf79e8d960e01b8152600481018290526024016117df565b6000198087139086138082186001146119cb57826119d0565b826000035b98975050505050505050565b600080821215611a2f5768033dd1780914b9711419821215611a0057506000919050565b611a0c826000036119dc565b6a0c097ce7bc90715b34b9f160241b81611a2857611a28612873565b0592915050565b680a688906bd8b0000008212611a5b5760405163e69458f960e01b8152600481018390526024016117df565b670de0b6b3a7640000604083901b0461104381611f38565b60008080611000670de0b6b3a764000082808080805b8615611b5557611a99878b612831565b93508b846120018110611aae57611aae612844565b015492508b61200101846120018110611ac957611ac9612844565b0154915081600003611ae457611adf868461100f565b611b06565b611b06611af183886128ab565b846a0c097ce7bc90715b34b9f160241b611ce6565b611b109086612831565b90508a811015611b2f57611cdc8411611b2a578399508094505b611b49565b8115611b4257611b3f86836125ca565b95505b8098508597505b600187901c9650611a89565b505050505050509250925092565b6000818311156114845781611043565b600080611b81868686611ce6565b90506001836002811115611b9757611b976128e9565b148015611bb4575060008480611baf57611baf612873565b868809115b15611bc757611bc4600182612831565b90505b95945050505050565b600084158015611bde575086155b15611bea57508261115f565b85600003611bf957508261115f565b61115c611c0684896128ab565b611c18670de0b6b3a7640000886128ab565b611c229190612831565b85611156670de0b6b3a76400008a6128ab565b611c3e8261285a565b91505b6120008211611ce15760008184846120018110611c6057611c60612844565b016000828254611c70919061281e565b925050819055905060008461200101846120018110611c9157611c91612844565b015490508015611cc557611ca5828261100f565b611cb8611cb28585612831565b8361100f565b611cc2919061281e565b92505b611cce84611782565b611cd89085612831565b93505050611c41565b505050565b6000808060001985870985870292508281108382030391505080600003611d2057838281611d1657611d16612873565b0492505050611043565b808411611d2c57600080fd5b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000600160801b8210611db457608091821c91611db19082612831565b90505b600160401b8210611dd257604091821c91611dcf9082612831565b90505b600160201b8210611df057602091821c91611ded9082612831565b90505b620100008210611e0d57601091821c91611e0a9082612831565b90505b6101008210611e2957600891821c91611e269082612831565b90505b60108210611e4457600491821c91611e419082612831565b90505b60048210611e5f57600291821c91611e5c9082612831565b90505b6002821061179e57611009600182612831565b60008080600019848609848602925082811083820303915050670de0b6b3a76400008110611eb65760405163698d9a0160e11b8152600481018290526024016117df565b600080670de0b6b3a764000086880991506706f05b59d3b1ffff8211905082600003611ef45780670de0b6b3a7640000850401945050505050611009565b620400008285030493909111909103600160ee1b02919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690201905092915050565b600160bf1b6001603f1b821615611f585768016a09e667f3bcc9090260401c5b6001603e1b821615611f73576801306fe0a31b7152df0260401c5b6001603d1b821615611f8e576801172b83c7d517adce0260401c5b6001603c1b821615611fa95768010b5586cf9890f62a0260401c5b6001603b1b821615611fc4576801059b0d31585743ae0260401c5b6001603a1b821615611fdf57680102c9a3e778060ee70260401c5b600160391b821615611ffa5768010163da9fb33356d80260401c5b600160381b82161561201557680100b1afa5abcbed610260401c5b600160371b8216156120305768010058c86da1c09ea20260401c5b600160361b82161561204b576801002c605e2e8cec500260401c5b600160351b82161561206657680100162f3904051fa10260401c5b600160341b821615612081576801000b175effdc76ba0260401c5b600160331b82161561209c57680100058ba01fb9f96d0260401c5b600160321b8216156120b75768010002c5cc37da94920260401c5b600160311b8216156120d2576801000162e525ee05470260401c5b600160301b8216156120ed5768010000b17255775c040260401c5b6001602f1b821615612108576801000058b91b5bc9ae0260401c5b6001602e1b82161561212357680100002c5c89d5ec6d0260401c5b6001602d1b82161561213e5768010000162e43f4f8310260401c5b6001602c1b82161561215957680100000b1721bcfc9a0260401c5b6001602b1b8216156121745768010000058b90cf1e6e0260401c5b6001602a1b82161561218f576801000002c5c863b73f0260401c5b600160291b8216156121aa57680100000162e430e5a20260401c5b600160281b8216156121c5576801000000b1721835510260401c5b600160271b8216156121e057680100000058b90c0b490260401c5b600160261b8216156121fb5768010000002c5c8601cc0260401c5b600160251b821615612216576801000000162e42fff00260401c5b600160241b8216156122315768010000000b17217fbb0260401c5b600160231b82161561224c576801000000058b90bfce0260401c5b600160221b82161561226757680100000002c5c85fe30260401c5b600160211b8216156122825768010000000162e42ff10260401c5b600160201b82161561229d57680100000000b17217f80260401c5b63800000008216156122b85768010000000058b90bfc0260401c5b63400000008216156122d3576801000000002c5c85fe0260401c5b63200000008216156122ee57680100000000162e42ff0260401c5b6310000000821615612309576801000000000b17217f0260401c5b630800000082161561232457680100000000058b90c00260401c5b630400000082161561233f5768010000000002c5c8600260401c5b630200000082161561235a576801000000000162e4300260401c5b63010000008216156123755768010000000000b172180260401c5b6280000082161561238f576801000000000058b90c0260401c5b624000008216156123a957680100000000002c5c860260401c5b622000008216156123c35768010000000000162e430260401c5b621000008216156123dd57680100000000000b17210260401c5b620800008216156123f75768010000000000058b910260401c5b62040000821615612411576801000000000002c5c80260401c5b6202000082161561242b57680100000000000162e40260401c5b620100008216156124445761b172600160401b010260401c5b61800082161561245c576158b9600160401b010260401c5b61400082161561247457612c5d600160401b010260401c5b61200082161561248c5761162e600160401b010260401c5b6110008216156124a457610b17600160401b010260401c5b6108008216156124bc5761058c600160401b010260401c5b6104008216156124d4576102c6600160401b010260401c5b6102008216156124ec57610163600160401b010260401c5b6101008216156125035760b1600160401b010260401c5b6080821615612519576059600160401b010260401c5b604082161561252f57602c600160401b010260401c5b6020821615612545576016600160401b010260401c5b601082161561255b57600b600160401b010260401c5b6008821615612571576006600160401b010260401c5b6004821615612587576003600160401b010260401c5b600282161561259d576001600160401b010260401c5b60018216156125b3576001600160401b010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b6000670de0b6b3a764000061103983856128ab565b600061012082840312156125f257600080fd5b50919050565b6000806000808486036101a081121561261057600080fd5b853594506020860135935061262887604088016125df565b9250604061015f198201121561263d57600080fd5b50929591945092610160019150565b6000806000808486036101e081121561266457600080fd5b853594506020860135935061267c87604088016125df565b9250608061015f198201121561263d57600080fd5b93845260208401929092526040830152606082015260800190565b6000806000808486036101c08112156126c457600080fd5b85359450602086013593506126dc87604088016125df565b9250606061015f198201121561263d57600080fd5b9283526020830191909152604082015260600190565b600080600080600060a0868803121561271f57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806000806080858703121561275857600080fd5b5050823594602084013594506040840135936060013592509050565b60008060008060008060a0878903121561278d57600080fd5b863595506020870135945060408701356001600160401b03808211156127b257600080fd5b818901915089601f8301126127c657600080fd5b8135818111156127d557600080fd5b8a60208260051b85010111156127ea57600080fd5b979a9699505060200196606081013595608090910135945092505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561100957611009612808565b8082018082111561100957611009612808565b634e487b7160e01b600052603260045260246000fd5b60006001820161286c5761286c612808565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826128a657634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761100957611009612808565b81810360008312801583831316838312821617156128e2576128e2612808565b5092915050565b634e487b7160e01b600052602160045260246000fdfe30ee43613aaa48d222b158aab1123c5a29d452f8b1a849e5f815dd355923ba85a264697066735822122020d561819e833f0a99b6762f27ff69b4ade2f8897912c3f31d7267a91efc48de64736f6c63430008120033", + "from": "0xcD9C63CFEE8ad52e6ff0B7F6Cb8726933D0FFaa2", + "to": null, + "nonce": 8 + }, + { + "operationName": "PositionNFTSVG", + "address": "0xF62792655858FA180F5ADcE43E2758B1E45eCb9a", + "data": "0x613b8161003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c806337b2b7511461003a575b600080fd5b61004d61004836600461084f565b610063565b60405161005a9190610953565b60405180910390f35b604080518082019091526015815274416a6e6120506f736974696f6e73204e46542d563160581b6020820152606090600061009d8461014c565b905060006100ae85604001516101a6565b6040516020016100be91906109a2565b604051602081830303815290604052905060006100f2601487608001516001600160a01b03166102ae90919063ffffffff16565b90506101228285858460405160200161010e94939291906109d6565b604051602081830303815290604052610456565b6040516020016101329190610ac7565b604051602081830303815290604052945050505050919050565b60606101566105ba565b61015e61064e565b61017084600001518560200151610673565b61017d85604001516106bc565b6040516020016101909493929190610b0c565b6040516020818303038152906040529050919050565b6060816000036101cd5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156101f757806101e181610bf7565b91506101f09050600a83610c26565b91506101d1565b6000816001600160401b03811115610211576102116106d7565b6040519080825280601f01601f19166020018201604052801561023b576020820181803683370190505b5090505b84156102a657610250600183610c3a565b915061025d600a86610c4d565b610268906030610c61565b60f81b81838151811061027d5761027d610c74565b60200101906001600160f81b031916908160001a90535061029f600a86610c26565b945061023f565b949350505050565b606060006102bd836002610c8a565b6102c8906002610c61565b6001600160401b038111156102df576102df6106d7565b6040519080825280601f01601f191660200182016040528015610309576020820181803683370190505b509050600360fc1b8160008151811061032457610324610c74565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061035357610353610c74565b60200101906001600160f81b031916908160001a9053506000610377846002610c8a565b610382906001610c61565b90505b60018111156103fa576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106103b6576103b6610c74565b1a60f81b8282815181106103cc576103cc610c74565b60200101906001600160f81b031916908160001a90535060049490941c936103f381610ca1565b9050610385565b50831561044d5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640160405180910390fd5b90505b92915050565b6060815160000361047557505060408051602081019091526000815290565b6000604051806060016040528060408152602001613aec60409139905060006003845160026104a49190610c61565b6104ae9190610c26565b6104b9906004610c8a565b905060006104c8826020610c61565b6001600160401b038111156104df576104df6106d7565b6040519080825280601f01601f191660200182016040528015610509576020820181803683370190505b509050818152600183018586518101602084015b81831015610575576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f811685015182535060010161051d565b60038951066001811461058f57600281146105a0576105ac565b613d3d60f01b6001198301526105ac565b603d60f81b6000198301525b509398975050505050505050565b606060006040516020016105cd90610cb8565b604051602081830303815290604052905060006040516020016105ef90610f9e565b604051602081830303815290604052905060006040516020016106119061225a565b6040516020818303038152906040529050828282604051602001610637939291906133c2565b604051602081830303815290604052935050505090565b606060405160200161065f90613450565b604051602081830303815290604052905090565b606082826040516020016106889291906137fe565b60408051601f19818403018152908290526106a59160200161383a565b604051602081830303815290604052905092915050565b60606106c7826101a6565b604051602001610190919061391b565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b038111828210171561070f5761070f6106d7565b60405290565b604051601f8201601f191681016001600160401b038111828210171561073d5761073d6106d7565b604052919050565b600082601f83011261075657600080fd5b81356001600160401b0381111561076f5761076f6106d7565b610782601f8201601f1916602001610715565b81815284602083860101111561079757600080fd5b816020850160208301376000918101602001919091529392505050565b80356001600160a01b03811681146107cb57600080fd5b919050565b600082601f8301126107e157600080fd5b813560206001600160401b038211156107fc576107fc6106d7565b8160051b61080b828201610715565b928352848101820192828101908785111561082557600080fd5b83870192505b848310156108445782358252918301919083019061082b565b979650505050505050565b60006020828403121561086157600080fd5b81356001600160401b038082111561087857600080fd5b9083019060c0828603121561088c57600080fd5b6108946106ed565b8235828111156108a357600080fd5b6108af87828601610745565b8252506020830135828111156108c457600080fd5b6108d087828601610745565b602083015250604083013560408201526108ec606084016107b4565b60608201526108fd608084016107b4565b608082015260a08301358281111561091457600080fd5b610920878286016107d0565b60a08301525095945050505050565b60005b8381101561094a578181015183820152602001610932565b50506000910152565b602081526000825180602084015261097281604085016020870161092f565b601f01601f19169190910160400192915050565b6000815161099881856020860161092f565b9290920192915050565b6b416a6e6120546f6b656e202360a01b8152600082516109c981600c85016020870161092f565b91909101600c0192915050565b683d913730b6b2911d1160b91b815284516000906109fb816009850160208a0161092f565b71111610113232b9b1b934b83a34b7b7111d1160711b6009918401918201528551610a2d81601b840160208a0161092f565b6b1116101134b6b0b3b2911d1160a11b601b92909101918201527919185d184e9a5b5859d94bdcdd99cade1b5b0ed8985cd94d8d0b60321b60278201528451610a7d81604184016020890161092f565b6b1116101137bbb732b9111d1160a11b604192909101918201528351610aaa81604d84016020880161092f565b61227d60f01b604d9290910191820152604f019695505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251610aff81601d85016020870161092f565b91909101601d0192915050565b7f3c7376672066696c6c3d226e6f6e65222076696577426f783d2230203020353181527f32203531322220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f6020820152691918181817b9bb33911f60b11b604082015260008551610b7d81604a850160208a0161092f565b855190830190610b9481604a840160208a0161092f565b8551910190610baa81604a84016020890161092f565b8451910190610bc081604a84016020880161092f565b651e17b9bb339f60d11b604a92909101918201526050019695505050505050565b634e487b7160e01b600052601160045260246000fd5b600060018201610c0957610c09610be1565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082610c3557610c35610c10565b500490565b8181038181111561045057610450610be1565b600082610c5c57610c5c610c10565b500690565b8082018082111561045057610450610be1565b634e487b7160e01b600052603260045260246000fd5b808202811582820484141761045057610450610be1565b600081610cb057610cb0610be1565b506000190190565b600080516020613aac8339815191528082527f783d223332222066696c6c3d2275726c28237061696e74305f6c696e6561725f60208301526918989aaf9a989491179f60b11b6040830152604a8201527f783d223332222066696c6c3d22626c61636b222066696c6c2d6f706163697479606a820152671e9118171a91179f60c11b608a8201527f3c672066696c7465723d2275726c282366696c746572305f665f3131355f353160928201526214911f60e91b60b28201527f3c656c6c697073652063783d22333734222063793d223339302e35222072783d60b58201527f22313232222072793d223132312e35222066696c6c3d2223423435434436222f60d5820152601f60f91b60f58201527f3c636972636c652063783d22313537222063793d223331352220723d2231323260f68201527111103334b6361e9111999ba321a32111179f60711b6101168201527f3c656c6c697073652063783d223133372e373833222063793d223133372e35226101288201527f2072783d223132312e373833222072793d223132312e35222066696c6c3d2223610148820152681b1a1922221911179f60b91b6101688201526000610450610f58610f12610e8e61017186015b631e17b39f60e11b815260040190565b7f3c72656374206f7061636974793d22302e352220783d2231362e352220793d2281527f31362e35222077696474683d2234373922206865696768743d2234373922207260208201527f783d2232332e35222066696c6c3d22626c61636b22207374726f6b653d22776860408201526534ba3291179f60d11b606082015260660190565b7f3c636972636c652063783d22323536222063793d223235362220723d22323238815273171a911039ba3937b5b29e913bb434ba3291179f60611b602082015260340190565b7f3c636972636c652063783d22323536222063793d223235362220723d22323139815273171a911039ba3937b5b29e913bb434ba3291179f60611b602082015260340190565b7f3c7061746820643d224d3431302e32373320343637433431302e32303420343681527f37203431302e313339203436362e393734203431302e303738203436362e393260208201527f32433431302e303236203436362e38363120343130203436362e37393620343160408201527f30203436362e37323743343130203436362e363834203431302e30303420343660608201527f362e363435203431302e303133203436362e36314c3431332e3036382034353860808201527f2e323634433431332e303934203435382e313639203431332e3134362034353860a08201527f2e303836203431332e323234203435382e303137433431332e3331312034353760c08201527f2e393339203431332e343238203435372e39203431332e353735203435372e3960e08201527f483431352e343939433431352e363436203435372e39203431352e37353920346101008201527f35372e393339203431352e383337203435382e303137433431352e39323420346101208201527f35382e303836203431352e3938203435382e313639203431362e3030362034356101408201527f382e3236344c3431392e303438203436362e3631433431392e303635203436366101608201527f2e363435203431392e303734203436362e363834203431392e303734203436366101808201527f2e373237433431392e303734203436362e373936203431392e303434203436366101a08201527f2e383631203431382e393833203436362e393232433431382e393331203436366101c08201527f2e393734203431382e38363620343637203431382e37383820343637483431376101e08201527f2e313839433431372e30353920343637203431362e393539203436362e3937206102008201527f3431362e3839203436362e393039433431362e383239203436362e38342034316102208201527f362e3739203436362e373739203431362e373733203436362e3732374c3431366102408201527f2e323636203436352e343031483431322e3739354c3431322e333031203436366102608201527f2e373237433431322e323834203436362e373739203431322e323435203436366102808201527f2e3834203431322e313834203436362e393039433431322e313233203436362e6102a08201527f3937203431322e30313920343637203431312e38373220343637483431302e326102c08201527f37335a4d3431332e333238203436332e353239483431352e3734364c3431342e6102e08201527f353234203436302e3039374c3431332e333238203436332e3532395a222066696103008201526b36361e913bb434ba3291179f60a11b6103208201527f3c7061746820643d224d3433312e313138203436372e3133433433302e36323461032c8201527f203436372e3133203433302e313531203436372e303639203432392e3730312061034c8201527f3436362e393438433432392e323539203436362e383138203432382e3836342061036c8201527f3436362e363237203432382e353138203436362e333736433432382e3137312061038c8201527f3436362e313235203432372e383934203436352e383133203432372e363836206103ac8201527f3436352e3434433432372e343836203436352e303637203432372e33373820346103cc8201527f36342e363334203432372e333631203436342e3134433432372e3336312034366103ec8201527f342e303632203432372e333837203436332e393937203432372e34333920343661040c8201527f332e393435433432372e343931203436332e383834203432372e35362034363361042c8201527f2e383534203432372e363437203436332e383534483432392e3430324334323961044c8201527f2e353233203436332e383534203432392e363134203436332e3838342034323961046c8201527f2e363735203436332e393435433432392e373434203436342e3030362034323961048c8201527f2e38203436342e303937203432392e383434203436342e323138433432392e386104ac8201527f3837203436342e343631203432392e393639203436342e3636203433302e30396104cc8201527f31203436342e383136433433302e323132203436342e393633203433302e33366104ec8201527f34203436352e303736203433302e353436203436352e313534433433302e373361050c8201527f36203436352e323233203433302e393439203436352e323538203433312e313861052c8201527f33203436352e323538433433312e363136203436352e323538203433312e393561054c8201527f203436352e313139203433322e313834203436342e383432433433322e34313861056c8201527f203436342e353536203433322e353335203436342e3134203433322e3533352061058c8201527f3436332e353934563435392e383337483432382e333233433432382e323336206105ac8201527f3435392e383337203432382e313538203435392e383037203432382e303839206105cc8201527f3435392e373436433432382e303238203435392e363835203432372e393938206105ec8201527f3435392e363037203432372e393938203435392e353132563435382e3232354361060c8201527f3432372e393938203435382e3133203432382e303238203435382e303532203461062c8201527f32382e303839203435372e393931433432382e313538203435372e393320343261064c8201527f382e323336203435372e39203432382e333233203435372e39483433342e363161066c8201527f35433433342e3731203435372e39203433342e373838203435372e393320343361068c8201527f342e383439203435372e393931433433342e393138203435382e3035322034336106ac8201527f342e393533203435382e3133203433342e393533203435382e323235563436336106cc8201527f2e363539433433342e393533203436342e343133203433342e373838203436356106ec8201527f2e3035203433342e343539203436352e3537433433342e313239203436362e3061070c8201527f3831203433332e363739203436362e343731203433332e313037203436362e3761072c8201527f34433433322e35333520343637203433312e383732203436372e31332034333161074c8201527b1718989c101a1b1b971899ad11103334b6361e913bb434ba3291179f60211b61076c8201527f3c7061746820643d224d3434352e30303620343637433434342e3931203436376107888201527f203434342e383332203436362e3937203434342e373732203436362e393039436107a88201527f3434342e373131203436362e383438203434342e363831203436362e373720346107c88201527f34342e363831203436362e363735563435382e323235433434342e36383120346107e88201527f35382e3133203434342e373131203435382e303532203434342e3737322034356108088201527f372e393931433434342e383332203435372e3933203434342e3931203435372e6108288201527f39203434352e303036203435372e39483434362e333834433434362e353331206108488201527f3435372e39203434362e363335203435372e393335203434362e3639362034356108688201527f382e303034433434362e373635203435382e303635203434362e3830382034356108888201527f382e313132203434362e383236203435382e3134374c3434392e3939382034366108a88201527f332e313532563435382e323235433434392e393938203435382e3133203435306108c88201527f2e303238203435382e303532203435302e303839203435372e393931433435306108e88201527f2e313439203435372e3933203435302e323237203435372e39203435302e33326109088201527f33203435372e39483435312e383833433435312e393738203435372e392034356109288201527f322e303536203435372e3933203435322e313137203435372e393931433435326109488201527f2e313737203435382e303532203435322e323038203435382e3133203435322e6109688201527f323038203435382e323235563436362e363735433435322e323038203436362e6109888201527f373632203435322e313737203436362e3834203435322e313137203436362e396109a88201527f3039433435322e303536203436362e3937203435312e393738203436372034356109c88201527f312e38383320343637483435302e343932433435302e333533203436372034356109e88201527f302e323439203436362e393635203435302e3138203436362e38393643343530610a088201527f2e313139203436362e383237203435302e3038203436362e373739203435302e610a288201527f303633203436362e3735334c3434362e383931203436312e393433563436362e610a488201527f363735433434362e383931203436362e3737203434362e3836203436362e3834610a688201527f38203434362e38203436362e393039433434362e373339203436362e39372034610a888201527f34362e36363120343637203434362e35363620343637483434352e3030365a22610aa88201526e103334b6361e913bb434ba3291179f60891b610ac88201527f3c7061746820643d224d3436312e35303420343637433436312e343335203436610ad78201527f37203436312e3337203436362e393734203436312e333039203436362e393232610af78201527f433436312e323537203436362e383631203436312e323331203436362e373936610b178201527f203436312e323331203436362e373237433436312e323331203436362e363834610b378201527f203436312e323336203436362e363435203436312e323434203436362e36314c610b578201527f3436342e323939203435382e323634433436342e333235203435382e31363920610b778201527f3436342e333737203435382e303836203436342e343535203435382e30313743610b978201527f3436342e353432203435372e393339203436342e363539203435372e39203436610bb78201527f342e383036203435372e39483436362e3733433436362e383738203435372e39610bd78201527f203436362e3939203435372e393339203436372e303638203435382e30313743610bf78201527f3436372e313535203435382e303836203436372e323131203435382e31363920610c178201527f3436372e323337203435382e3236344c3437302e323739203436362e36314334610c378201527f37302e323937203436362e363435203437302e333035203436362e3638342034610c578201527f37302e333035203436362e373237433437302e333035203436362e3739362034610c778201527f37302e323735203436362e383631203437302e323134203436362e3932324334610c978201527f37302e313632203436362e393734203437302e30393720343637203437302e30610cb78201527f313920343637483436382e3432433436382e323920343637203436382e313931610cd78201527f203436362e3937203436382e313231203436362e393039433436382e30363120610cf78201527f3436362e3834203436382e303232203436362e373739203436382e3030342034610d178201527f36362e3732374c3436372e343937203436352e343031483436342e3032364c34610d378201527f36332e353332203436362e373237433436332e353135203436362e3737392034610d578201527f36332e343736203436362e3834203436332e343135203436362e393039433436610d778201527f332e333535203436362e3937203436332e32353120343637203436332e313033610d978201527f20343637483436312e3530345a4d3436342e353539203436332e353239483436610db78201527f362e3937374c3436352e373535203436302e3039374c3436342e353539203436610dd78201527519971a991cad11103334b6361e913bb434ba3291179f60511b610df78201527f3c7061746820643d224d3130362e313738203136392e354c323536203432394c610e0d8201527f3430352e383232203136392e35483130362e3137385a22207374726f6b653d22610e2d820152673bb434ba3291179f60c11b610e4d8201527f3c7061746820643d224d3130362e313738203334322e354c3235362038334c34610e558201527f30352e383232203334322e35483130362e3137385a22207374726f6b653d2277610e75820152663434ba3291179f60c91b610e958201527f3c636972636c652063783d22323536222063793d223235362220723d2237312e610e9c820152721a911039ba3937b5b29e913bb434ba3291179f60691b610ebc8201527f3c636972636c652063783d22323536222063793d223235362220723d22323022610ecf82015270103334b6361e91119c9b9a22a2a091179f60791b610eef8201527f3c636972636c652063783d22323634222063793d223234382220723d22342220610f008201526d3334b6361e913bb434ba3291179f60911b610f208201526000610f2e8201610450565b7f3c7061746820643d224d3430362e35203137304c3235362038322e354c31303681527f20313730563334322e354c323536203432392e354c3430362e35203334322e356020820152762b189b982d111039ba3937b5b29e913bb434ba3291179f60491b6040820152600080516020613b2c83398151915260578201527f756c653d226576656e6f64642220643d224d3237342e3131372037342e34383560778201527f33433236382e3236352036382e39323131203236322e3234382036362032353660978201527f2e31203636433234392e393531203636203234332e3933352036382e3932313160b78201527f203233382e3038322037342e34383533433233372e3538322037342e3936313460d78201527f203233372e3536322037352e373533203233382e3033392037362e323533344360f78201527f3233382e3531352037362e37353337203233392e3330372037362e37373333206101178201527f3233392e3830382037362e32393732433234352e3337322037312e30303732206101378201527f3235302e3830322036382e35303131203235362e312036382e353031314332366101578201527f312e3339332036382e35303131203236362e3831382037312e303033203237326101778201527f2e3337372037362e32383337433237322e3436342037362e33373339203237326101978201527f2e3533352037362e34393739203237322e3537362037362e36323732433237326101b78201527f2e3536322037362e37303336203237322e3535342037362e37383234203237326101d78201527f2e3535342037362e383633433237322e3535342037372e31353835203237322e6101f78201527f3435372037372e33313735203237322e3337382037372e33383533433237322e6102178201527f3336312037372e33393939203237322e3334342037372e343135203237322e336102378201527f32382037372e34333035433237322e3139312037372e35363035203237322e306102578201527f35352037372e36383838203237312e3931392037372e38313535433236362e376102778201527f33382037332e353038203236312e3435342037312e32353833203235362e30366102978201527f392037312e32353833433235302e3339352037312e32353833203234342e38336102b78201527f332037332e37353534203233392e3338362037382e35323532433233392e33376102d78201527f362037382e35333335203233392e3336362037382e35343139203233392e33356102f78201527f362037382e353530364c3233392e3334322037382e35363231433233382e39326103178201527f352037382e39313932203233382e3437312037392e33303836203233382e30316103378201527f322037392e373635433233362e3735392038302e39343036203233362e3636316103578201527f2038322e38393837203233372e3736362038342e32343135433233372e3737336103778201527f2038342e32353332203233372e3738312038342e32363439203233372e3738386103978201527f2038342e32373636433233372e3839362038342e34333737203233382e3032346103b78201527f2038342e35353332203233382e3134352038342e36333436433234332e3935386103d78201527f2039302e31323039203234392e393331203933203235362e30333620393343326103f78201527f36322e313834203933203236382e3230312039302e30373839203237342e30356104178201527f332038342e35313437433237342e3535342038342e30333836203237342e35376104378201527f332038332e323437203237342e3039372038322e37343637433237332e3632206104578201527f38322e32343633203237322e3832382038322e32323637203237322e333237206104778201527f38322e37303238433236362e3736342038372e39393238203236312e333333206104978201527f39302e34393839203235362e3033362039302e34393839433235302e373338206104b78201527f39302e34393839203234352e3330382038372e39393238203233392e373434206104d78201527f38322e373032384c3233392e3733352038322e36393434433233392e333936206104f78201527f38322e33323734203233392e3435382038312e38333536203233392e373320386105178201527f312e35383431433233392e3734332038312e35373238203233392e37353520386105378201527f312e35363133203233392e3736372038312e35343935433233392e39303420386105578201527f312e34313232203234302e3034322038312e32383134203234302e31383220386105778201527f312e31353333433234352e3539362038352e36363136203235312e31323420386105978201527f372e39323839203235362e3734392038372e373333433236322e3134312038376105b78201527f2e35343531203236372e3431392038352e31303132203237322e35382038302e6105d78201527f353839433237322e3639392038302e35323138203237322e3830392038302e346105f78201527f333337203237322e3930352038302e33323532433237322e3932382038302e326106178201527f393835203237322e3935312038302e323731203237322e3937312038302e32346106378201527f33433237332e3332372037392e39323438203237332e3638312037392e3539366106578201527f39203237342e3033362037392e32353933433237342e3634382037382e3732316106778201527f31203237342e3933382037382e30313032203237352e3032362037372e3333366106978201527f31433237352e3038362037372e31393032203237352e3131392037372e3033306106b78201527f34203237352e3131392037362e383633433237352e3131392037352e393634326106d78201527f203237342e3733312037352e30393834203237342e3133392037342e353037436106f78201527f3237342e3133312037342e34393937203237342e3132342037342e34393235206107178201527f3237342e3131372037342e343835335a4d3235362e3036392037332e373539346107378201527f433236302e3631312037332e37353934203236352e32352037352e36303834206107578201527f3237302e3031322037392e34383634433236352e3436362038332e32323036206107778201527f3236312e3031392038352e30383135203235362e3636322038352e32333334436107978201527f3235312e3932372038352e33393833203234372e3038352038332e35353233206107b78201527f3234322e3130392037392e34393934433234362e3837372037352e36313236206107d78201527f3235312e3532312037332e37353934203235362e3036392037332e373539345a6107f78201526f11103334b6361e913bb434ba3291179f60811b6108178201526000610450613355613310613210613110613013612fca612f82612e856108278b01600080516020613b2c83398151915281527f756c653d226576656e6f64642220643d224d3235362e3035392037342e38333260208201527f35433235332e3439322037342e38333235203235312e3431312037362e39313360408201527f38203235312e3431312037392e34383132433235312e3431312038322e30343860608201527f36203235332e3439322038342e31323939203235362e3035392038342e31323960808201527f39433235382e3632372038342e31323939203236302e3730382038322e30343860a08201527f36203236302e3730382037392e34383132433236302e3730382037362e39313360c08201527f38203235382e3632372037342e38333235203235362e3035392037342e38333260e08201527f355a4d3235362e30362038322e32373034433235372e362038322e32373034206101008201527f3235382e3834392038312e30323136203235382e3834392037392e34383132436101208201527f3235382e3834392037372e39343038203235372e362037362e363932203235366101408201527f2e30362037362e363932433235342e3531392037362e363932203235332e32376101608201527f2037372e39343038203235332e32372037392e34383132433235332e323720386101808201527f312e30323136203235342e3531392038322e32373034203235362e30362038326101a08201527517191b981a2d11103334b6361e913bb434ba3291179f60511b6101c08201526101d60190565b7f3c70617468206f7061636974793d22302e352220643d224d3135342e3520313781527f36433135342e35203139382e393134203133352e373032203231372e3520313160208201527f322e35203231372e354338392e32393834203231372e352037302e352031393860408201527f2e3931342037302e35203137364337302e35203135332e3038362038392e323960608201527f3834203133342e35203131322e35203133342e35433133352e3730322031333460808201527f2e35203135342e35203135332e303836203135342e35203137365a222073747260a08201526c37b5b29e913bb434ba3291179f60991b60c082015260cd0190565b600080516020613acc83398151915281527f2063793d2238392e352220723d22343222207374726f6b653d22776869746522602082015261179f60f11b604082015260420190565b600080516020613acc83398151915281527f2063793d223432322e352220723d22343222207374726f6b653d22776869746560208201526211179f60e91b604082015260430190565b7f3c70617468206f7061636974793d22302e352220643d224d3135342e3520333381527f37433135342e35203335392e393134203133352e373032203337382e3520313160208201527f322e35203337382e354338392e32393834203337382e352037302e352033353960408201527f2e3931342037302e35203333374337302e35203331342e3038362038392e323960608201527f3834203239352e35203131322e35203239352e35433133352e3730322032393560808201527f2e35203135342e35203331342e303836203135342e35203333375a222073747260a08201526c37b5b29e913bb434ba3291179f60991b60c082015260cd0190565b7f3c70617468206f7061636974793d22302e352220643d224d3434312e3520313781527f36433434312e35203139382e393134203432322e373032203231372e3520333960208201527f392e35203231372e35433337362e323938203231372e35203335372e3520313960408201527f382e393134203335372e3520313736433335372e35203135332e30383620333760608201527f362e323938203133342e35203339392e35203133342e35433432322e3730322060808201527f3133342e35203434312e35203135332e303836203434312e35203137365a222060a08201526f39ba3937b5b29e913bb434ba3291179f60811b60c082015260d00190565b7f3c70617468206f7061636974793d22302e352220643d224d3434312e3520333381527f37433434312e35203335392e393134203432322e373032203337382e3520333960208201527f392e35203337382e35433337362e323938203337382e35203335372e3520333560408201527f392e393134203335372e3520333337433335372e35203331342e30383620333760608201527f362e323938203239352e35203339392e35203239352e35433432322e3730322060808201527f3239352e35203434312e35203331342e303836203434312e35203333375a222060a08201526f39ba3937b5b29e913bb434ba3291179f60811b60c082015260d00190565b7f3c636972636c652063783d22323536222063793d223235362220723d2233352e8152721a911039ba3937b5b29e913bb434ba3291179f60691b602082015260330190565b7f3c7061746820643d224d3139352e333738203232314c323536203332364c333181527f362e36323220323231483139352e3337385a22207374726f6b653d227768697460208201527432911039ba3937b5b296bbb4b23a341e911911179f60591b604082015260550190565b7f3c6720636c69702d706174683d2275726c2823636c6970305f3131355f353129815261111f60f11b60208201526000845161340581602285016020890161092f565b84519083019061341c81602284016020890161092f565b845191019061343281602284016020880161092f565b631e17b39f60e11b6022929091019182015260260195945050505050565b651e3232b3399f60d11b81527f3c66696c7465722069643d2266696c746572305f665f3131355f35312220783d60068201527f222d3138342220793d222d313834222077696474683d2238383022206865696760268201527f68743d22383936222066696c746572556e6974733d227573657253706163654f60468201527f6e5573652220636f6c6f722d696e746572706f6c6174696f6e2d66696c746572606682015268399e9139a923a1111f60b91b60868201527f3c6665466c6f6f6420666c6f6f642d6f7061636974793d22302220726573756c608f820152773a1e912130b1b5b3b937bab73224b6b0b3b2a334bc11179f60411b60af8201527f3c6665426c656e64206d6f64653d226e6f726d616c2220696e3d22536f75726360c78201527f65477261706869632220696e323d224261636b67726f756e64496d616765466960e7820152723c11103932b9bab63a1e9139b430b83291179f60691b6101078201527f3c6665476175737369616e426c757220737464446576696174696f6e3d22313061011a8201527f302220726573756c743d22656666656374315f666f726567726f756e64426c7561013a8201526a392f98989aaf9a9891179f60a91b61015a820152681e17b334b63a32b91f60b91b6101658201527f3c6c696e6561724772616469656e742069643d227061696e74305f6c696e656161016e8201527f725f3131355f3531222078313d2231352e30353838222079313d223135322e3661018e8201527f3135222078323d22353132222079323d223135322e36313522206772616469656101ae82015278373a2ab734ba399e913ab9b2b929b830b1b2a7b72ab9b2911f60391b6101ce8201527b1e39ba37b81039ba37b816b1b7b637b91e9111a118a09b21a291179f60211b6101e78201527f3c73746f70206f66667365743d22302e353035323038222073746f702d636f6c6102038201526d37b91e9111a11a1aa1a21b11179f60911b6102238201527f3c73746f70206f66667365743d2231222073746f702d636f6c6f723d22233634610231820152661922221911179f60c91b610251820152701e17b634b732b0b923b930b234b2b73a1f60791b6102588201527b1e31b634b82830ba341034b21e9131b634b8182f98989aaf9a98911f60211b610269820152600080516020613aac833981519152610285820152743c1e91199911103334b6361e913bb434ba3291179f60591b6102a5820152711e17b1b634b82830ba341f1e17b232b3399f60711b6102ba82015260006102cc8201610450565b6000835161381081846020880161092f565b602f60f81b908301908152835161382e81600184016020880161092f565b01600101949350505050565b621e339f60e91b81527f3c7465787420746578742d616e63686f723d2273746172742220783d2233327060038201527f782220793d2234367078222066696c6c3d2277686974652220666f6e742d666160238201527f6d696c793d2227616e64616c65206d6f6e6f272c2027436f7572696572204e6560438201527f77272c206d6f6e6f73706163652220666f6e742d73697a653d2231387078223e6063820152600082516138f081608385016020870161092f565b661e17ba32bc3a1f60c91b6083939091019283015250631e17b39f60e11b608a820152608e01919050565b7f3c67207374796c653d227472616e73666f726d3a7472616e736c61746528333281526b383c16101a1a9b383c14911f60a11b60208201527f3c726563742077696474683d223932707822206865696768743d223236707822602c8201527f2072783d22387078222072793d22387078222066696c6c3d227267626128302c604c8201526a1816181618171c1491179f60a91b606c8201527f3c7465787420783d22313270782220793d2231377078222066696c6c3d22766960778201527f6f6c65742220666f6e742d66616d696c793d2227616e64616c65206d6f6e6f2760978201527f2c2027436f7572696572204e6577272c206d6f6e6f73706163652220666f6e7460b78201526c16b9b4bd329e911899383c111f60991b60d78201527f3c747370616e2066696c6c3d2272676261283235352c3235352c3235352c302e60e48201526f1b14911f24a21d101e17ba39b830b71f60811b6101048201526000613aa4610e7e613a91610114850186610986565b661e17ba32bc3a1f60c91b815260070190565b939250505056fe3c726563742077696474683d2235313222206865696768743d223531322220723c636972636c65206f7061636974793d22302e35222063783d223235362e35224142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f3c706174682066696c6c2d72756c653d226576656e6f64642220636c69702d72a2646970667358221220063046b1bffc248619a0eff7dfa7b3e15133f49ca6ca2d86ac30518985a1b5fc64736f6c63430008120033", + "from": "0xcD9C63CFEE8ad52e6ff0B7F6Cb8726933D0FFaa2", + "to": null, + "nonce": 9 + }, + { + "operationName": "AccountGuard", + "address": "0x4Bec5760bbE7FD73B03b80516df4760a05Fb7389", + "data": "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610a3c8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100af5760003560e01c8063022914a7146100b45780632658bb2a146100fa5780633a169f1a1461011d5780633af32abf1461013257806353d6fd5914610145578063715018a6146101585780638da5cb5b14610160578063a17c4ac214610168578063c55a3cf41461017b578063d95de76b1461018e578063f00d4b5d14610196578063f2fde38b146101a9578063f526d1ee146101bc575b600080fd5b6100dd6100c23660046108e7565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61010d6101083660046108e7565b6101e6565b60405190151581526020016100f1565b61013061012b366004610912565b610206565b005b61010d6101403660046108e7565b610283565b610130610153366004610912565b6102a3565b6101306102fd565b6100dd610311565b61010d610176366004610945565b610320565b61013061018936600461096f565b610379565b61013061058e565b6101306101a4366004610945565b6105f7565b6101306101b73660046108e7565b61074d565b6101cf6101ca3660046109b2565b6107c6565b6040805192151583529015156020830152016100f1565b6001600160a01b0316600090815260036020526040902054600216151590565b61020e61081c565b80610234576001600160a01b03821660009081526003602052604090205460fd16610254565b6001600160a01b03821660009081526003602052604090205460ff166002175b6001600160a01b03929092166000908152600360205260409020805460ff191660ff9093169290921790915550565b6001600160a01b0316600090815260036020526040902054600116151590565b6102ab61081c565b806102d1576001600160a01b03821660009081526003602052604090205460fe16610254565b506001600160a01b03166000908152600360205260409020805460ff19811660ff909116176001179055565b61030561081c565b61030f600061087b565b565b6000546001600160a01b031690565b6001600160a01b0382811660009081526004602052604081205490918381169116148061037257506001600160a01b0380831660009081526002602090815260408083209387168352929052205460ff165b9392505050565b3360009081526002602090815260408083206001600160a01b038616845290915290205460ff16806103b557506001546001600160a01b031633145b6104005760405162461bcd60e51b81526020600482015260176024820152761858d8dbdd5b9d0b59dd585c990bdb9bcb5c195c9b5a5d604a1b60448201526064015b60405180910390fd5b6001546001600160a01b0316330361045e576001600160a01b03828116600090815260046020908152604080832080546001600160a01b0319169488169490941790935560028152828220905220805460ff191660011790556104ca565b6001600160a01b038281166000908152600460205260409020548185169116036104ca5760405162461bcd60e51b815260206004820152601d60248201527f6163636f756e742d67756172642f63616e742d64656e792d6f776e657200000060448201526064016103f7565b6001600160a01b038381166000908152600260209081526040808320938616835292905220805460ff1916821580159190911790915561054957816001600160a01b0316836001600160a01b03167f0ceda602a8e00ef76afe24614343eb6c034877c816b6184d641d2d8b713a0fc660405160405180910390a3505050565b816001600160a01b0316836001600160a01b03167f5f708ef9fc37d19d88246c264788c8cdf640c9ff500bd168e941ea1421c4f6c460405160405180910390a3505050565b6001546001600160a01b0316156105e35760405162461bcd60e51b81526020600482015260196024820152781858d8dbdd5b9d0b59dd585c990bd99858dd1bdc9e4b5cd95d603a1b60448201526064016103f7565b600180546001600160a01b03191633179055565b6001600160a01b03821661064a5760405162461bcd60e51b815260206004820152601a6024820152796163636f756e742d67756172642f7a65726f2d6164647265737360301b60448201526064016103f7565b6001600160a01b038181166000908152600460205260409020541633146106b35760405162461bcd60e51b815260206004820152601e60248201527f6163636f756e742d67756172642f6f6e6c792d70726f78792d6f776e6572000060448201526064016103f7565b6001600160a01b03818116600081815260046020908152604080832080546001600160a01b03191695881695861790553380845260028084528285208686528452828520805460ff199081169091558786529084528285208686529093528184208054909316600117909255519293909290917ff613da403ea3a512cfd9a6d475983ef47ea2397949a90b8d935d0a2cb8e620d591a45050565b61075561081c565b6001600160a01b0381166107ba5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103f7565b6107c38161087b565b50565b6001600160a01b038084166000908152600260209081526040808320938816835292905290812054819060ff168361080657610801856101e6565b61080f565b61080f85610283565b9150915094509492505050565b33610825610311565b6001600160a01b03161461030f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103f7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b03811681146108e257600080fd5b919050565b6000602082840312156108f957600080fd5b610372826108cb565b803580151581146108e257600080fd5b6000806040838503121561092557600080fd5b61092e836108cb565b915061093c60208401610902565b90509250929050565b6000806040838503121561095857600080fd5b610961836108cb565b915061093c602084016108cb565b60008060006060848603121561098457600080fd5b61098d846108cb565b925061099b602085016108cb565b91506109a960408501610902565b90509250925092565b600080600080608085870312156109c857600080fd5b6109d1856108cb565b93506109df602086016108cb565b92506109ed604086016108cb565b91506109fb60608601610902565b90509295919450925056fea2646970667358221220c12c6c24d7201c5154db24a6bf52482ecc9e1586389fd536a151971c62df633f64736f6c634300080f0033", + "from": "0xcD9C63CFEE8ad52e6ff0B7F6Cb8726933D0FFaa2", + "to": null, + "nonce": 10 + }, + { + "operationName": "AccountFactory", + "address": "0x2B2E1c7F5Ab4af209cb9804aFaD2FE694A7ef07f", + "data": "0x60c060405234801561001057600080fd5b50604051610d9a380380610d9a83398101604081905261002f916100ec565b6001600160a01b03811660a08190526040805163d95de76b60e01b8152905163d95de76b9160048082019260009290919082900301818387803b15801561007557600080fd5b505af1158015610089573d6000803e3d6000fd5b50505050600060a05160405161009e906100df565b6001600160a01b039091168152602001604051809103906000f0801580156100ca573d6000803e3d6000fd5b506001600160a01b03166080525061011c9050565b6108118061058983390190565b6000602082840312156100fe57600080fd5b81516001600160a01b038116811461011557600080fd5b9392505050565b60805160a05161043c61014d60003960008181606101526101c101526000818160d0015261016c015261043c6000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80637ceab3b11461005c5780639859387b146100995780639dca362f146100ac5780639fde0702146100b4578063a6644516146100cb575b600080fd5b6100837f000000000000000000000000000000000000000000000000000000000000000081565b6040516100909190610372565b60405180910390f35b6100836100a736600461039e565b6100f2565b610083610267565b6100bd60005481565b604051908152602001610090565b6100837f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160a01b03821661014e5760405162461bcd60e51b815260206004820152601c60248201527b6163636f756e742d666163746f72792f7a65726f2d6164647265737360201b60448201526064015b60405180910390fd5b6000806000815461015e906103c2565b9182905550905060006101907f00000000000000000000000000000000000000000000000000000000000000006102d5565b6040516331568f3d60e21b81526001600160a01b0386811660048301528083166024830152600160448301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063c55a3cf490606401600060405180830381600087803b15801561020757600080fd5b505af115801561021b573d6000803e3d6000fd5b5050505081846001600160a01b0316826001600160a01b03167f33310a89c32d8cc00057ad6ef6274d2f8fe22389a992cf89983e09fc84f6cfff60405160405180910390a49392505050565b604051639859387b60e01b81526000903090639859387b9061028d903390600401610372565b6020604051808303816000875af11580156102ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d091906103e9565b905090565b6000604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528260601b60148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f09150506001600160a01b03811661036d5760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606401610145565b919050565b6001600160a01b0391909116815260200190565b6001600160a01b038116811461039b57600080fd5b50565b6000602082840312156103b057600080fd5b81356103bb81610386565b9392505050565b6000600182016103e257634e487b7160e01b600052601160045260246000fd5b5060010190565b6000602082840312156103fb57600080fd5b81516103bb8161038656fea264697066735822122014f83e06cf3a2fb10b5c5b4ff9dcd099eb0d4a15a53c00e1ae169d2f001fc56864736f6c634300080f003360a060405234801561001057600080fd5b5060405161081138038061081183398101604081905261002f916100a4565b6001600160a01b0381166100935760405162461bcd60e51b815260206004820152602160248201527f6163636f756e742d67756172642f77726f6e672d67756172642d6164647265736044820152607360f81b606482015260840160405180910390fd5b6001600160a01b03166080526100d4565b6000602082840312156100b657600080fd5b81516001600160a01b03811681146100cd57600080fd5b9392505050565b60805161070e6101036000396000818160bf015281816101220152818161023b01526102be015261070e6000f3fe6080604052600436106100435760003560e01c80631cff79cd146100875780637ceab3b1146100ad5780638da5cb5b146100ee578063c89acc861461010357600080fd5b3661008257604080513381523460208201527f4c2ffa71705c7e25830709a453da0f6066957bd706c2b7f1b7fc66d3805e92f7910160405180910390a1005b600080fd5b61009a610095366004610470565b610118565b6040519081526020015b60405180910390f35b3480156100b957600080fd5b506100e17f000000000000000000000000000000000000000000000000000000000000000081565b6040516100a49190610533565b3480156100fa57600080fd5b506100e1610221565b610116610111366004610547565b6102b6565b005b60008260016000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f526d1ee303387876040518563ffffffff1660e01b815260040161017294939291906105cb565b6040805180830381865afa15801561018e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101b2919061060a565b91509150816101dc5760405162461bcd60e51b81526004016101d39061063d565b60405180910390fd5b806101f95760405162461bcd60e51b81526004016101d39061066e565b602060008751602089018a6113885a03f43d6000803e80801561021c5760206000f35b3d6000fd5b60405163022914a760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063022914a790610270903090600401610533565b602060405180830381865afa15801561028d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b191906106a4565b905090565b8260008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f526d1ee303387876040518563ffffffff1660e01b815260040161030e94939291906105cb565b6040805180830381865afa15801561032a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034e919061060a565b915091508161036f5760405162461bcd60e51b81526004016101d39061063d565b8061038c5760405162461bcd60e51b81526004016101d39061066e565b6000876001600160a01b03163488886040516103a99291906106c8565b60006040518083038185875af1925050503d80600081146103e6576040519150601f19603f3d011682016040523d82523d6000602084013e6103eb565b606091505b50509050806104385760405162461bcd60e51b81526020600482015260196024820152781858d8dbdd5b9d0b59dd585c990bd8d85b1b0b59985a5b1959603a1b60448201526064016101d3565b5050505050505050565b6001600160a01b038116811461045757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561048357600080fd5b823561048e81610442565b915060208301356001600160401b03808211156104aa57600080fd5b818501915085601f8301126104be57600080fd5b8135818111156104d0576104d061045a565b604051601f8201601f19908116603f011681019083821181831017156104f8576104f861045a565b8160405282815288602084870101111561051157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b0391909116815260200190565b60008060006040848603121561055c57600080fd5b833561056781610442565b925060208401356001600160401b038082111561058357600080fd5b818601915086601f83011261059757600080fd5b8135818111156105a657600080fd5b8760208285010111156105b857600080fd5b6020830194508093505050509250925092565b6001600160a01b039485168152928416602084015292166040820152901515606082015260800190565b8051801515811461060557600080fd5b919050565b6000806040838503121561061d57600080fd5b610626836105f5565b9150610634602084016105f5565b90509250929050565b6020808252601790820152761858d8dbdd5b9d0b59dd585c990bdb9bcb5c195c9b5a5d604a1b604082015260600190565b6020808252601c908201527b1858d8dbdd5b9d0b59dd585c990bda5b1b1959d85b0b5d185c99d95d60221b604082015260600190565b6000602082840312156106b657600080fd5b81516106c181610442565b9392505050565b818382376000910190815291905056fea264697066735822122081415a5739eac2a9ced187113242fdbc4de14b0ee64866843a9cb5f1bf77e21864736f6c634300080f00330000000000000000000000004bec5760bbe7fd73b03b80516df4760a05fb7389", + "from": "0xcD9C63CFEE8ad52e6ff0B7F6Cb8726933D0FFaa2", + "to": null, + "nonce": 11 + }, + { + "operationName": "ERC20PoolFactory", + "address": "0xCF6F52F6b65f284ffFaFc35FfE754830C05DA0c2", + "data": "0x608060405234801561001057600080fd5b50604051616a54380380616a5483398101604081905261002f916100cd565b6001600160a01b0381166100565760405163104aee1f60e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b03831617905560405161007d906100c0565b604051809103906000f080158015610099573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b0392909216919091179055506100fd565b615f4480610b1083390190565b6000602082840312156100df57600080fd5b81516001600160a01b03811681146100f657600080fd5b9392505050565b610a048061010c6000396000f3fe608060405234801561001057600080fd5b506004361061008e5760003560e01c80632b6983af146100935780635c60da1b146100b15780637f165b0b146100d1578063a3232bf31461010b578063a387245c1461011e578063b3d4cfa414610131578063bb6da0dd14610143578063c24dbebd14610156578063c38dc7fc14610165578063d819bfef1461017a575b600080fd5b61009b610188565b6040516100a891906106ec565b60405180910390f35b6003546100c4906001600160a01b031681565b6040516100a89190610739565b6100c46100df366004610764565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6100c46101193660046107a0565b6101ea565b6100c461012c3660046107dc565b6104f3565b6002545b6040519081526020016100a8565b6000546100c4906001600160a01b031681565b61013567016345785d8a000081565b6101356000805160206109af83398151915281565b610135662386f26fc1000081565b606060028054806020026020016040519081016040528092919081815260200182805480156101e057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116101c2575b5050505050905090565b6000838383816001600160a01b0316836001600160a01b0316036102215760405163bcbac68960e01b815260040160405180910390fd5b6001600160a01b038316158061023e57506001600160a01b038216155b1561025c5760405163104aee1f60e01b815260040160405180910390fd5b80662386f26fc100001180610278575067016345785d8a000081115b156102965760405163462f085f60e01b815260040160405180910390fd5b6001600160a01b0380881660009081527fb581f7ccad64982c9898d358d7c5c86a0e89d6586f43d39b74347caf2ae08b60602090815260408083208a85168452909152902054168015610307578060405163fb8debc160e01b81526004016102fe9190610739565b60405180910390fd5b60006103128861051d565b9050600061031f8a61051d565b60008054604051929350909161034d9183916001600160a01b03909116908e908e90889088906020016107f5565b60408051601f19818403018152919052600354909150600090610379906001600160a01b0316836105da565b905080985088600160006000805160206109af833981519152815260200190815260200160002060008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055506002899080600181540180825580915050600190039060005260206000200160009091909190916101000a8154816001600160a01b0302191690836001600160a01b031602179055507f83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc896040516104829190610739565b60405180910390a160405163fe4b84df60e01b8152600481018b90526001600160a01b0382169063fe4b84df90602401600060405180830381600087803b1580156104cc57600080fd5b505af11580156104e0573d6000803e3d6000fd5b5050505050505050505050509392505050565b6002818154811061050357600080fd5b6000918252602090912001546001600160a01b0316905081565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610579575060408051601f3d908101601f191682019092526105769181019061085c565b60015b610596576040516333ae908b60e01b815260040160405180910390fd5b60128160ff1611156105bb576040516333ae908b60e01b815260040160405180910390fd5b6105c681601261089c565b6105d190600a61099f565b9150505b919050565b8051604051606160f81b81526039820160f081811b60018401526f3d81600a3d39f33d3d3d3d363d3d376160801b600384015260028401901b601383018190526560373639366160d01b6015840152601b83015262013d7360e81b601d830152606085901b6020808401919091526c5af43d3d93803e603557fd5bf360981b60348401526000939260438401929186019084604182015b602082106106905783518152602093840193601f199092019101610671565b835160001960208490036101000a0119908116825260f088901b91830191825286846000f098506001600160a01b0389166106de57604051631d7fde3160e31b815260040160405180910390fd5b505050505050505092915050565b6020808252825182820181905260009190848201906040850190845b8181101561072d5783516001600160a01b031683529284019291840191600101610708565b50909695505050505050565b6001600160a01b0391909116815260200190565b80356001600160a01b03811681146105d557600080fd5b60008060006060848603121561077957600080fd5b833592506107896020850161074d565b91506107976040850161074d565b90509250925092565b6000806000606084860312156107b557600080fd5b6107be8461074d565b92506107cc6020850161074d565b9150604084013590509250925092565b6000602082840312156107ee57600080fd5b5035919050565b60006002881061081557634e487b7160e01b600052602160045260246000fd5b5060f89690961b86526001600160601b0319606095861b8116600188015293851b841660158701529190931b9091166029840152603d830191909152605d820152607d0190565b60006020828403121561086e57600080fd5b815160ff8116811461087f57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60ff82811682821603908111156108b5576108b5610886565b92915050565b600181815b808511156108f65781600019048211156108dc576108dc610886565b808516156108e957918102915b93841c93908002906108c0565b509250929050565b60008261090d575060016108b5565b8161091a575060006108b5565b8160018114610930576002811461093a57610956565b60019150506108b5565b60ff84111561094b5761094b610886565b50506001821b6108b5565b5060208310610133831016604e8410600b8410161715610979575081810a6108b5565b61098383836108bb565b806000190482111561099757610997610886565b029392505050565b600061087f60ff8416836108fe56fe2263c4378b4920f0bef611a3ff22c506afa4745b3319c50b6d704a874990b8b2a2646970667358221220ef1dc24191a20c572fd0066961c2bbb495d4dbd53883dcab748776a5fa9136e364736f6c63430008120033608060405234801561001057600080fd5b506001600055615f1e80620000266000396000f3fe608060405234801561001057600080fd5b50600436106102b35760003560e01c8062cdcefb146102b85780630203d8fb146102ee5780630448e51a14610303578063063d829f1461043957806306e47f261461045c5780630729f62c1461046f57806315afd4091461048257806316f8a463146104955780632c7b2e06146104b6578063307ee3b51461050f578063329d1a8b14610518578063332c0e431461052b5780633884cd881461053e5780633a0c8f071461056b5780633ab96ec5146105735780633fa8fdbb1461058657806342302a9a1461058e578063483cd187146105a157806348d399e7146105e55780634ab1fc36146105fa5780634d966198146106035780634efe8af71461061b578063540c14331461062e5780635a3b4477146106415780635a422b92146106555780635b5e714b1461065d5780635cffe9de146106705780635d3637e714610693578063613255ab1461069c57806366ae5880146106af5780636a9b1891146106c25780637323f853146106d55780637b3f8655146107065780637f8baa371461070e5780638349d6be14610721578063870c764a14610742578063987165ed1461074b578063a749f1a61461075e578063a83de3ec14610771578063a918058d14610795578063a9ff9f77146107a8578063ac9650d8146107bb578063b1dd61b6146107db578063b1f07247146107f5578063bad3462014610808578063bcb630d714610810578063c861c6e614610821578063ca103d1514610834578063ce4396d71461086b578063cfa8ff0314610873578063d148279114610886578063d39d813f1461088e578063d53e2b1b146108a1578063d9606e08146108b4578063d9d98ce4146108e3578063da7951a9146108f6578063e512c06114610909578063ec0bdcfc1461091e578063f78b0cce14610926578063fe4b84df14610939575b600080fd5b614011546001600160d01b03811690600160d01b900465ffffffffffff165b6040516102e5929190614afd565b60405180910390f35b6103016102fc366004614b20565b61094c565b005b6103d9610311366004614b4c565b6001600160a01b0390811660009081526004602081815260409283902083516101208101855281548087168083526001600160601b03600160a01b9283900481169584018690526001808601548083169986018a9052600160601b908190048b1660608701819052600288015480851660808901819052908390048d1660a0890181905260038a0154808f1660c08b0181905298900490951660e0890181905298909a015460ff1615156101009097018790529154939b979a94999897930490931693909291565b604080516001600160a01b039b8c168152602081019a909a528901979097526060880195909552608087019390935260a0860191909152851660c0850152841660e0840152909216610100820152901515610120820152610140016102e5565b61400b546001600160d01b03811690600160d01b900465ffffffffffff166102d7565b61030161046a366004614bad565b610aa6565b61030161047d366004614c0f565b610b67565b610301610490366004614b20565b610c4c565b6104a86104a3366004614c50565b610d43565b6040519081526020016102e5565b6105006104c4366004614c50565b600081815261401f6020908152604091829020825160608101845281548082526001830154938201849052600290920154930183905293909250565b6040516102e593929190614c69565b614017546104a8565b6104a8610526366004614c50565b610d7e565b610500610539366004614c7f565b610d91565b610546610ec9565b604080516001600160a01b0390941684526020840192909252908201526060016102e5565b6104a8610f20565b6104a8610581366004614c50565b610f9d565b6104a8610fbc565b6104a861059c366004614c50565b610fc8565b6104a86105af366004614cb1565b6001600160a01b039081166000908152614022602090815260408083209490931682529283528181209381529290915290205490565b6105ed611112565b6040516102e59190614cf3565b61401c546104a8565b61060b61111e565b6040516102e59493929190614d07565b610301610629366004614d22565b611225565b6104a861063c366004614c50565b6112cf565b60035461401b5461401a5461401e5461060b565b6103016112da565b61030161066b366004614d86565b6113dd565b61068361067e366004614de9565b61145b565b60405190151581526020016102e5565b614019546104a8565b6104a86106aa366004614b4c565b6116ef565b6103016106bd366004614e5b565b611771565b6102d76106d0366004614d86565b61191b565b6102d76106e3366004614b4c565b6001600160a01b0316600090815260056020526040902080546001909101549091565b6104a8611a71565b61030161071c366004614eb0565b611a7d565b61073461072f366004614c50565b611afc565b6040516102e5929190614ef1565b614018546104a8565b610301610759366004614f0a565b611b30565b6102d761076c366004614f7b565b611bf7565b61078461077f366004614c50565b611c65565b6040516102e5959493929190614fab565b6103016107a3366004614f0a565b611cbf565b6103016107b6366004614fce565b611d4a565b6107ce6107c9366004614eb0565b611f71565b6040516102e59190615070565b6107e3612065565b60405160ff90911681526020016102e5565b6102d7610803366004614d86565b612071565b6105ed6121b8565b6001546001600160601b03166104a8565b6104a861082f3660046150d2565b6121c4565b610500610842366004614b4c565b6001600160a01b0316600090815261400a60205260409020805460018201546002909201549092565b610301612338565b6103016108813660046150fe565b612404565b610301612628565b61030161089c366004614eb0565b61266e565b6103016108af366004614b20565b6126b9565b6106836108c2366004615139565b61402360209081526000928352604080842090915290825290205460ff1681565b6104a86108f1366004614b20565b6127ae565b6104a8610904366004614c50565b6127df565b61400e5461400f5461400c5461400d5461060b565b6104a86127ec565b6104a86109343660046150d2565b6127f8565b610301610947366004614c50565b612902565b6002600054036109775760405162461bcd60e51b815260040161096e90615167565b60405180910390fd5b600260009081556109866129b3565b905060007313354607fefe661c2169a06c36a5c80e2270417d632de27df2600160066140088689896040518763ffffffff1660e01b81526004016109cf969594939291906151fd565b60c060405180830381865af41580156109ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a109190615375565b9050610a2481602001518360a00151612b86565b6060830152602080820151908301526040808201519083018051610a499083906153a7565b905250608081015160a0820151610a64919060009081612bba565b6020820151614019556040820151614018556060810151610a86908390612c45565b805115610a9b57610a9b338260000151612d17565b505060016000555050565b600260005403610ac85760405162461bcd60e51b815260040161096e90615167565b60026000908155338152614022602090815260408083206001600160a01b038716845290915290819020905163d3f900a360e01b815273297b0988fd2a8744379ef9f2188bf70fb73c80389163d3f900a391610b2d91908790879087906004016153ec565b60006040518083038186803b158015610b4557600080fd5b505af4158015610b59573d6000803e3d6000fd5b505060016000555050505050565b600260005403610b895760405162461bcd60e51b815260040161096e90615167565b60026000908155610b986129b3565b905060007314912c49cf9ee1abdfec50d067ef083b34423aa4632f39ec5c60016140206006614008878b8b8b610bce605d612d43565b6040518a63ffffffff1660e01b8152600401610bf299989796959493929190615417565b6101e060405180830381865af4158015610c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c349190615481565b9050610c408183612d59565b50506001600055505050565b600260005403610c6e5760405162461bcd60e51b815260040161096e90615167565b60026000908155610c7d6129b3565b905060007342198b61c30db50bd39fa1e7d5422f09df6b4a0663e47aaa316001614020600661400861401a8860405180606001604052808d6001600160a01b031681526020018c8152602001610cd1612e16565b8152506040518863ffffffff1660e01b8152600401610cf69796959493929190615545565b60c060405180830381865af4158015610d13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d379190615375565b9050610a9b8183612ea2565b60008181526140206020526040812060018101548154610d779190610d69600687612f45565b610d7287612f5e565b612fc9565b9392505050565b6000610d8b600683612fed565b92915050565b6000806000600260005403610db85760405162461bcd60e51b815260040161096e90615167565b6002600055610dc684613003565b6000610dd06129b3565b9050610de760068260400151898460a00151613027565b600073f046585e5dd98706eb2e7b5184cd783e47140779633806e8ef61402060068560405180608001604052808e81526020018f81526020018d8152602001610e31614008613065565b602001516001600160601b03168152506040518563ffffffff1660e01b8152600401610e6094939291906155cf565b608060405180830381865af4158015610e7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea19190615602565b92975090955093509050610eb58282612c45565b505060016000819055509450945094915050565b6000806000610ed9614008613065565b51610f0a610ee8614008613065565b6020015161400b546001600160601b03909116906001600160d01b0316612b86565b610f15614008613078565b925092509250909192565b604051630fc99bab60e41b815261400c6004820152600090732f92ac7c2d18be332eb99e37368a62aedda470969063fc99bab090602401602060405180830381865af4158015610f74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f989190615638565b905090565b6000612007826120018110610fb457610fb4615651565b015492915050565b6000610f986006613089565b6000600260005403610fec5760405162461bcd60e51b815260040161096e90615167565b6002600090815560405163db04b0f360e01b81527314912c49cf9ee1abdfec50d067ef083b34423aa49063db04b0f39061102e9061401a908790600401614afd565b6040805180830381865af415801561104a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106e9190615667565b90925090506110943330836110836001613094565b6001600160a01b03169291906130ad565b61109e6001613094565b6001600160a01b03166342966c68826040518263ffffffff1660e01b81526004016110cb91815260200190565b600060405180830381600087803b1580156110e557600080fd5b505af11580156110f9573d6000803e3d6000fd5b505050506111073383613118565b506001600055919050565b6000610f986015613094565b61400b54614011546040516378792ff160e01b81526001600160d01b038084166004830152600160d01b90930465ffffffffffff166024820152911660448201526000908190819081908190732f92ac7c2d18be332eb99e37368a62aedda47096906378792ff190606401602060405180830381865af41580156111a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ca9190615638565b90506111dc614017600201548261314a565b6140195461400b546111f791906001600160d01b031661314a565b6140185461400b5461121291906001600160d01b031661314a565b6140145492989197509550909350915050565b6002600054036112475760405162461bcd60e51b815260040161096e90615167565b600260005560405162b06a6b60e71b815273297b0988fd2a8744379ef9f2188bf70fb73c803890635835358090611294906140209061402290614023908a908a908a908a9060040161568b565b60006040518083038186803b1580156112ac57600080fd5b505af41580156112c0573d6000803e3d6000fd5b50506001600055505050505050565b6000610d8b82613176565b6002600054036112fc5760405162461bcd60e51b815260040161096e90615167565b600260008190555060007313354607fefe661c2169a06c36a5c80e2270417d63f88050b7600161401a604051806080016040528061133a6006613089565b8152614019546020820152604001611350612e16565b815261400b546001600160d01b03166020909101526040516001600160e01b031960e086901b168152611388939291906004016156d9565b602060405180830381865af41580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c99190615638565b90506113d53382613118565b506001600055565b6002600054036113ff5760405162461bcd60e51b815260040161096e90615167565b6002600090815561140e6129b3565b905060007313354607fefe661c2169a06c36a5c80e2270417d63a22346e360016006614020614008878a8a6040518863ffffffff1660e01b81526004016109cf97969594939291906156f4565b600060026000540361147f5760405162461bcd60e51b815260040161096e90615167565b600260005561148d856131a1565b6114aa57604051633cc7579b60e11b815260040160405180910390fd5b6040516370a0823160e01b815285906000906001600160a01b038316906370a08231906114db903090600401614cf3565b602060405180830381865afa1580156114f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151c9190615638565b90506115326001600160a01b03831689886131eb565b6040516323e30c8b60e01b81527f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9906001600160a01b038a16906323e30c8b9061158b9033908c908c906000908d908d9060040161575f565b6020604051808303816000875af11580156115aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ce9190615638565b146115ec5760405163f594248f60e01b815260040160405180910390fd5b6116016001600160a01b0383168930896130ad565b6040516370a0823160e01b815281906001600160a01b038416906370a082319061162f903090600401614cf3565b602060405180830381865afa15801561164c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116709190615638565b1461168e576040516370fc723360e01b815260040160405180910390fd5b60019250866001600160a01b0316886001600160a01b03167f6b15284fe89dbd5c436c2e0b06b1bf72e3a0a8e96d1b4a2abd61dfae2d7849a6886040516116d791815260200190565b60405180910390a35050600160005595945050505050565b60006116fa826131a1565b1561176c576040516370a0823160e01b81526001600160a01b038316906370a082319061172b903090600401614cf3565b602060405180830381865afa158015611748573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8b9190615638565b919050565b6002600054036117935760405162461bcd60e51b815260040161096e90615167565b600260009081556117a26129b3565b905060006117b0605d612d43565b90506117bc868261320a565b955060007314912c49cf9ee1abdfec50d067ef083b34423aa4630f4a0c2d60016140206006614008888e8e8a6040518963ffffffff1660e01b815260040161180b98979695949392919061579a565b6101e060405180830381865af4158015611829573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184d9190615481565b90506118628160400151846101000151613221565b60408201526118718184612d59565b61187f868260000151613250565b831561190d57856001600160a01b0316634bbd32d58383600001516118a49190615806565b85610100015184604001516118b99190615806565b88886040518563ffffffff1660e01b81526004016118da949392919061581a565b600060405180830381600087803b1580156118f457600080fd5b505af1158015611908573d6000803e3d6000fd5b505050505b6112c0338260400151612d17565b6000806002600054036119405760405162461bcd60e51b815260040161096e90615167565b60026000556119526001614008613272565b600061195c6129b3565b90506119718561196c605d612d43565b61320a565b945073f046585e5dd98706eb2e7b5184cd783e471407796380f2fcd0614020600661199b88613176565b89896040518663ffffffff1660e01b81526004016119bd959493929190614fab565b6040805180830381865af41580156119d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fd9190615667565b6040519194509250849033907f90895bc82397742e0cea4685e72279103862a03bee6bbe1d71265c7aeb11152790611a389087908790614afd565b60405180910390a3611a5881611a5360068460600151613325565b612c45565b611a623384613250565b50600160005590939092509050565b6000610f98603d612d43565b3360009081526140236020526040908190209051634b740e8f60e01b815273297b0988fd2a8744379ef9f2188bf70fb73c803891634b740e8f91611ac891908690869060040161583a565b60006040518083038186803b158015611ae057600080fd5b505af4158015611af4573d6000803e3d6000fd5b505050505050565b600080611b0b61400884613339565b51611b1861400885613339565b6020015190946001600160601b039091169350915050565b600260005403611b525760405162461bcd60e51b815260040161096e90615167565b60026000908155338152614022602090815260408083206001600160a01b038916845290915290819020905163e817b3fb60e01b815273297b0988fd2a8744379ef9f2188bf70fb73c80389163e817b3fb91611bbb919089908990899089908990600401615892565b60006040518083038186803b158015611bd357600080fd5b505af4158015611be7573d6000803e3d6000fd5b5050600160005550505050505050565b6000828152614020602081815260408084206001600160a01b0386168552600381018352908420600101548685529290915260020154811115611c5e576000848152614020602090815260408083206001600160a01b038716845260030190915290205491505b9250929050565b600080600080600080611c796006886133b9565b6000888152614020602052604090208054600182015460029092015492935091611cad84611ca860068d613426565b612b86565b929a9199509750909550909350915050565b600260005403611ce15760405162461bcd60e51b815260040161096e90615167565b60026000908155338152614022602090815260408083206001600160a01b0389168452909152908190209051633110094360e01b815273297b0988fd2a8744379ef9f2188bf70fb73c803891633110094391611bbb919089908990899089908990600401615892565b600260005403611d6c5760405162461bcd60e51b815260040161096e90615167565b60026000908155611d7b6129b3565b90506000198514611d9857611d958582610100015161320a565b94505b611da68461196c605d612d43565b9350600073cd8b4a7dd87f56b598b5e64ddfb0ae5ac20c4116639883470d60016140206006614008878d8d8d8c6040518a63ffffffff1660e01b8152600401611df7999897969594939291906158d0565b6101a060405180830381865af4158015611e15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e39919061592f565b9050866001600160a01b03167fef9d6dc34b1e6893b8746b03ac07fd084909654a5cedab240265a8d1bd584dc2826101000151878460200151604051611e8193929190614c69565b60405180910390a26060808201519083015260e0810151602083015260c081015115611ec1578060c0015182604001818151611ebd91906159e2565b9052505b604081015160808301528051611f1357611f138160a00151611ee857816101200151611eeb565b60005b8261014001518360a00151611f0557836101600151611f08565b60005b846101800151612bba565b611f21828260200151612c45565b61010081015115611f585760208201516140195560c081015115611f49576040820151614018555b611f5833826101000151612d17565b8415610b5957608082015161401755610b598486613250565b6060816001600160401b03811115611f8b57611f8b61523f565b604051908082528060200260200182016040528015611fbe57816020015b6060815260200190600190039081611fa95790505b50905060005b8281101561205e5761202e30858584818110611fe257611fe2615651565b9050602002810190611ff491906159f5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506134d492505050565b82828151811061204057612040615651565b6020026020010181905250808061205690615a3b565b915050611fc4565b5092915050565b6000610f9860006134f9565b6000806002600054036120965760405162461bcd60e51b815260040161096e90615167565b60026000556120a86001614008613272565b60006120b26129b3565b90506120c960068260400151868460a00151613027565b600073f046585e5dd98706eb2e7b5184cd783e47140779635086572061402060068560405180606001604052808b815260200161210d8d612108613512565b613550565b815260200161211d614008613065565b602001516001600160601b03168152506040518563ffffffff1660e01b815260040161214c9493929190615a54565b606060405180830381865af4158015612169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218d9190615a97565b9195509350905061219e8282612c45565b6121a83385613118565b5050600160005590939092509050565b6000610f986029613094565b60006002600054036121e85760405162461bcd60e51b815260040161096e90615167565b60026000556121f682613003565b60006122006129b3565b90508415801590612218575061221584613176565b85105b15612236576040516345b3f65d60e01b815260040160405180910390fd5b6122448561196c605d612d43565b604051631752f09d60e31b815290955073f046585e5dd98706eb2e7b5184cd783e471407799063ba9784e89061228790614020906006908a908a90600401614d07565b602060405180830381865af41580156122a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c89190615638565b915083336001600160a01b03167fa9387d09ded47dbc173eb751964c0c7b7e0a1165939b958fafc8109337597f948785604051612306929190614afd565b60405180910390a361232181611a5360068460600151613325565b61232b3386613567565b5060016000559392505050565b60026000540361235a5760405162461bcd60e51b815260040161096e90615167565b600260009081556123696129b3565b9050600073cd8b4a7dd87f56b598b5e64ddfb0ae5ac20c4116634700688d60016006614008866040518563ffffffff1660e01b81526004016123ae9493929190615ac5565b602060405180830381865af41580156123cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ef9190615638565b90506123fb8282612c45565b50506001600055565b6002600054036124265760405162461bcd60e51b815260040161096e90615167565b600260009081556124356129b3565b90506124468482610100015161320a565b93506124568261196c605d612d43565b9150600073cd8b4a7dd87f56b598b5e64ddfb0ae5ac20c41166391f373106001614020600661400887612487613512565b8d8d8d8d6040518b63ffffffff1660e01b81526004016124b09a99989796959493929190615ae8565b61018060405180830381865af41580156124ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f29190615b4d565b9050856001600160a01b03167f49a2aab2f4f7ca5c6ba6d413b46a0a09d91d10188fd94b8e23c3225362d12b508685846020015160405161253593929190614c69565b60405180910390a26060808201519083015260e0810151602083015260c081015115612575578060c001518260400181815161257191906159e2565b9052505b6040810151608083015280516125c7576125c78160a0015161259c5781610100015161259f565b60005b8261012001518360a001516125b9578361014001516125bc565b60005b846101600151612bba565b6125d5828260200151612c45565b82156126025760c0810151156125ef576040820151614018555b6080820151614017556126023384613567565b841561261b5760208201516140195561261b3386613118565b5050600160005550505050565b60026000540361264a5760405162461bcd60e51b815260040161096e90615167565b600260009081556126596129b3565b90506113d581611a5360068460600151613325565b336000908152614023602052604090819020905163296bff2560e01b815273297b0988fd2a8744379ef9f2188bf70fb73c80389163296bff2591611ac891908690869060040161583a565b6002600054036126db5760405162461bcd60e51b815260040161096e90615167565b60026000908155338152600560205260409020546126f98282613550565b91508160000361271c5760405163bb55fd2760e01b815260040160405180910390fd5b816001600201600082825461273191906159e2565b909155505033600090815260056020526040812080548492906127559084906159e2565b90915550506040518281526001600160a01b0384169033907f1b6622b92ce16ed648b5b93fe47df1cd4c763fdcafe3281bc1dfd5ff7998a94d9060200160405180910390a36127a48383613118565b5050600160005550565b60006127b9836131a1565b6127d657604051633cc7579b60e11b815260040160405180910390fd5b50600092915050565b6000610d8b600683613589565b6000610f98605d612d43565b600060026000540361281c5760405162461bcd60e51b815260040161096e90615167565b600260005561282a82613003565b60006128346129b3565b90506128458582610100015161320a565b604080518082018252828152602081018790529051632f9fa10360e01b815291965060009173f046585e5dd98706eb2e7b5184cd783e4714077991632f9fa1039161289b91614020916006918891600401615bf5565b6040805180830381865af41580156128b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128db9190615667565b90935090506128ea8282612c45565b6128f43387612d17565b505060016000559392505050565b6140215460ff16156129265760405162dc149f60e41b815260040160405180910390fd5b65ffffffffffff4216600160d01b02670de0b6b3a7640000811761400b556001600160d01b03821617614011556129a2614008604080518082019091526000808252602080830182815284546001810186559483529120915190516001600160601b0316600160a01b026001600160a01b039190911617910155565b50614021805460ff19166001179055565b612a07604051806101200160405280600060ff168152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160008152602001600081525090565b61401954602082015261401854604082015261401754608082015261400b546001600160d01b0390811660a0830152614011541660e0820152612a4a60006134f9565b60ff168152612a59603d612d43565b610100820152602081015115612b8357612a7b81602001518260a00151612b86565b606082015261400b54600090612aa090600160d01b900465ffffffffffff16426159e2565b8015801560c0850152909150612b8157600080732f92ac7c2d18be332eb99e37368a62aedda47096639b5bef8661400c600687612ade614008613065565b60200151886040518663ffffffff1660e01b8152600401612b03959493929190615c2d565b6040805180830381865af4158015612b1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b439190615667565b60a0860182905260208601519193509150612b5e9083612b86565b606085015261401e8054829190600090612b799084906153a7565b909155505050505b505b90565b6000670de0b6b3a7640000612b9c600282615806565b612ba68486615c67565b612bb091906153a7565b610d779190615806565b600082600003612bcb576000612be1565b82612bd7600287615d62565b612be19190615806565b9050600082600003612bf4576000612c0a565b82612c00600287615d62565b612c0a9190615806565b905081151580612c1957508015155b15611af45761401454612c2c82826153a7565b9050612c3883826159e2565b6140145550505050505050565b604051635676e1ff60e01b8152732f92ac7c2d18be332eb99e37368a62aedda4709690635676e1ff90612c89906140119061400c9060069088908890600401615d71565b60006040518083038186803b158015612ca157600080fd5b505af4158015612cb5573d6000803e3d6000fd5b505050508160c0015115612ce95760a08201516001600160d01b0316600160d01b4265ffffffffffff16021761400b555050565b8160600151600003612d135765ffffffffffff4216600160d01b02670de0b6b3a76400001761400b555b5050565b6000612d2c82612d27603d612d43565b613694565b9050612d3e8330836110836029613094565b505050565b600080612d4e6136a3565b929092013592915050565b60c082015160608083019190915260e08301516020830152820151604082018051612d859083906153a7565b905250610120820151604082018051612d9f9083906159e2565b90525060208201518251612db391906153a7565b81608001818151612dc491906159e2565b90525061014082015115612dea57612dea60008361018001516000856101c00151612bba565b602081015161401955604081015161401855608081015161401755610100820151612d13908290612c45565b6000612e22603d612d43565b612e2c6029613094565b6001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401612e579190614cf3565b602060405180830381865afa158015612e74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e989190615638565b610f989190615c67565b612eb48260a001518260a00151612b86565b81606001818151612ec591906159e2565b90525060a0820151602082018051612ede9083906159e2565b90525060a0820151604082018051612ef79083906159e2565b9052506080808301519082018051612f109083906159e2565b9052506020810151614019556040810151614018556080810151614017556060810151612d13908290611a5390600690613325565b6000610d77612f548484613426565b611ca885856133b9565b600080612f6d8361103c615da5565b9050610c9f19811280612f81575061103c81135b15612f9f57604051637edf443b60e11b815260040160405180910390fd5b610d77612fc4612fae836136b4565b612fbf670df27a2cdf44800061373f565b613823565b6138e8565b6000612fe2858585670de0b6b3a764000086600161397f565b90505b949350505050565b6000612ff983836139f7565b5090949350505050565b80421115613024576040516338e5e54b60e21b815260040160405180910390fd5b50565b821561305f576130408461303b8584612b86565b612fed565b821161305f5760405163dd47b04360e01b815260040160405180910390fd5b50505050565b61306d614ae6565b610d8b826001613339565b8054600090610d8b906001906159e2565b600081612000610fb4565b60008061309f6136a3565b929092013560601c92915050565b6040516001600160a01b038085166024830152831660448201526064810182905261305f9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613ae7565b612d1382613126603d612d43565b6131309084615806565b61313a6029613094565b6001600160a01b031691906131eb565b6000670de0b6b3a76400006001816131628587615c67565b61316c91906153a7565b612bb091906159e2565b60008061318283613bb9565b9050610d77613191605d612d43565b61319c83600a615dc5565b613c17565b60006131ad6029613094565b6001600160a01b0316826001600160a01b03161480610d8b57506131d16015613094565b6001600160a01b0316826001600160a01b03161492915050565b612d3e8363a9059cbb60e01b84846040516024016130e1929190614ef1565b6000816132178185615806565b610d779190615c67565b600061322d8284615dd1565b60000361323b575081610d8b565b81613246848461320a565b610d7791906153a7565b612d138261325e605d612d43565b6132689084615806565b61313a6015613094565b8154600160601b90046001600160a01b031660008181526003840160205260409020600101546001600160601b0316801561305f576203f4806132b582426159e2565b11156132d4576040516335bdb41f60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600284016020526040902080541580159061330057506001810154155b1561331e576040516335bdb41f60e01b815260040160405180910390fd5b5050505050565b6000610d776133348484612fed565b612f5e565b613341614ae6565b82548210613362576040805180820190915260008082526020820152610d77565b82600001828154811061337757613377615651565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b60006133c482615a3b565b9150670de0b6b3a764000090505b6120008211610d8b57600083612001018361200181106133f4576133f4615651565b01549050801561340b576134088282612b86565b91505b61341483613c27565b61341e90846153a7565b9250506133d2565b600061343182615a3b565b915060018383612001811061344857613448615651565b0154915060008060005b8584166000036134ca5761346684876159e2565b92508683612001811061347b5761347b615651565b01549150866120010183612001811061349657613496615651565b01549050806000036134a857816134b2565b6134b28183612b86565b6134bc90866159e2565b9450600184901b9350613452565b5050505092915050565b6060610d778383604051806060016040528060278152602001615ec260279139613c46565b6000806135046136a3565b929092013560f81c92915050565b60008061351d612e16565b61401b5460035491925060009161353491906153a7565b90508082111561354b5761354881836159e2565b92505b505090565b6000818311156135605781610d77565b5090919050565b600061357782612d27605d612d43565b9050612d3e8330836110836015613094565b600061359482615a3b565b9150670de0b6b3a76400006120006000806135ae86613c27565b905060005b818410613689576135c484846153a7565b905061200081116135b357600088612001018261200181106135e8576135e8615651565b01549050878516156136695760008983612001811061360957613609615651565b01549050816000036136245761361f8782612b86565b613646565b6136466136318389615c67565b826a0c097ce7bc90715b34b9f160241b613d17565b61365090896153a7565b9750829450888503613663575050613689565b5061367c565b801561367c576136798682613dc6565b95505b600185901c9450506135b3565b505050505092915050565b600081600161316c82866153a7565b600119368181013560f01c90030190565b60007809392ee8e921d5d073aff322e62439fcf32d7f344649470f8f198212156136f45760405163e608e18b60e01b81526004810183905260240161096e565b7809392ee8e921d5d073aff322e62439fcf32d7f344649470f90821315613731576040516371f72a3160e01b81526004810183905260240161096e565b50670de0b6b3a76400000290565b60008082136137645760405163309fa7dd60e11b81526004810183905260240161096e565b6000670de0b6b3a7640000831261377d57506001613796565b6000199050826a0c097ce7bc90715b34b9f160241b0492505b60006137ab670de0b6b3a76400008505613ddb565b670de0b6b3a764000081029350905083811d670de0b6b3a763ffff1981016137d557505002919050565b6706f05b59d3b200005b600081131561381a57670de0b6b3a7640000828002059150671bc16d674ec800008212613812579384019360019190911d905b60011d6137df565b50505002919050565b6000600160ff1b83148061383a5750600160ff1b82145b1561385857604051630d01a11b60e21b815260040160405180910390fd5b60008060008512613869578461386e565b846000035b91506000841261387e5783613883565b836000035b905060006138918383613eb9565b90506001600160ff1b038111156138be5760405163bf79e8d960e01b81526004810182905260240161096e565b6000198087139086138082186001146138d757826138dc565b826000035b98975050505050505050565b60008082121561393b5768033dd1780914b971141982121561390c57506000919050565b613918826000036138e8565b6a0c097ce7bc90715b34b9f160241b81613934576139346157f0565b0592915050565b680a688906bd8b00000082126139675760405163e69458f960e01b81526004810183905260240161096e565b670de0b6b3a7640000604083901b04610d7781613f7f565b60008415801561398d575086155b156139995750826139ed565b856000036139a85750826139ed565b6139ea6139b58489615c67565b6139c7670de0b6b3a764000088615c67565b6139d191906153a7565b856139e4670de0b6b3a76400008a615c67565b85614611565b90505b9695505050505050565b60008080611000670de0b6b3a764000082808080805b8615613ad957613a1d878b6153a7565b93508b846120018110613a3257613a32615651565b015492508b61200101846120018110613a4d57613a4d615651565b0154915081600003613a6857613a638684612b86565b613a8a565b613a8a613a758388615c67565b846a0c097ce7bc90715b34b9f160241b613d17565b613a9490866153a7565b90508a811015613ab357611cdc8411613aae578399508094505b613acd565b8115613ac657613ac38683613dc6565b95505b8098508597505b600187901c9650613a0d565b505050505050509250925092565b6000613b3c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166146629092919063ffffffff16565b805190915015612d3e5780806020019051810190613b5a9190615de5565b612d3e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161096e565b6000610f3c82111561176c576000613bd3610f3c846159e2565b90506000613c03613bfe613bef84670de0b6b3a7640000615e02565b6801f399b1438a100000614671565b614737565b9050612fe5670de0b6b3a764000082615e32565b6000818310156135605781610d77565b6000811561176c57613c3e600019831860016153a7565b909116919050565b6060613c51846147ad565b613cac5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161096e565b600080856001600160a01b031685604051613cc79190615e60565b600060405180830381855af49150503d8060008114613d02576040519150601f19603f3d011682016040523d82523d6000602084013e613d07565b606091505b50915091506139ed8282866147bc565b6000808060001985870985870292508281108382030391505080600003613d5157838281613d4757613d476157f0565b0492505050610d77565b808411613d5d57600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000670de0b6b3a7640000612bb08385615c67565b6000600160801b8210613dfb57608091821c91613df890826153a7565b90505b600160401b8210613e1957604091821c91613e1690826153a7565b90505b600160201b8210613e3757602091821c91613e3490826153a7565b90505b620100008210613e5457601091821c91613e5190826153a7565b90505b6101008210613e7057600891821c91613e6d90826153a7565b90505b60108210613e8b57600491821c91613e8890826153a7565b90505b60048210613ea657600291821c91613ea390826153a7565b90505b6002821061176c57610d8b6001826153a7565b60008080600019848609848602925082811083820303915050670de0b6b3a76400008110613efd5760405163698d9a0160e11b81526004810182905260240161096e565b600080670de0b6b3a764000086880991506706f05b59d3b1ffff8211905082600003613f3b5780670de0b6b3a7640000850401945050505050610d8b565b620400008285030493909111909103600160ee1b02919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690201905092915050565b600160bf1b6001603f1b821615613f9f5768016a09e667f3bcc9090260401c5b6001603e1b821615613fba576801306fe0a31b7152df0260401c5b6001603d1b821615613fd5576801172b83c7d517adce0260401c5b6001603c1b821615613ff05768010b5586cf9890f62a0260401c5b6001603b1b82161561400b576801059b0d31585743ae0260401c5b6001603a1b82161561402657680102c9a3e778060ee70260401c5b600160391b8216156140415768010163da9fb33356d80260401c5b600160381b82161561405c57680100b1afa5abcbed610260401c5b600160371b8216156140775768010058c86da1c09ea20260401c5b600160361b821615614092576801002c605e2e8cec500260401c5b600160351b8216156140ad57680100162f3904051fa10260401c5b600160341b8216156140c8576801000b175effdc76ba0260401c5b600160331b8216156140e357680100058ba01fb9f96d0260401c5b600160321b8216156140fe5768010002c5cc37da94920260401c5b600160311b821615614119576801000162e525ee05470260401c5b600160301b8216156141345768010000b17255775c040260401c5b6001602f1b82161561414f576801000058b91b5bc9ae0260401c5b6001602e1b82161561416a57680100002c5c89d5ec6d0260401c5b6001602d1b8216156141855768010000162e43f4f8310260401c5b6001602c1b8216156141a057680100000b1721bcfc9a0260401c5b6001602b1b8216156141bb5768010000058b90cf1e6e0260401c5b6001602a1b8216156141d6576801000002c5c863b73f0260401c5b600160291b8216156141f157680100000162e430e5a20260401c5b600160281b82161561420c576801000000b1721835510260401c5b600160271b82161561422757680100000058b90c0b490260401c5b600160261b8216156142425768010000002c5c8601cc0260401c5b600160251b82161561425d576801000000162e42fff00260401c5b600160241b8216156142785768010000000b17217fbb0260401c5b600160231b821615614293576801000000058b90bfce0260401c5b600160221b8216156142ae57680100000002c5c85fe30260401c5b600160211b8216156142c95768010000000162e42ff10260401c5b600160201b8216156142e457680100000000b17217f80260401c5b63800000008216156142ff5768010000000058b90bfc0260401c5b634000000082161561431a576801000000002c5c85fe0260401c5b632000000082161561433557680100000000162e42ff0260401c5b6310000000821615614350576801000000000b17217f0260401c5b630800000082161561436b57680100000000058b90c00260401c5b63040000008216156143865768010000000002c5c8600260401c5b63020000008216156143a1576801000000000162e4300260401c5b63010000008216156143bc5768010000000000b172180260401c5b628000008216156143d6576801000000000058b90c0260401c5b624000008216156143f057680100000000002c5c860260401c5b6220000082161561440a5768010000000000162e430260401c5b6210000082161561442457680100000000000b17210260401c5b6208000082161561443e5768010000000000058b910260401c5b62040000821615614458576801000000000002c5c80260401c5b6202000082161561447257680100000000000162e40260401c5b6201000082161561448b5761b172600160401b010260401c5b6180008216156144a3576158b9600160401b010260401c5b6140008216156144bb57612c5d600160401b010260401c5b6120008216156144d35761162e600160401b010260401c5b6110008216156144eb57610b17600160401b010260401c5b6108008216156145035761058c600160401b010260401c5b61040082161561451b576102c6600160401b010260401c5b61020082161561453357610163600160401b010260401c5b61010082161561454a5760b1600160401b010260401c5b6080821615614560576059600160401b010260401c5b604082161561457657602c600160401b010260401c5b602082161561458c576016600160401b010260401c5b60108216156145a257600b600160401b010260401c5b60088216156145b8576006600160401b010260401c5b60048216156145ce576003600160401b010260401c5b60028216156145e4576001600160401b010260401c5b60018216156145fa576001600160401b010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b60008061461f868686613d17565b9050600183600281111561463557614635615e7c565b14801561465257506000848061464d5761464d6157f0565b868809115b15612fe2576139ed6001826153a7565b6060612fe584846000856147f5565b6000600160ff1b8314806146885750600160ff1b82145b156146a65760405163b3c754a360e01b815260040160405180910390fd5b600080600085126146b757846146bc565b846000035b9150600084126146cc57836146d1565b836000035b905060006146e883670de0b6b3a764000084614924565b90506001600160ff1b0381111561471557604051637cb4bef560e01b81526004810182905260240161096e565b60001980871390861380821860011461472e57826138dc565b6138dc83615e92565b60008082121561475d5760405163608c83ff60e11b81526004810183905260240161096e565b7809392ee8e921d5d073aff322e62439fcf32d7f344649470f9082131561479a57604051632c482c3960e01b81526004810183905260240161096e565b610d8b670de0b6b3a76400008302614978565b6001600160a01b03163b151590565b606083156147cb575081610d77565b8251156147db5782518084602001fd5b8160405162461bcd60e51b815260040161096e9190615eae565b6060824710156148565760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161096e565b61485f856147ad565b6148ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161096e565b600080866001600160a01b031685876040516148c79190615e60565b60006040518083038185875af1925050503d8060008114614904576040519150601f19603f3d011682016040523d82523d6000602084013e614909565b606091505b50915091506149198282866147bc565b979650505050505050565b600080806000198587098587029250828110838203039150508060000361495457838281613d4757613d476157f0565b838110613d5d578084604051631dcf306360e21b815260040161096e929190614afd565b60008160000361498a57506000919050565b50600181600160801b81106149a45760409190911b9060801c5b600160401b81106149ba5760209190911b9060401c5b600160201b81106149d05760109190911b9060201c5b6201000081106149e55760089190911b9060101c5b61010081106149f95760049190911b9060081c5b60108110614a0c5760029190911b9060041c5b60088110614a1c57600182901b91505b6001828481614a2d57614a2d6157f0565b048301901c91506001828481614a4557614a456157f0565b048301901c91506001828481614a5d57614a5d6157f0565b048301901c91506001828481614a7557614a756157f0565b048301901c91506001828481614a8d57614a8d6157f0565b048301901c91506001828481614aa557614aa56157f0565b048301901c91506001828481614abd57614abd6157f0565b048301901c91506000828481614ad557614ad56157f0565b04905080831015610d775782612fe5565b604080518082019091526000808252602082015290565b918252602082015260400190565b6001600160a01b038116811461302457600080fd5b60008060408385031215614b3357600080fd5b8235614b3e81614b0b565b946020939093013593505050565b600060208284031215614b5e57600080fd5b8135610d7781614b0b565b60008083601f840112614b7b57600080fd5b5081356001600160401b03811115614b9257600080fd5b6020830191508360208260051b8501011115611c5e57600080fd5b600080600060408486031215614bc257600080fd5b8335614bcd81614b0b565b925060208401356001600160401b03811115614be857600080fd5b614bf486828701614b69565b9497909650939450505050565b801515811461302457600080fd5b600080600060608486031215614c2457600080fd5b8335614c2f81614b0b565b92506020840135614c3f81614c01565b929592945050506040919091013590565b600060208284031215614c6257600080fd5b5035919050565b9283526020830191909152604082015260600190565b60008060008060808587031215614c9557600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215614cc657600080fd5b833592506020840135614cd881614b0b565b91506040840135614ce881614b0b565b809150509250925092565b6001600160a01b0391909116815260200190565b93845260208401929092526040830152606082015260800190565b60008060008060608587031215614d3857600080fd5b8435614d4381614b0b565b93506020850135614d5381614b0b565b925060408501356001600160401b03811115614d6e57600080fd5b614d7a87828801614b69565b95989497509550505050565b60008060408385031215614d9957600080fd5b50508035926020909101359150565b60008083601f840112614dba57600080fd5b5081356001600160401b03811115614dd157600080fd5b602083019150836020828501011115611c5e57600080fd5b600080600080600060808688031215614e0157600080fd5b8535614e0c81614b0b565b94506020860135614e1c81614b0b565b93506040860135925060608601356001600160401b03811115614e3e57600080fd5b614e4a88828901614da8565b969995985093965092949392505050565b600080600080600060808688031215614e7357600080fd5b8535614e7e81614b0b565b9450602086013593506040860135614e9581614b0b565b925060608601356001600160401b03811115614e3e57600080fd5b60008060208385031215614ec357600080fd5b82356001600160401b03811115614ed957600080fd5b614ee585828601614b69565b90969095509350505050565b6001600160a01b03929092168252602082015260400190565b600080600080600060608688031215614f2257600080fd5b8535614f2d81614b0b565b945060208601356001600160401b0380821115614f4957600080fd5b614f5589838a01614b69565b90965094506040880135915080821115614f6e57600080fd5b50614e4a88828901614b69565b60008060408385031215614f8e57600080fd5b823591506020830135614fa081614b0b565b809150509250929050565b948552602085019390935260408401919091526060830152608082015260a00190565b600080600080600060a08688031215614fe657600080fd5b8535614ff181614b0b565b94506020860135935060408601359250606086013561500f81614b0b565b949793965091946080013592915050565b60005b8381101561503b578181015183820152602001615023565b50506000910152565b6000815180845261505c816020860160208601615020565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156150c557603f198886030184526150b3858351615044565b94509285019290850190600101615097565b5092979650505050505050565b6000806000606084860312156150e757600080fd5b505081359360208301359350604090920135919050565b6000806000806080858703121561511457600080fd5b843561511f81614b0b565b966020860135965060408601359560600135945092505050565b6000806040838503121561514c57600080fd5b823561515781614b0b565b91506020830135614fa081614b0b565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60ff81511682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c0810151151560c083015260e081015160e08301526101008082015181840152505050565b86815260208101869052604081018590526101c08101615220606083018661519e565b6001600160a01b03939093166101808201526101a00152949350505050565b634e487b7160e01b600052604160045260246000fd5b6040516101e081016001600160401b038111828210171561528657634e487b7160e01b600052604160045260246000fd5b60405290565b6040516101a081016001600160401b038111828210171561528657634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b038111828210171561528657634e487b7160e01b600052604160045260246000fd5b600060c0828403121561530057600080fd5b60405160c081016001600160401b038111828210171561533057634e487b7160e01b600052604160045260246000fd5b8060405250809150825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201525092915050565b600060c0828403121561538757600080fd5b610d7783836152ee565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d8b57610d8b615391565b81835260006001600160fb1b038311156153d357600080fd5b8260051b80836020870137939093016020019392505050565b8481526001600160a01b03841660208201526060604082018190526000906139ed90830184866153ba565b6000610220820190508a8252896020830152886040830152876060830152615442608083018861519e565b6001600160a01b03959095166101a08201529215156101c08401526101e08301919091526102009091015295945050505050565b805161176c81614c01565b60006101e0828403121561549457600080fd5b61549c615255565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e082015261010080840151818301525061012080840151818301525061014061550c818501615476565b90820152610160838101519082015261018080840151908201526101a080840151908201526101c0928301519281019290925250919050565b60006102208201905088825287602083015286604083015285606083015284608083015261557660a083018561519e565b82516001600160a01b03166101c083015260208301516101e0830152604090920151610200909101529695505050505050565b805182526020810151602083015260408101516040830152606081015160608301525050565b848152602081018490526101e081016155eb604083018561519e565b6155f96101608301846155a9565b95945050505050565b6000806000806080858703121561561857600080fd5b505082516020840151604085015160609095015191969095509092509050565b60006020828403121561564a57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6000806040838503121561567a57600080fd5b505080516020909101519092909150565b87815260208101879052604081018690526001600160a01b0385811660608301528416608082015260c060a082018190526000906156cc90830184866153ba565b9998505050505050505050565b8381526020810183905260c08101612fe560408301846155a9565b60006101e08201905088825287602083015286604083015285606083015261571f608083018661519e565b6101a08201939093526101c0015295945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b03878116825286166020820152604081018590526060810184905260a0608082018190526000906138dc9083018486615736565b6000610200820190508982528860208301528760408301528660608301526157c5608083018761519e565b6001600160a01b03949094166101a08201526101c08101929092526101e09091015295945050505050565b634e487b7160e01b600052601260045260246000fd5b600082615815576158156157f0565b500490565b8481528360208201526060604082015260006139ed606083018486615736565b83815260406020808301829052908201839052600090849060608401835b8681101561588657833561586b81614b0b565b6001600160a01b031682529282019290820190600101615858565b50979650505050505050565b8681526001600160a01b03861660208201526080604082018190526000906158bd90830186886153ba565b82810360608401526156cc8185876153ba565b6000610220820190508a82528960208301528860408301528760608301526158fb608083018861519e565b6001600160a01b03959095166101a08201526101c08101939093526101e08301919091526102009091015295945050505050565b60006101a0828403121561594257600080fd5b61594a61528c565b61595383615476565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015261598960a08401615476565b60a082015260c0838101519082015260e080840151908201526101008084015190820152610120808401519082015261014080840151908201526101608084015190820152610180928301519281019290925250919050565b81810381811115610d8b57610d8b615391565b6000808335601e19843603018112615a0c57600080fd5b8301803591506001600160401b03821115615a2657600080fd5b602001915036819003821315611c5e57600080fd5b600060018201615a4d57615a4d615391565b5060010190565b848152602081018490526101c08101615a70604083018561519e565b8251610160830152602083015161018083015260408301516101a083015295945050505050565b600080600060608486031215615aac57600080fd5b8351925060208401519150604084015190509250925092565b848152602081018490526040810183905261018081016155f9606083018461519e565b6000610240820190508b82528a6020830152896040830152886060830152615b13608083018961519e565b6101a08201969096526001600160a01b03949094166101c08501526101e08401929092526102008301526102209091015295945050505050565b60006101808284031215615b6057600080fd5b615b686152bd565b615b7183615476565b815260208301516020820152604083015160408201526060830151606082015260808301516080820152615ba760a08401615476565b60a082015260c0838101519082015260e08084015190820152610100808401519082015261012080840151908201526101408084015190820152610160928301519281019290925250919050565b848152602081018490526101a08101615c11604083018561519e565b8251610160830152602083015161018083015295945050505050565b858152602081018590526101a08101615c49604083018661519e565b6001600160601b039390931661016082015261018001529392505050565b8082028115828204841417610d8b57610d8b615391565b600181815b80851115615cb9578160001904821115615c9f57615c9f615391565b80851615615cac57918102915b93841c9390800290615c83565b509250929050565b600082615cd057506001610d8b565b81615cdd57506000610d8b565b8160018114615cf35760028114615cfd57615d19565b6001915050610d8b565b60ff841115615d0e57615d0e615391565b50506001821b610d8b565b5060208310610133831016604e8410600b8410161715615d3c575081810a610d8b565b615d468383615c7e565b8060001904821115615d5a57615d5a615391565b029392505050565b6000610d7760ff841683615cc1565b85815260208101859052604081018490526101a08101615d94606083018561519e565b826101808301529695505050505050565b818103600083128015838313168383128216171561205e5761205e615391565b6000610d778383615cc1565b600082615de057615de06157f0565b500690565b600060208284031215615df757600080fd5b8151610d7781614c01565b80820260008212600160ff1b84141615615e1e57615e1e615391565b8181058314821517610d8b57610d8b615391565b600082615e4157615e416157f0565b600160ff1b821460001984141615615e5b57615e5b615391565b500590565b60008251615e72818460208701615020565b9190910192915050565b634e487b7160e01b600052602160045260246000fd5b6000600160ff1b8201615ea757615ea7615391565b5060000390565b602081526000610d77602083018461504456fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206445d6b4b403fa22c0a25cbbe3c8675ea770a775dbd706ff014886dfeb170a7e64736f6c63430008120033000000000000000000000000c6a15814fefaf471301163ae0a65cdac48bb2d4d", + "from": "0xcD9C63CFEE8ad52e6ff0B7F6Cb8726933D0FFaa2", + "to": null, + "nonce": 12 + }, + { + "operationName": "PositionManager", + "address": "0x998AA1d798a30Ed6E864c503e006189e63979B3C", + "data": "0x610140604052600980546001600160b01b03191660011790553480156200002557600080fd5b5060405162004cec38038062004cec8339810160408190526200004891620001d8565b6040518060400160405280601581526020017f416a6e6120506f736974696f6e73204e46542d563100000000000000000000008152506040518060400160405280600b81526020016a414a4e412d56312d504f5360a81b815250604051806040016040528060018152602001603160f81b81525082828160009081620000cf9190620002bc565b506001620000de8282620002bc565b5050835160208086019190912060c081815284518584012060e08190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8189015280820196909652606086019390935260808501919091523084820152815180850390910181529290910190528051910120905060805250506001600755506001600160a01b03821615806200018657506001600160a01b038116155b15620001a55760405163104aee1f60e01b815260040160405180910390fd5b6001600160a01b0391821661010052166101205262000388565b6001600160a01b0381168114620001d557600080fd5b50565b60008060408385031215620001ec57600080fd5b8251620001f981620001bf565b60208401519092506200020c81620001bf565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200024257607f821691505b6020821081036200026357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002b757600081815260208120601f850160051c81016020861015620002925750805b601f850160051c820191505b81811015620002b3578281556001016200029e565b5050505b505050565b81516001600160401b03811115620002d857620002d862000217565b620002f081620002e984546200022d565b8462000269565b602080601f8311600181146200032857600084156200030f5750858301515b600019600386901b1c1916600185901b178555620002b3565b600085815260208120601f198616915b82811015620003595788860151825594840194600190910190840162000338565b5085821015620003785787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e0516101005161012051614914620003d86000396000611f0601526000611e71015260006120650152600061204001526000611fea015260006120b601526149146000f3fe608060405234801561001057600080fd5b50600436106101755760003560e01c806301ffc9a71461017a57806305670774146101a257806306fdde03146101c2578063081812fc146101d7578063095ea7b314610202578063141a468c146102175780631a7d79dd146102385780631aef67701461024b578063228248321461025e57806323b872dd1461027157806330adf81f146102845780633644e5151461029957806342842e0e146102a15780636352211e146102b457806367e820ad146102c75780636827d465146102ef5780636901f7681461030257806370a082311461032b57806372512e261461033e578063745a41bc146103515780637d9202c314610364578063845197a11461037757806395d89b411461038a5780639dc29fac14610392578063a22cb465146103a5578063ac9650d8146103b8578063b4dc0aad146103d8578063b88d4fde146103eb578063c87b56dd146103fe578063e985e9c514610411578063ed513d3514610424575b600080fd5b61018d610188366004613d1a565b610437565b60405190151581526020015b60405180910390f35b6101b56101b0366004613d37565b610489565b6040516101999190613d8b565b6101ca6105bb565b6040516101999190613dee565b6101ea6101e5366004613d37565b61064d565b6040516001600160a01b039091168152602001610199565b610215610210366004613e16565b610674565b005b61022a610225366004613d37565b61078e565b604051908152602001610199565b610215610246366004613e42565b6107c9565b61018d610259366004613e16565b610c6d565b61021561026c366004613eca565b610c80565b61021561027f366004613f25565b610fbe565b61022a60008051602061489f83398151915281565b61022a610fef565b6102156102af366004613f25565b610ffe565b6101ea6102c2366004613d37565b611019565b6102da6102d5366004613f66565b61104e565b60408051928352602083019190915201610199565b61022a6102fd366004613f66565b61108e565b6101ea610310366004613d37565b6000908152600860205260409020546001600160a01b031690565b61022a610339366004613f88565b6110f1565b61018d61034c366004613f66565b611177565b61021561035f366004614068565b6111bc565b61018d610372366004613f66565b611246565b6101b5610385366004613d37565b611261565b6101ca61127e565b6102156103a0366004613e16565b61128d565b6102156103b33660046140ca565b6113ae565b6103cb6103c6366004614108565b6113bd565b6040516101999190614149565b6102156103e6366004613eca565b6114b1565b6102156103f93660046141ab565b6117c6565b6101ca61040c366004613d37565b6117fe565b61018d61041f3660046141fe565b6119fa565b61022a610432366004613f25565b611a28565b60006001600160e01b031982166380ac58cd60e01b148061046857506001600160e01b03198216635b5e139f60e01b145b8061048357506301ffc9a760e01b6001600160e01b03198316145b92915050565b60008181526008602052604081206060916104a660018301611b41565b8051909150806001600160401b038111156104c3576104c3613fa5565b6040519080825280602002602001820160405280156104ec578160200160208202803683370190505b5083549094506000906001600160a01b0316815b838110156105ae5761055d8286838151811061051e5761051e61422c565b602002602001015188600301600089868151811061053e5761053e61422c565b6020026020010151815260200190815260200160002060010154611b4e565b6105a6578481815181106105735761057361422c565b602002602001015187848061058790614258565b9550815181106105995761059961422c565b6020026020010181815250505b600101610500565b5050845250919392505050565b6060600080546105ca90614271565b80601f01602080910402602001604051908101604052809291908181526020018280546105f690614271565b80156106435780601f1061061857610100808354040283529160200191610643565b820191906000526020600020905b81548152906001019060200180831161062657829003601f168201915b5050505050905090565b600061065882611bd9565b506000908152600460205260409020546001600160a01b031690565b600061067f82611019565b9050806001600160a01b0316836001600160a01b0316036106f15760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061070d575061070d81336119fa565b61077f5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016106e8565b6107898383611c01565b505050565b600061079982611c6f565b6107b657604051634a1850bf60e11b815260040160405180910390fd5b5060009081526006602052604090205490565b6002600754036107eb5760405162461bcd60e51b81526004016106e8906142ab565b600260075584846107fb81611bd9565b6108053382611c8c565b6108225760405163518d568f60e11b815260040160405180910390fd5b6000818152600860205260409020546001600160a01b0383811691161461085c576040516369e489f560e11b815260040160405180910390fd5b60008681526008602090815260408083208884526003810183528184208251610140810184528581529384018590529183018490526060830184905260c0830184905260e0830184905261010083018490526101208301849052600182015460808401819052825460a08501529093919291036108ec576040516313ec9d2d60e01b815260040160405180910390fd5b896001600160a01b031663d14827916040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561092757600080fd5b505af115801561093b573d6000803e3d6000fd5b5050604051632a0f78fb60e21b8152600481018b90526001600160a01b038d16925063a83de3ec915060240160a060405180830381865afa158015610984573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a891906142e2565b5060608501526040840181905260208401919091529082526080820151116109e357604051636e2b846160e11b815260040160405180910390fd5b80516020820151606083015160a0840151610a0a9392919081610a058e611cea565b611d55565b60e0820181905260405163332c0e4360e01b815260048101919091526024810189905260448101889052606481018790526001600160a01b038b169063332c0e43906084016060604051808303816000875af1158015610a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a929190614322565b5061012083015261010082015260018301610aad818a611d88565b610aca576040516313ec9d2d60e01b815260040160405180910390fd5b8161010001518260a0015114610af3576040516313ec9d2d60e01b815260040160405180910390fd5b6000898152600385016020526040812081815560010155610b148189611d94565b5060008881526003850160205260409020600181015460c08401819052610b3e908d908b90611b4e565b15610b50576101208301518155610b6f565b826101200151816000016000828254610b699190614350565b90915550505b6040516353a4f8d360e11b81526001600160a01b038d169063a749f1a690610b9d908c903090600401614363565b6040805180830381865afa158015610bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdd919061437a565b60c08501819052600183015550610bf38b611019565b610100840151610120850151604080518f8152602081018f90529081018d9052606081019290925260808201526001600160a01b0391909116907f058e57ed03c1990e8bce6b006244b2a30ce5537007aaa26523d5a621a38258c09060a00160405180910390a25050600160075550505050505050505050565b6000610c798383611da0565b9392505050565b8383610c8b81611bd9565b610c953382611c8c565b610cb25760405163518d568f60e11b815260040160405180910390fd5b6000818152600860205260409020546001600160a01b03838116911614610cec576040516369e489f560e11b815260040160405180910390fd5b60008581526008602052604081209060018201908890610d0b89611019565b9050610d3160405180606001604052806000815260200160008152602001600081525090565b600088815b81811015610f05578b8b82818110610d5057610d5061422c565b905060200201359250610d6c8388611d9490919063ffffffff16565b506040516353a4f8d360e11b81526001600160a01b0387169063a749f1a690610d9b9086908990600401614363565b6040805180830381865afa158015610db7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddb919061437a565b6020860152845260405163483cd18760e01b81526001600160a01b0387169063483cd18790610e1290869030908a9060040161439e565b602060405180830381865afa158015610e2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5391906143bd565b6040850181905284511115610e7b5760405163175936bd60e31b815260040160405180910390fd5b60008381526003890160209081526040918290208251808401909352805483526001015490820181905215610ec357610eb987858360200151611b4e565b15610ec357600081525b845181518290610ed4908390614350565b905250602080860151828201908152600086815260038c019092526040909120915182555160019182015501610d36565b50846001600160a01b0316634efe8af785308e8e6040518563ffffffff1660e01b8152600401610f389493929190614408565b600060405180830381600087803b158015610f5257600080fd5b505af1158015610f66573d6000803e3d6000fd5b50505050836001600160a01b03167ff8f0adfd241239f9f7732e8d89fa383d35fc89770577f260b7df8fd81c0bcb518d8d8d604051610fa793929190614435565b60405180910390a250505050505050505050505050565b610fc83382611c8c565b610fe45760405162461bcd60e51b81526004016106e89061444f565b610789838383611fd2565b6000610ff9611fe6565b905090565b610789838383604051806020016040528060008152506117c6565b6000818152600260205260408120546001600160a01b0316806104835760405162461bcd60e51b81526004016106e89061449d565b60008281526008602090815260408083208484526003018252918290208251808401909352805480845260019091015492909101829052905b9250929050565b600082815260086020908152604080832084845260038101835281842082518084019093528054835260010154928201839052805490926110da916001600160a01b0316908690611b4e565b6110e55780516110e8565b60005b95945050505050565b60006001600160a01b03821661115b5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016106e8565b506001600160a01b031660009081526003602052604090205490565b60008281526008602090815260408083208054858552600382019093529083206001015490916111b4916001600160a01b03909116908590611b4e565b949350505050565b814211156111dd5760405163068568f360e21b815260040160405180910390fd5b6000838152600660205260408120546111fa9086908690866120d8565b905060006112088284612173565b509050611217828483886121b5565b6112345760405163ea8e4eb560e01b815260040160405180910390fd5b61123e8686611c01565b505050505050565b6000828152600860205260408120610c7990600101836121ff565b600081815260086020526040902060609061048390600101611b41565b6060600180546105ca90614271565b818161129881611bd9565b6112a23382611c8c565b6112bf5760405163518d568f60e11b815260040160405180910390fd5b6000818152600860205260409020546001600160a01b038381169116146112f9576040516369e489f560e11b815260040160405180910390fd5b60008381526008602052604090206113139060010161220b565b156113315760405163617e154d60e11b815260040160405180910390fd5b60008381526006602090815260408083208390556008909152812080546001600160a01b0319168155906001820181818161136c8282613cd2565b50505050505061137b83612215565b604051839033907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca590600090a350505050565b6113b933838361229e565b5050565b6060816001600160401b038111156113d7576113d7613fa5565b60405190808252806020026020018201604052801561140a57816020015b60608152602001906001900390816113f55790505b50905060005b828110156114aa5761147a3085858481811061142e5761142e61422c565b905060200281019061144091906144cf565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061236892505050565b82828151811061148c5761148c61422c565b602002602001018190525080806114a290614258565b915050611410565b5092915050565b83836114bc81611bd9565b6114c63382611c8c565b6114e35760405163518d568f60e11b815260040160405180910390fd5b6000818152600860205260409020546001600160a01b0383811691161461151d576040516369e489f560e11b815260040160405180910390fd5b60008581526008602052604081209087908581816001600160401b0381111561154857611548613fa5565b604051908082528060200260200182016040528015611571578160200160208202803683370190505b50905060005b8281101561169c578989828181106115915761159161422c565b60209081029290920135600081815260038a018452604090819020815180830190925280548083526001909101549482019490945290965091159050806115da57506020810151155b156115f8576040516313ec9d2d60e01b815260040160405180910390fd5b61160786868360200151611b4e565b1561162557604051636e2b846160e11b815260040160405180910390fd5b6116326001880186611d88565b61164f576040516313ec9d2d60e01b815260040160405180910390fd5b80600001518383815181106116665761166661422c565b60209081029190910181019190915260008681526003890190915260408120818155600190810191909155919091019050611577565b5060006116a88b611019565b60405163a918058d60e01b81529091506001600160a01b0386169063a918058d906116dd9084908e908e908890600401614515565b600060405180830381600087803b1580156116f757600080fd5b505af115801561170b573d6000803e3d6000fd5b5050604051634efe8af760e01b81526001600160a01b0388169250634efe8af7915061174190309085908f908f90600401614408565b600060405180830381600087803b15801561175b57600080fd5b505af115801561176f573d6000803e3d6000fd5b50505050806001600160a01b03167f2cc54205bd9d280e9be43b6e0e746470aa776862c59ccdc8822ba60b955ab9f98c8c8c6040516117b093929190614435565b60405180910390a2505050505050505050505050565b6117d03383611c8c565b6117ec5760405162461bcd60e51b81526004016106e89061444f565b6117f88484848461238d565b50505050565b606061180982611c6f565b611826576040516379d93f4960e01b815260040160405180910390fd5b6000828152600860209081526040808320805482516348d399e760e01b8152925191946001600160a01b0390911693909284926348d399e7926004808401939192918290030181865afa158015611881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a5919061454c565b90506000826001600160a01b031663bad346206040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190b919061454c565b905060006040518060c00160405280611923856123c0565b8152602001611931846123c0565b8152602001888152602001856001600160a01b0316815260200161195489611019565b6001600160a01b0316815260200161196e87600101611b41565b90526040516337b2b75160e01b815290915073f62792655858fa180f5adce43e2758b1e45ecb9a906337b2b751906119aa908490600401614569565b600060405180830381865af41580156119c7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119ef919081019061461f565b979650505050505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000600260075403611a4c5760405162461bcd60e51b81526004016106e8906142ab565b6002600755611a5b8483611da0565b611a7b5760405160016247bad560e01b0319815260040160405180910390fd5b600980546001600160b01b0316906000611a948361468c565b82546101009290920a6001600160b01b0381810219909316918316021790915516600081815260086020526040902080546001600160a01b0319166001600160a01b0387161790559050611ae883826123ee565b836001600160a01b0316836001600160a01b03167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f883604051611b2d91815260200190565b60405180910390a360016007559392505050565b60606000610c798361250e565b604051632a0f78fb60e21b81526004810183905260009081906001600160a01b0386169063a83de3ec9060240160a060405180830381865afa158015611b98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbc91906142e2565b50509250505080600014611bd1578083111591505b509392505050565b611be281611c6f565b611bfe5760405162461bcd60e51b81526004016106e89061449d565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611c3682611019565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000908152600260205260409020546001600160a01b0316151590565b600080611c9883611019565b9050806001600160a01b0316846001600160a01b03161480611cbf5750611cbf81856119fa565b806111b45750836001600160a01b0316611cd88461064d565b6001600160a01b031614949350505050565b600080611cf98361103c6146ba565b9050610c9f19811280611d0d575061103c81135b15611d2b57604051637edf443b60e11b815260040160405180910390fd5b610c79611d50611d3a8361256a565b611d4b670df27a2cdf4480006125f5565b6126d9565b61279e565b6000611d6686888787866000612835565b905084811115611d735750835b82811115611d7e5750815b9695505050505050565b6000610c7983836128a0565b6000610c798383612993565b600080836001600160a01b03166348d399e76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611de1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e05919061454c565b90506000846001600160a01b031663bad346206040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6b919061454c565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637f165b0b8685856040518463ffffffff1660e01b8152600401611ebf9392919061439e565b602060405180830381865afa158015611edc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f00919061454c565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637f165b0b8786866040518463ffffffff1660e01b8152600401611f549392919061439e565b602060405180830381865afa158015611f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f95919061454c565b9050816001600160a01b0316876001600160a01b031614806119ef5750806001600160a01b0316876001600160a01b031614979650505050505050565b611fdb816129dd565b6107898383836129ff565b60007f000000000000000000000000000000000000000000000000000000000000000046146120b35750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60006110e86120e5611fe6565b6040805160008051602061489f8339815191526020808301919091526001600160a01b038a1682840152606082018990526080820188905260a08083018890528351808403909101815260c08301845280519082012061190160f01b60e084015260e28301949094526101028083019490945282518083039094018452610122909101909152815191012090565b60008082516041036121a95760208301516040840151606085015160001a61219d87828585612b89565b94509450505050611087565b50600090506002611087565b6000806001600160a01b038416158015906121d557506121d58484611c8c565b905060006121ec6121e585611019565b8888612c6c565b905081806119ef57509695505050505050565b6000610c798383612dad565b6000610483825490565b600061222082611019565b905061222d600083611c01565b6001600160a01b03811660009081526003602052604081208054600192906122569084906146da565b909155505060008281526002602052604080822080546001600160a01b0319169055518391906001600160a01b038416906000805160206148bf833981519152908390a45050565b816001600160a01b0316836001600160a01b0316036122fb5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b60448201526064016106e8565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6060610c79838360405180606001604052806027815260200161487860279139612dc5565b612398848484611fd2565b6123a484848484612e96565b6117f85760405162461bcd60e51b81526004016106e8906146ed565b60606123d3826395d89b4160e01b612f9b565b905080516000036123e9576104838260066130c7565b919050565b6001600160a01b0382166124445760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016106e8565b61244d81611c6f565b156124995760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b60448201526064016106e8565b6001600160a01b03821660009081526003602052604081208054600192906124c2908490614350565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392906000805160206148bf833981519152908290a45050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561255e57602002820191906000526020600020905b81548152602001906001019080831161254a575b50505050509050919050565b60007809392ee8e921d5d073aff322e62439fcf32d7f344649470f8f198212156125aa5760405163e608e18b60e01b8152600481018390526024016106e8565b7809392ee8e921d5d073aff322e62439fcf32d7f344649470f908213156125e7576040516371f72a3160e01b8152600481018390526024016106e8565b50670de0b6b3a76400000290565b600080821361261a5760405163309fa7dd60e11b8152600481018390526024016106e8565b6000670de0b6b3a764000083126126335750600161264c565b6000199050826a0c097ce7bc90715b34b9f160241b0492505b6000612661670de0b6b3a76400008505613277565b670de0b6b3a764000081029350905083811d670de0b6b3a763ffff19810161268b57505002919050565b6706f05b59d3b200005b60008113156126d057670de0b6b3a7640000828002059150671bc16d674ec8000082126126c8579384019360019190911d905b60011d612695565b50505002919050565b6000600160ff1b8314806126f05750600160ff1b82145b1561270e57604051630d01a11b60e21b815260040160405180910390fd5b6000806000851261271f5784612724565b846000035b9150600084126127345783612739565b836000035b905060006127478383613355565b90506001600160ff1b038111156127745760405163bf79e8d960e01b8152600481018290526024016106e8565b60001980871390861380821860011461278d5782612792565b826000035b98975050505050505050565b6000808212156127f15768033dd1780914b97114198212156127c257506000919050565b6127ce8260000361279e565b6a0c097ce7bc90715b34b9f160241b816127ea576127ea61473f565b0592915050565b680a688906bd8b000000821261281d5760405163e69458f960e01b8152600481018390526024016106e8565b670de0b6b3a7640000604083901b04610c798161341b565b600084158015612843575086155b1561284f575082611d7e565b8560000361285e575082611d7e565b6119ef61286b8489614755565b61287d670de0b6b3a764000088614755565b6128879190614350565b8561289a670de0b6b3a76400008a614755565b85613aad565b600081815260018301602052604081205480156129895760006128c46001836146da565b85549091506000906128d8906001906146da565b905081811461293d5760008660000182815481106128f8576128f861422c565b906000526020600020015490508087600001848154811061291b5761291b61422c565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061294e5761294e61476c565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610483565b6000915050610483565b600061299f8383612dad565b6129d557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610483565b506000610483565b60008181526006602052604081208054916129f783614258565b919050555050565b826001600160a01b0316612a1282611019565b6001600160a01b031614612a765760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016106e8565b6001600160a01b038216612ad85760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016106e8565b612ae3600082611c01565b6001600160a01b0383166000908152600360205260408120805460019290612b0c9084906146da565b90915550506001600160a01b0382166000908152600360205260408120805460019290612b3a908490614350565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716916000805160206148bf83398151915291a4505050565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115612bb65750600090506003612c63565b8460ff16601b14158015612bce57508460ff16601c14155b15612bdf5750600090506004612c63565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612c33573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612c5c57600060019250925050612c63565b9150600090505b94509492505050565b6000806000612c7b8585612173565b90925090506000816004811115612c9457612c94614782565b148015612cb25750856001600160a01b0316826001600160a01b0316145b15612cc257600192505050610c79565b600080876001600160a01b0316631626ba7e60e01b8888604051602401612cea929190614798565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612d2891906147b1565b600060405180830381855afa9150503d8060008114612d63576040519150601f19603f3d011682016040523d82523d6000602084013e612d68565b606091505b5091509150818015612d7b575080516020145b801561279257508051630b135d3f60e11b90612da090830160209081019084016143bd565b1498975050505050505050565b60009081526001919091016020526040902054151590565b6060612dd084613afe565b612e2b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016106e8565b600080856001600160a01b031685604051612e4691906147b1565b600060405180830381855af49150503d8060008114612e81576040519150601f19603f3d011682016040523d82523d6000602084013e612e86565b606091505b5091509150611d7e828286613b0d565b6000612eaa846001600160a01b0316613afe565b15612f9357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612ee19033908990889088906004016147cd565b6020604051808303816000875af1925050508015612f1c575060408051601f3d908101601f19168201909252612f1991810190614800565b60015b612f79573d808015612f4a576040519150601f19603f3d011682016040523d82523d6000602084013e612f4f565b606091505b508051600003612f715760405162461bcd60e51b81526004016106e8906146ed565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506111b4565b5060016111b4565b60408051600481526024810182526020810180516001600160e01b03166001600160e01b03198516179052905160609160009182916001600160a01b03871691612fe591906147b1565b600060405180830381855afa9150503d8060008114613020576040519150601f19603f3d011682016040523d82523d6000602084013e613025565b606091505b509150915081158061303657508051155b15613054576040518060200160405280600081525092505050610483565b80516020036130885760008180602001905181019061307391906143bd565b905061307e81613b46565b9350505050610483565b6040815111156130af57808060200190518101906130a6919061461f565b92505050610483565b50506040805160208101909152600081529392505050565b60606130d460028361481d565b1580156130e15750600082115b80156130ee575060288211155b6131385760405162461bcd60e51b815260206004820152601b60248201527a29b0b332a2a92199182730b6b2b91d1024a72b20a624a22fa622a760291b60448201526064016106e8565b6000826001600160401b0381111561315257613152613fa5565b6040519080825280601f01601f19166020018201604052801561317c576020820181803683370190505b5090506001600160a01b03841660005b613197600286614831565b81101561326d5760006131ab8260136146da565b6131b6906008614755565b83901c9050600f600482901c1660006131d260f0841684614845565b90506131dd82613bf6565b866131e9866002614755565b815181106131f9576131f961422c565b60200101906001600160f81b031916908160001a90535061321981613bf6565b86613225866002614755565b613230906001614350565b815181106132405761324061422c565b60200101906001600160f81b031916908160001a905350505050808061326590614258565b91505061318c565b5090949350505050565b6000600160801b821061329757608091821c916132949082614350565b90505b600160401b82106132b557604091821c916132b29082614350565b90505b600160201b82106132d357602091821c916132d09082614350565b90505b6201000082106132f057601091821c916132ed9082614350565b90505b610100821061330c57600891821c916133099082614350565b90505b6010821061332757600491821c916133249082614350565b90505b6004821061334257600291821c9161333f9082614350565b90505b600282106123e957610483600182614350565b60008080600019848609848602925082811083820303915050670de0b6b3a764000081106133995760405163698d9a0160e11b8152600481018290526024016106e8565b600080670de0b6b3a764000086880991506706f05b59d3b1ffff82119050826000036133d75780670de0b6b3a7640000850401945050505050610483565b620400008285030493909111909103600160ee1b02919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690201905092915050565b600160bf1b6001603f1b82161561343b5768016a09e667f3bcc9090260401c5b6001603e1b821615613456576801306fe0a31b7152df0260401c5b6001603d1b821615613471576801172b83c7d517adce0260401c5b6001603c1b82161561348c5768010b5586cf9890f62a0260401c5b6001603b1b8216156134a7576801059b0d31585743ae0260401c5b6001603a1b8216156134c257680102c9a3e778060ee70260401c5b600160391b8216156134dd5768010163da9fb33356d80260401c5b600160381b8216156134f857680100b1afa5abcbed610260401c5b600160371b8216156135135768010058c86da1c09ea20260401c5b600160361b82161561352e576801002c605e2e8cec500260401c5b600160351b82161561354957680100162f3904051fa10260401c5b600160341b821615613564576801000b175effdc76ba0260401c5b600160331b82161561357f57680100058ba01fb9f96d0260401c5b600160321b82161561359a5768010002c5cc37da94920260401c5b600160311b8216156135b5576801000162e525ee05470260401c5b600160301b8216156135d05768010000b17255775c040260401c5b6001602f1b8216156135eb576801000058b91b5bc9ae0260401c5b6001602e1b82161561360657680100002c5c89d5ec6d0260401c5b6001602d1b8216156136215768010000162e43f4f8310260401c5b6001602c1b82161561363c57680100000b1721bcfc9a0260401c5b6001602b1b8216156136575768010000058b90cf1e6e0260401c5b6001602a1b821615613672576801000002c5c863b73f0260401c5b600160291b82161561368d57680100000162e430e5a20260401c5b600160281b8216156136a8576801000000b1721835510260401c5b600160271b8216156136c357680100000058b90c0b490260401c5b600160261b8216156136de5768010000002c5c8601cc0260401c5b600160251b8216156136f9576801000000162e42fff00260401c5b600160241b8216156137145768010000000b17217fbb0260401c5b600160231b82161561372f576801000000058b90bfce0260401c5b600160221b82161561374a57680100000002c5c85fe30260401c5b600160211b8216156137655768010000000162e42ff10260401c5b600160201b82161561378057680100000000b17217f80260401c5b638000000082161561379b5768010000000058b90bfc0260401c5b63400000008216156137b6576801000000002c5c85fe0260401c5b63200000008216156137d157680100000000162e42ff0260401c5b63100000008216156137ec576801000000000b17217f0260401c5b630800000082161561380757680100000000058b90c00260401c5b63040000008216156138225768010000000002c5c8600260401c5b630200000082161561383d576801000000000162e4300260401c5b63010000008216156138585768010000000000b172180260401c5b62800000821615613872576801000000000058b90c0260401c5b6240000082161561388c57680100000000002c5c860260401c5b622000008216156138a65768010000000000162e430260401c5b621000008216156138c057680100000000000b17210260401c5b620800008216156138da5768010000000000058b910260401c5b620400008216156138f4576801000000000002c5c80260401c5b6202000082161561390e57680100000000000162e40260401c5b620100008216156139275761b172600160401b010260401c5b61800082161561393f576158b9600160401b010260401c5b61400082161561395757612c5d600160401b010260401c5b61200082161561396f5761162e600160401b010260401c5b61100082161561398757610b17600160401b010260401c5b61080082161561399f5761058c600160401b010260401c5b6104008216156139b7576102c6600160401b010260401c5b6102008216156139cf57610163600160401b010260401c5b6101008216156139e65760b1600160401b010260401c5b60808216156139fc576059600160401b010260401c5b6040821615613a1257602c600160401b010260401c5b6020821615613a28576016600160401b010260401c5b6010821615613a3e57600b600160401b010260401c5b6008821615613a54576006600160401b010260401c5b6004821615613a6a576003600160401b010260401c5b6002821615613a80576001600160401b010260401c5b6001821615613a96576001600160401b010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b600080613abb868686613c23565b90506001836002811115613ad157613ad1614782565b148015613aee575060008480613ae957613ae961473f565b868809115b156110e857611d7e600182614350565b6001600160a01b03163b151590565b60608315613b1c575081610c79565b825115613b2c5782518084602001fd5b8160405162461bcd60e51b81526004016106e89190613dee565b604080516020808252818301909252606091600091906020820181803683370190505090506000805b6020811015613bed576000858260208110613b8c57613b8c61422c565b1a60f81b90506001600160f81b0319811615613bda5780848481518110613bb557613bb561422c565b60200101906001600160f81b031916908160001a90535082613bd681614258565b9350505b5080613be581614258565b915050613b6f565b50815292915050565b6000600a8260ff161015613c1857613c0f82603061485e565b60f81b92915050565b613c0f82603761485e565b6000808060001985870985870292508281108382030391505080600003613c5d57838281613c5357613c5361473f565b0492505050610c79565b808411613c6957600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b5080546000825590600052602060002090810190611bfe91905b80821115613d005760008155600101613cec565b5090565b6001600160e01b031981168114611bfe57600080fd5b600060208284031215613d2c57600080fd5b8135610c7981613d04565b600060208284031215613d4957600080fd5b5035919050565b600081518084526020808501945080840160005b83811015613d8057815187529582019590820190600101613d64565b509495945050505050565b602081526000610c796020830184613d50565b60005b83811015613db9578181015183820152602001613da1565b50506000910152565b60008151808452613dda816020860160208601613d9e565b601f01601f19169290920160200192915050565b602081526000610c796020830184613dc2565b6001600160a01b0381168114611bfe57600080fd5b60008060408385031215613e2957600080fd5b8235613e3481613e01565b946020939093013593505050565b600080600080600060a08688031215613e5a57600080fd5b8535613e6581613e01565b97602087013597506040870135966060810135965060800135945092505050565b60008083601f840112613e9857600080fd5b5081356001600160401b03811115613eaf57600080fd5b6020830191508360208260051b850101111561108757600080fd5b60008060008060608587031215613ee057600080fd5b8435613eeb81613e01565b93506020850135925060408501356001600160401b03811115613f0d57600080fd5b613f1987828801613e86565b95989497509550505050565b600080600060608486031215613f3a57600080fd5b8335613f4581613e01565b92506020840135613f5581613e01565b929592945050506040919091013590565b60008060408385031215613f7957600080fd5b50508035926020909101359150565b600060208284031215613f9a57600080fd5b8135610c7981613e01565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613fe357613fe3613fa5565b604052919050565b60006001600160401b0382111561400457614004613fa5565b50601f01601f191660200190565b600082601f83011261402357600080fd5b813561403661403182613feb565b613fbb565b81815284602083860101111561404b57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561407e57600080fd5b843561408981613e01565b9350602085013592506040850135915060608501356001600160401b038111156140b257600080fd5b6140be87828801614012565b91505092959194509250565b600080604083850312156140dd57600080fd5b82356140e881613e01565b9150602083013580151581146140fd57600080fd5b809150509250929050565b6000806020838503121561411b57600080fd5b82356001600160401b0381111561413157600080fd5b61413d85828601613e86565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561419e57603f1988860301845261418c858351613dc2565b94509285019290850190600101614170565b5092979650505050505050565b600080600080608085870312156141c157600080fd5b84356141cc81613e01565b935060208501356141dc81613e01565b92506040850135915060608501356001600160401b038111156140b257600080fd5b6000806040838503121561421157600080fd5b823561421c81613e01565b915060208301356140fd81613e01565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161426a5761426a614242565b5060010190565b600181811c9082168061428557607f821691505b6020821081036142a557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600080600080600060a086880312156142fa57600080fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b60008060006060848603121561433757600080fd5b8351925060208401519150604084015190509250925092565b8082018082111561048357610483614242565b9182526001600160a01b0316602082015260400190565b6000806040838503121561438d57600080fd5b505080516020909101519092909150565b9283526001600160a01b03918216602084015216604082015260600190565b6000602082840312156143cf57600080fd5b5051919050565b81835260006001600160fb1b038311156143ef57600080fd5b8260051b80836020870137939093016020019392505050565b6001600160a01b03858116825284166020820152606060408201819052600090611d7e90830184866143d6565b8381526040602082015260006110e86040830184866143d6565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b6000808335601e198436030181126144e657600080fd5b8301803591506001600160401b0382111561450057600080fd5b60200191503681900382131561108757600080fd5b6001600160a01b038516815260606020820181905260009061453a90830185876143d6565b82810360408401526119ef8185613d50565b60006020828403121561455e57600080fd5b8151610c7981613e01565b60006020808352835160c08285015261458560e0850182613dc2565b905081850151601f19808684030160408701526145a28383613dc2565b60408801516060888101919091528801516001600160a01b039081166080808a01919091528901511660a08089019190915288015187820390920160c088015281518082529185019350600092508401905b8083101561461457835182529284019260019290920191908401906145f4565b509695505050505050565b60006020828403121561463157600080fd5b81516001600160401b0381111561464757600080fd5b8201601f8101841361465857600080fd5b805161466661403182613feb565b81815285602083850101111561467b57600080fd5b6110e8826020830160208601613d9e565b60006001600160b01b038281166002600160b01b031981016146b0576146b0614242565b6001019392505050565b81810360008312801583831316838312821617156114aa576114aa614242565b8181038181111561048357610483614242565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b808202811582820484141761048357610483614242565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b8281526040602082015260006111b46040830184613dc2565b600082516147c3818460208701613d9e565b9190910192915050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611d7e90830184613dc2565b60006020828403121561481257600080fd5b8151610c7981613d04565b60008261482c5761482c61473f565b500690565b6000826148405761484061473f565b500490565b60ff828116828216039081111561048357610483614242565b60ff81811683821601908111156104835761048361424256fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656449ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9adddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212200deacd1f9d3e31ab1133c4e495e147c2a07095397b2cf228f22cbb8d633988b464736f6c63430008120033000000000000000000000000cf6f52f6b65f284fffafc35ffe754830c05da0c2000000000000000000000000cf6f52f6b65f284fffafc35ffe754830c05da0c2", + "from": "0xcD9C63CFEE8ad52e6ff0B7F6Cb8726933D0FFaa2", + "to": null, + "nonce": 13 + }, + { + "operationName": "RewardsManager", + "address": "0x280C53b52a4ecbB0A2F2f5d0A10B354600c71602", + "data": "0x60c06040523480156200001157600080fd5b5060405162002297380380620022978339810160408190526200003491620000a2565b6001600160a01b03821615806200005257506001600160a01b038116155b15620000715760405163104aee1f60e01b815260040160405180910390fd5b6001600160a01b039182166080521660a052620000e1565b6001600160a01b03811681146200009f57600080fd5b50565b60008060408385031215620000b657600080fd5b8251620000c38162000089565b6020840151909250620000d68162000089565b809150509250929050565b60805160a05161213562000162600039600081816101cb0152818161037701528181610437015281816104cd015281816106410152818161071a0152818161084c0152818161099b01528181610b5e01528181610ca4015281816111e101526118bb0152600081816102120152818161104c015261110401526121356000f3fe608060405234801561001057600080fd5b50600436106100ba5760003560e01c8063012ce501146100bf578063054da984146100d457806309813482146100fc5780631da1767a146101525780632e17de781461018057806348a88706146101935780635685c466146101a6578063791b98bc146101c6578063a694fc3a146101fa578063ab0155611461020d578063b087690c14610234578063d323c62814610247578063e029251114610293578063e62a6499146102be575b600080fd5b6100d26100cd366004611c63565b6102d1565b005b6100e76100e2366004611c91565b6102df565b60405190151581526020015b60405180910390f35b61014361010a366004611c63565b6000908152600460205260409020600181015490546001600160a01b039182169291811691600160a01b9091046001600160601b031690565b6040516100f393929190611cc6565b610172610160366004611c63565b60026020526000908152604090205481565b6040519081526020016100f3565b6100d261018e366004611c63565b610315565b6101726101a1366004611cea565b610320565b6101726101b4366004611c63565b60016020526000908152604090205481565b6101ed7f000000000000000000000000000000000000000000000000000000000000000081565b6040516100f39190611d0c565b6100d2610208366004611c63565b61041e565b6101ed7f000000000000000000000000000000000000000000000000000000000000000081565b6100d2610242366004611d20565b6108da565b61027e610255366004611cea565b600091825260046020908152604080842092845260029092019052902080546001909101549091565b604080519283526020830191909152016100f3565b6100e76102a1366004611cea565b600060208181529281526040808220909352908152205460ff1681565b6101726102cc366004611d4c565b610981565b6102dc816000610a85565b50565b6001600160a01b0383166000908152600360209081526040808320858452825280832084845290915290205415155b9392505050565b6102dc816001610a85565b600082815260046020819052604080832080546001909101549151630159c1dd60e21b81529283018690526001600160a01b03808216936001600160601b03600160a01b93849004811694939093049092169185917f00000000000000000000000000000000000000000000000000000000000000001690630567077490602401600060405180830381865afa1580156103be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103e69190810190611ded565b9050825b86811015610413576103ff8882858886610d18565b6104099087611ec0565b95506001016103ea565b505050505092915050565b604051630d203eed60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636901f76890602401602060405180830381865afa158015610486573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104aa9190611ed3565b6040516331a9108f60e11b81526004810184905290915033906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610514573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105389190611ed3565b6001600160a01b03161461055f57604051631249900760e31b815260040160405180910390fd5b60008281526004602081815260408084206001810180546001600160a01b0319908116331790915581546001600160a01b0388169116811782558251632558fe1b60e11b815292519195949093634ab1fc3693808301939192908290030181865afa1580156105d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f69190611ef0565b6001830180546001600160601b038316600160a01b026001600160a01b03918216811790925584548116909117845560405163845197a160e01b8152600481018790529192506000917f00000000000000000000000000000000000000000000000000000000000000009091169063845197a190602401600060405180830381865afa15801561068a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106b29190810190611ded565b80519091506000805b828110156107fc578381815181106106d5576106d5611f09565b6020908102919091018101516000818152600289019092526040918290209151636827d46560e01b8152600481018b9052602481018290529093506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636827d46590604401602060405180830381865afa158015610761573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107859190611ef0565b81556040516316f8a46360e01b8152600481018490526001600160a01b038916906316f8a46390602401602060405180830381865afa1580156107cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f09190611ef0565b600191820155016106bb565b5060405187906001600160a01b0388169033907f99039fcf0a98f484616c5196ee8b2ecfa971babf0b519848289ea4db381f85f790600090a46040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd9061088590339030908c90600401611cc6565b600060405180830381600087803b15801561089f57600080fd5b505af11580156108b3573d6000803e3d6000fd5b5050505060006108c38785610e39565b90506108d0816000611032565b5050505050505050565b600083815260046020526040902060018101546001600160a01b0316331461091557604051631249900760e31b815260040160405180910390fd5b60008481526020818152604080832086845290915290205460ff161561094e57604051630c8d9eab60e31b815260040160405180910390fd5b805460009061096e908390879087906001906001600160a01b0316611130565b905061097a8184611032565b5050505050565b6040516301aef67760e41b81526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631aef6770906109d29088908890600401611f1f565b602060405180830381865afa1580156109ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a139190611f38565b610a335760405160016247bad560e01b0319815260040160405180910390fd5b610a7085848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610e3992505050565b9050610a7d816000611032565b949350505050565b600082815260046020526040902060018101546001600160a01b03163314610ac057604051631249900760e31b815260040160405180910390fd5b80546001600160a01b031660008315610b4557610b428386846001600160a01b0316634ab1fc366040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3a9190611ef0565b600086611130565b90505b60405163845197a160e01b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063845197a190602401600060405180830381865afa158015610bad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bd59190810190611ded565b805190915060005b81811015610c3157856002016000848381518110610bfd57610bfd611f09565b6020026020010151815260200190815260200160002060008082016000905560018201600090555050806001019050610bdd565b506000878152600460205260408082208281556001018290555188916001600160a01b0387169133917f390b1276974b9463e5d66ab10df69b6f3d7b930eb066a0e66df327edd2cc811c91a48515610c8d57610c8d8384611032565b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd90610cdd90309033908c90600401611cc6565b600060405180830381600087803b158015610cf757600080fd5b505af1158015610d0b573d6000803e3d6000fd5b5050505050505050505050565b600080610d26866001611ec0565b6000818152600160209081526040808320548b84526004909252822086519394509092829190825b81811015610e1457888181518110610d6857610d68611f09565b602002602001015194506000836002016000878152602001908152602001600020905060008c8e14610de357600360008d6001600160a01b03166001600160a01b03168152602001908152602001600020600088815260200190815260200160002060008f8152602001908152602001600020549050610dea565b5060018101545b610dfb8c8a8985600001548561132a565b610e059087611ec0565b95508260010192505050610d4e565b508215610e2a57610e2789848888611387565b96505b50505050505095945050505050565b600080836001600160a01b0316634ab1fc366040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9e9190611ef0565b90506000806000610eaf878561141f565b9250925092508360001480610ec2575081155b15610f0757855160005b81811015610f0057610ef889898381518110610eea57610eea611f09565b602002602001015188611562565b600101610ecc565b5050610fdb565b610f146212750084611ec0565b4211610fdb57855160005b81811015610f6157610f4d89898381518110610f3d57610f3d611f09565b602002602001015188878761161b565b610f579088611ec0565b9650600101610f1f565b506000610f7667016345785d8a0000856117d1565b60008781526002602052604090205490915081610f938983611ec0565b10610fb457818111610fae57610fa98183611f5a565b610fb1565b60005b97505b600087815260026020526040812080548a9290610fd2908490611ec0565b90915550505050505b866001600160a01b0316336001600160a01b03167f2addf960ac7208d80875297b6b4849dccedb2c1ce4112ca56d4a7b1ec990eac18888604051611020929190611f6d565b60405180910390a35050505092915050565b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190611081903090600401611d0c565b602060405180830381865afa15801561109e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c29190611ef0565b9050808311156110d0578092505b818310156110f15760405163bb55fd2760e01b815260040160405180910390fd5b821561112b5761112b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016338561180e565b505050565b600082801561119f5750816001600160a01b0316634ab1fc366040518163ffffffff1660e01b8152600401602060405180830381865afa158015611178573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119c9190611ef0565b84115b156111bd57604051630d04dc9760e11b815260040160405180910390fd5b60405163845197a160e01b8152600481018690526112559083906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063845197a190602401600060405180830381865afa158015611228573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112509190810190611ded565b610e39565b60008681526020818152604080832088845290915290205490915060ff1661128e576112818585611864565b61128b9082611ec0565b90505b85546000906112ad90600160a01b90046001600160601b0316866119a9565b905085836001600160a01b0316336001600160a01b03167f26447111e14a1ad9690d5e0731f6054b567c4b2263b8ee168ea4235344b3fe6884866040516112f5929190611f6d565b60405180910390a45085546001600160601b03909416600160a01b026001600160a01b03909416939093179094555092915050565b6000811561137e576001600160a01b038616600090815260036020908152604080832087845282528083208884529091529020548281111561137c576113796113738483611f5a565b856117d1565b91505b505b95945050505050565b6000806000611396878661141f565b9250925050806000146113cc576113c76113c16113b388856117d1565b6706f05b59d3b200006117d1565b82611a43565b6113cf565b60005b925060006113e5670b1a2bc2ec500000846117d1565b9050806113f28587611ec0565b11156114145780851161140e576114098582611f5a565b611411565b60005b93505b505050949350505050565b60008080831561155b5760405163163d970360e11b81526004810185905260009081906001600160a01b03881690632c7b2e0690602401606060405180830381865afa158015611473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114979190611fb5565b919650925090506000806001600160a01b038916632c7b2e066114b98a611fe3565b9950896040518263ffffffff1660e01b81526004016114da91815260200190565b606060405180830381865afa1580156114f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151b9190611fb5565b92509250508260000361152f576000611539565b6115398184611f5a565b95508360000361154a576000611554565b6115548285611f5a565b9450505050505b9250925092565b6001600160a01b0383166000908152600360209081526040808320858452825280832084845291829052822054909181900361097a576040516316f8a46360e01b8152600481018590526000906001600160a01b038716906316f8a46390602401602060405180830381865afa1580156115e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116049190611ef0565b600085815260208590526040902055505050505050565b6001600160a01b03851660009081526003602090815260408083208784528252808320868452918290528220548083036117c6576040516316f8a46360e01b8152600481018890526000906001600160a01b038a16906316f8a46390602401602060405180830381865afa158015611697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bb9190611ef0565b600088815260208590526040812082905590915083816116da8a611fe3565b9950898152602001908152602001600020549050806000141580156116fe57508181105b156117c357604051632a0f78fb60e21b8152600481018a90526000906001600160a01b038c169063a83de3ec9060240160a060405180830381865afa15801561174b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176f9190611ffa565b509350505050600061178189836117d1565b905087156117bc576117b76117a866b1a2bc2ec500006117a38481888a611f5a565b6117d1565b6117b2868b6117d1565b611a58565b610e27565b6000965050505b50505b505095945050505050565b6000670de0b6b3a76400006117e760028261203a565b6117f1848661205c565b6117fb9190611ec0565b611805919061203a565b90505b92915050565b61112b8363a9059cbb60e01b848460405160240161182d929190611f1f565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611a78565b600082815260046020819052604080832080546001909101549151630159c1dd60e21b81529283018690526001600160a01b03808216936001600160601b03600160a01b93849004811694939093049092169185917f00000000000000000000000000000000000000000000000000000000000000001690630567077490602401600060405180830381865afa158015611902573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261192a9190810190611ded565b9050825b868110156104135760006119458983868987610d18565b90506119518188611ec0565b96508160010191508060016000848152602001908152602001600020600082825461197c9190611ec0565b9091555050506000888152602081815260408083208484529091529020805460ff1916600117905561192e565b60606119b58383611f5a565b6001600160401b038111156119cc576119cc611dd7565b6040519080825280602002602001820160405280156119f5578160200160208202803683370190505b509050600080611a0485612073565b94508490505b838111611a3b5780838381518110611a2457611a24611f09565b602090810291909101015260019182019101611a0a565b505092915050565b6000816117fb670de0b6b3a76400008561205c565b600081611a6660028261203a565b6117f1670de0b6b3a76400008661205c565b6000611acd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611b4f9092919063ffffffff16565b80519091501561112b5780806020019051810190611aeb9190611f38565b61112b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084015b60405180910390fd5b6060610a7d8484600085856001600160a01b0385163b611bb15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611b46565b600080866001600160a01b03168587604051611bcd91906120b0565b60006040518083038185875af1925050503d8060008114611c0a576040519150601f19603f3d011682016040523d82523d6000602084013e611c0f565b606091505b5091509150611c1f828286611c2a565b979650505050505050565b60608315611c3957508161030e565b825115611c495782518084602001fd5b8160405162461bcd60e51b8152600401611b4691906120cc565b600060208284031215611c7557600080fd5b5035919050565b6001600160a01b03811681146102dc57600080fd5b600080600060608486031215611ca657600080fd5b8335611cb181611c7c565b95602085013595506040909401359392505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60008060408385031215611cfd57600080fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b600080600060608486031215611d3557600080fd5b505081359360208301359350604090920135919050565b60008060008060608587031215611d6257600080fd5b8435611d6d81611c7c565b93506020850135925060408501356001600160401b0380821115611d9057600080fd5b818701915087601f830112611da457600080fd5b813581811115611db357600080fd5b8860208260051b8501011115611dc857600080fd5b95989497505060200194505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215611e0057600080fd5b82516001600160401b0380821115611e1757600080fd5b818501915085601f830112611e2b57600080fd5b815181811115611e3d57611e3d611dd7565b8060051b604051601f19603f83011681018181108582111715611e6257611e62611dd7565b604052918252848201925083810185019188831115611e8057600080fd5b938501935b82851015611e9e57845184529385019392850192611e85565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561180857611808611eaa565b600060208284031215611ee557600080fd5b815161030e81611c7c565b600060208284031215611f0257600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03929092168252602082015260400190565b600060208284031215611f4a57600080fd5b8151801515811461030e57600080fd5b8181038181111561180857611808611eaa565b604080825283519082018190526000906020906060840190828701845b82811015611fa657815184529284019290840190600101611f8a565b50505092019290925292915050565b600080600060608486031215611fca57600080fd5b8351925060208401519150604084015190509250925092565b600081611ff257611ff2611eaa565b506000190190565b600080600080600060a0868803121561201257600080fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b60008261205757634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761180857611808611eaa565b60006001820161208557612085611eaa565b5060010190565b60005b838110156120a757818101518382015260200161208f565b50506000910152565b600082516120c281846020870161208c565b9190910192915050565b60208152600082518060208401526120eb81604085016020870161208c565b601f01601f1916919091016040019291505056fea2646970667358221220de44d2555dcbc0ec09bc01be911b73aa6d405d6f0a66d409866f7ca14ed4512f64736f6c63430008120033000000000000000000000000c6a15814fefaf471301163ae0a65cdac48bb2d4d000000000000000000000000998aa1d798a30ed6e864c503e006189e63979b3c", + "from": "0xcD9C63CFEE8ad52e6ff0B7F6Cb8726933D0FFaa2", + "to": null, + "nonce": 14 + }, + { + "operationName": "ServiceRegistry", + "address": "0x3C0Ac1a4F89d227DB52115828FAe7085f8686Dc0", + "data": "0x608060405234801561001057600080fd5b50604051610da1380380610da183398101604081905261002f916100a0565b62278d008111156100865760405162461bcd60e51b815260206004820152601660248201527f72656769737472792f696e76616c69642d64656c617900000000000000000000604482015260640160405180910390fd5b600455600380546001600160a01b031916331790556100b9565b6000602082840312156100b257600080fd5b5051919050565b610cd9806100c86000396000f3fe608060405234801561001057600080fd5b50600436106100a45760003560e01c80630851f3bd146100a95780630a5fe881146100d95780634125ff90146100ee5780634a56b027146101065780635b51406f1461011957806368e68f631461012c5780638da5cb5b1461014c578063aaae81b61461015f578063ad11480414610172578063c2527b321461017b578063ea903756146101a4578063f2fde38b146101b7575b600080fd5b6100bc6100b73660046109e1565b6101ca565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ec6100e7366004610a91565b610216565b005b6100f862278d0081565b6040519081526020016100d0565b6100f86101143660046109e1565b6103c7565b6100ec610127366004610ac6565b6103f7565b6100f861013a366004610a91565b60006020819052908152604090205481565b6003546100bc906001600160a01b031681565b6100ec61016d366004610a91565b61067b565b6100f860045481565b6100bc610189366004610a91565b6000908152600160205260409020546001600160a01b031690565b6100ec6101b2366004610a91565b610792565b6100ec6101c5366004610af2565b610878565b600060016000836040516020016101e19190610b14565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031692915050565b6003546001600160a01b031633146102495760405162461bcd60e51b815260040161024090610b43565b60405180910390fd5b602436811461026a5760405162461bcd60e51b815260040161024090610b70565b6000803660405161027c929190610ba2565b60408051918290039091206004546000828152602081905292909220549092501580156102a95750600081115b156102fe5760008281526020819052604090204290819055600080516020610c848339815191529083906102de908490610bc8565b6000366040516102f19493929190610be1565b60405180910390a16103c1565b6000828152602081905260409020546103178242610c1e565b116103345760405162461bcd60e51b815260040161024090610c31565b600080516020610c6483398151915282426000366040516103589493929190610be1565b60405180910390a162278d008411156103ac5760405162461bcd60e51b815260206004820152601660248201527572656769737472792f696e76616c69642d64656c617960501b6044820152606401610240565b60048490556000828152602081905260408120555b50505050565b6000816040516020016103da9190610b14565b604051602081830303815290604052805190602001209050919050565b6003546001600160a01b031633146104215760405162461bcd60e51b815260040161024090610b43565b60443681146104425760405162461bcd60e51b815260040161024090610b70565b60008036604051610454929190610ba2565b60408051918290039091206004546000828152602081905292909220549092501580156104815750600081115b156104d65760008281526020819052604090204290819055600080516020610c848339815191529083906104b6908490610bc8565b6000366040516104c99493929190610be1565b60405180910390a1610674565b6000828152602081905260409020546104ef8242610c1e565b1161050c5760405162461bcd60e51b815260040161024090610c31565b600080516020610c6483398151915282426000366040516105309493929190610be1565b60405180910390a160008581526002602052604090205460ff16156105a15760405162461bcd60e51b815260206004820152602160248201527f72656769737472792f736572766963652d6e616d652d757365642d6265666f726044820152606560f81b6064820152608401610240565b6000858152600160205260409020546001600160a01b0316156106025760405162461bcd60e51b815260206004820152601960248201527872656769737472792f736572766963652d6f7665727269646560381b6044820152606401610240565b60008581526001602090815260409182902080546001600160a01b0319166001600160a01b0388169081179091558251888152918201527f63edbf94cfa8eb1506648e2d92113b771f811bf4cdbf6f7f3a4c8c6078cfe2ab910160405180910390a16000828152602081905260408120555b5050505050565b6003546001600160a01b031633146106a55760405162461bcd60e51b815260040161024090610b43565b60243681146106c65760405162461bcd60e51b815260040161024090610b70565b6000828152600160205260409020546001600160a01b031661072a5760405162461bcd60e51b815260206004820152601f60248201527f72656769737472792f736572766963652d646f65732d6e6f742d6578697374006044820152606401610240565b600082815260016020818152604080842080546001600160a01b03191690556002825292839020805460ff191690921790915590518381527f43817158e31105419419d3e1024deed95f59ba49876e9891bcb00df762054cf491015b60405180910390a15050565b6003546001600160a01b031633146107bc5760405162461bcd60e51b815260040161024090610b43565b60243681146107dd5760405162461bcd60e51b815260040161024090610b70565b6000828152602081905260409020546108385760405162461bcd60e51b815260206004820181905260248201527f72656769737472792f657865637574696f6e2d6e6f742d7363686564756c65646044820152606401610240565b6000828152602081815260408083209290925590518381527fef2393afd41f32c607a123de95d703349edd33ea1d86af21535ea8040ec7d9849101610786565b6003546001600160a01b031633146108a25760405162461bcd60e51b815260040161024090610b43565b60243681146108c35760405162461bcd60e51b815260040161024090610b70565b600080366040516108d5929190610ba2565b60408051918290039091206004546000828152602081905292909220549092501580156109025750600081115b156109375760008281526020819052604090204290819055600080516020610c848339815191529083906102de908490610bc8565b6000828152602081905260409020546109508242610c1e565b1161096d5760405162461bcd60e51b815260040161024090610c31565b600080516020610c6483398151915282426000366040516109919493929190610be1565b60405180910390a1600380546001600160a01b0386166001600160a01b031990911617905560008281526020819052604081205550505050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156109f357600080fd5b81356001600160401b0380821115610a0a57600080fd5b818401915084601f830112610a1e57600080fd5b813581811115610a3057610a306109cb565b604051601f8201601f19908116603f01168101908382118183101715610a5857610a586109cb565b81604052828152876020848701011115610a7157600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208284031215610aa357600080fd5b5035919050565b80356001600160a01b0381168114610ac157600080fd5b919050565b60008060408385031215610ad957600080fd5b82359150610ae960208401610aaa565b90509250929050565b600060208284031215610b0457600080fd5b610b0d82610aaa565b9392505050565b6000825160005b81811015610b355760208186018101518583015201610b1b565b506000920191825250919050565b6020808252601390820152723932b3b4b9ba393c97b7b7363c96b7bbb732b960691b604082015260600190565b60208082526018908201527772656769737472792f696c6c6567616c2d70616464696e6760401b604082015260600190565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610bdb57610bdb610bb2565b92915050565b84815283602082015260606040820152816060820152818360808301376000818301608090810191909152601f909201601f191601019392505050565b81810381811115610bdb57610bdb610bb2565b6020808252601890820152771c9959da5cdd1c9e4bd9195b185e4b5d1bdbcb5cdb585b1b60421b60408201526060019056fe06f84d2b0960d69db49055d196f2a6420c16bc37a9818aad2672f4c645968c39f1415364471da738ead8058b0ce88208763abbb3e49efd60a4ba60b70147601aa2646970667358221220b2311199e71523f71d94f41d87acbeb1856bd4d0f9bcf11b7faa924b50d0a17c64736f6c634300081200330000000000000000000000000000000000000000000000000000000000000000", + "from": "0xcD9C63CFEE8ad52e6ff0B7F6Cb8726933D0FFaa2", + "to": null, + "nonce": 15 + }, + { + "operationName": "PoolInfoUtils", + "address": "0x1b0E872565aC48269305B11B96Ad481e264d507b", + "data": "0x608060405234801561001057600080fd5b50613536806100206000396000f3fe608060405234801561001057600080fd5b50600436106101075760003560e01c8063192d388e1461010c5780631aeaf3f8146101515780631d3d68b6146101735780631f2694e9146101ae57806343dfac7d146101cf5780636abccba1146101e25780636efeac98146101f5578063771d37de14610208578063790ba5fe1461021b578063932341ce1461025d57806393e61c101461027057806396a43dca146102835780639b7fe214146102b6578063ad685b3c146102c9578063b3f84727146102dc578063c367bc2f14610325578063d96f363814610338578063dbac17241461034b578063e368c16a1461035e578063e7e01bb114610371578063f5e7dba014610384575b600080fd5b61011f61011a366004613117565b610397565b604080519687526020870195909552938501929092526060840152608083015260a082015260c0015b60405180910390f35b61016461015f366004613143565b61043a565b6040516101489392919061317c565b610186610181366004613192565b61061f565b604080519586526020860194909452928401919091526060830152608082015260a001610148565b6101c16101bc366004613192565b61094b565b604051908152602001610148565b6101c16101dd3660046131af565b6109c1565b6101c16101f0366004613192565b610a5f565b6101c1610203366004613192565b610ae2565b6101c1610216366004613192565b610bbb565b61022e610229366004613143565b610dd1565b6040805196875260208701959095529385019290925215156060840152608083015260a082015260c001610148565b6101c161026b366004613192565b611009565b6101c161027e366004613192565b611078565b610296610291366004613192565b6110e4565b604080519485526020850193909352918301526060820152608001610148565b6101c16102c43660046131e4565b611367565b61011f6102d7366004613192565b611378565b6102ef6102ea366004613192565b611574565b6040805195865260208601949094526001600160a01b03909216928401929092526060830191909152608082015260a001610148565b6101c1610333366004613192565b611835565b6101c1610346366004613192565b61191c565b6101c16103593660046131af565b61198a565b6101c161036c3660046131e4565b611a1b565b6101c161037f366004613192565b611a26565b6101c1610392366004613192565b611ae3565b60008080808080876103a888611cc1565b604051632a0f78fb60e21b8152600481018a90529097506001600160a01b0382169063a83de3ec9060240160a060405180830381865afa1580156103f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041491906131fd565b909950919750919550935061042d90508585888a611d2c565b9150509295509295509295565b600080600080859050600080826001600160a01b031663063d829f6040518163ffffffff1660e01b81526004016040805180830381865afa158015610483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a7919061323d565b915091506000836001600160a01b031662cdcefb6040518163ffffffff1660e01b81526004016040805180830381865afa1580156104e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050d919061323d565b5090506000732f92ac7c2d18be332eb99e37368a62aedda470966378792ff18585856040518463ffffffff1660e01b815260040161054d9392919061317c565b602060405180830381865af415801561056a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058e9190613261565b90506000856001600160a01b031663ca103d158b6040518263ffffffff1660e01b81526004016105be919061327a565b606060405180830381865afa1580156105db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ff919061328e565b909950975090506106108183611d45565b98505050505050509250925092565b6000806000806000808690506000816001600160a01b0316634d9661986040518163ffffffff1660e01b8152600401608060405180830381865afa15801561066b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068f91906132bc565b50509150506000826001600160a01b0316633fa8fdbb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f89190613261565b90506000836001600160a01b0316637b3f86556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561073a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075e9190613261565b846001600160a01b031663bad346206040518163ffffffff1660e01b8152600401602060405180830381865afa15801561079c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c091906132f2565b6001600160a01b03166370a082318c6040518263ffffffff1660e01b81526004016107eb919061327a565b602060405180830381865afa158015610808573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082c9190613261565b6108369190613325565b90506000806000866001600160a01b0316635a3b44776040518163ffffffff1660e01b8152600401608060405180830381865afa15801561087b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089f91906132bc565b5091945092509050816108b2848761333c565b6108bc919061333c565b6108c6858861333c565b106108f9578183866108d8878a61333c565b6108e2919061334f565b6108ec919061334f565b6108f6919061334f565b9b505b6109068686858588611d7b565b9a5081995061091481611df9565b985061092c6203f480610927834261334f565b611e83565b610939906203f48061334f565b97505050505050505091939590929450565b600080826001600160a01b031662cdcefb6040518163ffffffff1660e01b81526004016040805180830381865afa15801561098a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ae919061323d565b5090506109ba81611e9a565b9392505050565b604051632a0f78fb60e21b81526004810182905260009084908290819081906001600160a01b0385169063a83de3ec9060240160a060405180830381865afa158015610a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3591906131fd565b5093505092509250610a538383838a85610a4e8c611cc1565b611ebf565b98975050505050505050565b60405163329d1a8b60e01b815260016004820152600090829082906001600160a01b0383169063329d1a8b90602401602060405180830381865afa158015610aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acf9190613261565b9050610ada81611cc1565b949350505050565b6000808290506000816001600160a01b0316634d9661986040518163ffffffff1660e01b8152600401608060405180830381865afa158015610b28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4c91906132bc565b505060405163329d1a8b60e01b815260048101839052919250506001600160a01b0383169063329d1a8b90602401602060405180830381865afa158015610b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ada9190613261565b6000808290506000816001600160a01b0316633884cd886040518163ffffffff1660e01b8152600401606060405180830381865afa158015610c01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c259190613362565b92505050816001600160a01b031663bcb630d76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b9190613261565b610c95908261333c565b905080600003610d125760405163329d1a8b60e01b815260016004820152610ada906001600160a01b0384169063329d1a8b906024015b602060405180830381865afa158015610ce9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0d9190613261565b611cc1565b6000826001600160a01b0316634d9661986040518163ffffffff1660e01b8152600401608060405180830381865afa158015610d52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7691906132bc565b5050509050610dc8836001600160a01b031663329d1a8b610daa8486670de0b6b3a7640000610da59190613325565b611ef2565b6040518263ffffffff1660e01b8152600401610ccc91815260200190565b95945050505050565b60008060008060008060008890506000816001600160a01b0316630448e51a8a6040518263ffffffff1660e01b8152600401610e0d919061327a565b61014060405180830381865afa158015610e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4f9190613399565b50949f50919950919650508c159450610ffd93505050505760405163035d5e7f60e31b81526001600160a01b03808c1660048301528a1660248201523090631aeaf3f890604401606060405180830381865afa158015610eb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed7919061328e565b5080985081975050506000826001600160a01b0316634d9661986040518163ffffffff1660e01b8152600401608060405180830381865afa158015610f20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4491906132bc565b50505090506000610f7c846001600160a01b031663329d1a8b846040518263ffffffff1660e01b8152600401610ccc91815260200190565b9050610feb888a83876001600160a01b031663b1dd61b66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190613446565b611f1c565b9650610ff883868c611f64565b955050505b50509295509295509295565b600080826001600160a01b031662cdcefb6040518163ffffffff1660e01b81526004016040805180830381865afa158015611048573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106c919061323d565b5090506109ba81612002565b6000816001600160a01b0316633884cd886040518163ffffffff1660e01b8152600401606060405180830381865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc9190613362565b509392505050565b60008060008060008590506000816001600160a01b0316634d9661986040518163ffffffff1660e01b8152600401608060405180830381865afa15801561112f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115391906132bc565b50505090506000826001600160a01b031663307ee3b56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bc9190613261565b90506000836001600160a01b0316633884cd886040518163ffffffff1660e01b8152600401606060405180830381865afa1580156111fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112229190613362565b925050508260001461123b576112388382612028565b97505b60405163329d1a8b60e01b81526004810184905260009061126f906001600160a01b0387169063329d1a8b90602401610ccc565b905061127c84848361204e565b9750846001600160a01b0316633a0c8f076040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e09190613261565b9650600080866001600160a01b031663e512c0616040518163ffffffff1660e01b8152600401608060405180830381865afa158015611323573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134791906132bc565b505091509150611357828261207d565b9750505050505050509193509193565b60006113728261209f565b92915050565b60008060008060008060008790506000816001600160a01b0316634d9661986040518163ffffffff1660e01b8152600401608060405180830381865afa1580156113c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ea91906132bc565b505060405163329d1a8b60e01b815260016004820152919250506001600160a01b0383169063329d1a8b90602401602060405180830381865afa158015611435573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114599190613261565b965061146487611cc1565b97506000826001600160a01b0316633884cd886040518163ffffffff1660e01b8152600401606060405180830381865afa1580156114a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ca9190613362565b5091505080965064173eb4c80a8710156114e657611cdc6114ef565b6114ef8761209f565b60405163329d1a8b60e01b8152600481018490529096506001600160a01b0384169063329d1a8b90602401602060405180830381865afa158015611537573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155b9190613261565b935061156684611cc1565b945050505091939550919395565b600080600080600080869050806001600160a01b0316633fa8fdbb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e29190613261565b9550806001600160a01b0316633884cd886040518163ffffffff1660e01b8152600401606060405180830381865afa158015611622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116469190613362565b90508096508195505050600080826001600160a01b031663063d829f6040518163ffffffff1660e01b81526004016040805180830381865afa158015611690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b4919061323d565b915091506000836001600160a01b031662cdcefb6040518163ffffffff1660e01b81526004016040805180830381865afa1580156116f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171a919061323d565b506040516378792ff160e01b8152909150732f92ac7c2d18be332eb99e37368a62aedda47096906378792ff1906117599086908690869060040161317c565b602060405180830381865af4158015611776573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179a9190613261565b9550732f92ac7c2d18be332eb99e37368a62aedda47096630cbcb4cd826117c1854261334f565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381865af4158015611802573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118269190613261565b94505050505091939590929450565b6000808290506000816001600160a01b0316634d9661986040518163ffffffff1660e01b8152600401608060405180830381865afa15801561187b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189f91906132bc565b505060405163329d1a8b60e01b8152600481018390529192506000916001600160a01b038516915063329d1a8b90602401602060405180830381865afa1580156118ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119119190613261565b9050610dc881611cc1565b60405163329d1a8b60e01b81526001600482015260009082906001600160a01b0382169063329d1a8b90602401602060405180830381865afa158015611966573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ba9190613261565b604051632a0f78fb60e21b81526004810182905260009084908290819081906001600160a01b0385169063a83de3ec9060240160a060405180830381865afa1580156119da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fe91906131fd565b5093505092509250610a538284838a611a168b611cc1565b612161565b600061137282611cc1565b6000808290506000816001600160a01b0316633a0c8f076040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a909190613261565b6040516376fb7efb60e11b815260048101829052909150732f92ac7c2d18be332eb99e37368a62aedda470969063edf6fdf690602401602060405180830381865af4158015610b97573d6000803e3d6000fd5b600080829050600080826001600160a01b0316635a3b44776040518163ffffffff1660e01b8152600401608060405180830381865afa158015611b2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4e91906132bc565b50509150915060008183611b62919061333c565b90506000846001600160a01b0316637b3f86556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ba4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc89190613261565b856001600160a01b031663bad346206040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2a91906132f2565b6001600160a01b03166370a08231896040518263ffffffff1660e01b8152600401611c55919061327a565b602060405180830381865afa158015611c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c969190613261565b611ca09190613325565b905081811115611cb757611cb4828261334f565b95505b5050505050919050565b600080611cd08361103c613469565b9050610c9f19811280611ce4575061103c81135b15611d0257604051637edf443b60e11b815260040160405180910390fd5b6109ba611d27611d1183612186565b611d22670df27a2cdf448000612216565b6122fa565b6123bc565b6000610dc8858585670de0b6b3a7640000866001612453565b6000670de0b6b3a7640000600181611d5d8587613325565b611d67919061333c565b611d71919061334f565b6109ba91906134a6565b600080611d88848661333c565b905080831115611def5782611da5670dcef33a6f838000896124be565b611daf919061333c565b9150611dd28282611dc8670de0b6b3e2feca008a6124be565b610927919061333c565b611ddc908361334f565b9150611dec82610927838661334f565b91505b5095945050505050565b60008115611e7e576000611e0d834261334f565b90506000611e1d610e10836134a6565b676765c793fa10079d601b1b901c90506000611e5c6b0331adfc6b81cf95c39de3b1603c611e4d610e10876134ba565b611e5791906134a6565b6124de565b9050610dc8611e6b8383612556565b611e7990633b9aca00613325565b61256f565b919050565b600081831115611e9357816109ba565b5090919050565b6000611372611eb2836802d1a51c7e00500000611ef2565b6601c6bf5263400061258e565b6000611ed086888787866000612453565b905084811115611edd5750835b82811115611ee85750815b9695505050505050565b600081611f006002826134a6565b611f12670de0b6b3a764000086613325565b611d71919061333c565b600060ff8216611f3a5784611f3185856124be565b10159050610ada565b670de0b6b3a7640000611f4d81866134a6565b611f579190613325565b935084611f3185856124be565b600080611f95611f74844261334f565b611f8690670de0b6b3a7640000613325565b68c328093e61ee400000611ef2565b9050611fa981670de0b6b3a7640000611e83565b611fb3908261334f565b90506000611fca670de0b6b3a763ffff19836122fa565b90506000611fd8878761258e565b9050611fec81611fe7846123bc565b6124be565b611ff7906020613325565b979650505050505050565b600061137261201a836813c9647e25a9940000611ef2565b67016345785d8a0000611e83565b60008115611372576109ba61204084610da58561259e565b678ac7230489e80000611ef2565b60008061205b85846125b2565b90508060000361207357670de0b6b3a7640000610dc8565b610dc88482611ef2565b60008160000361209557670de0b6b3a76400006109ba565b6109ba8383611ef2565b600064173eb4c80a8210806120bf57506b033f4a75fb6ff29166751a4b82115b156120dd57604051635665ba4560e11b815260040160405180910390fd5b60006121016120eb84612216565b6120fc670df27a2cdf448000612216565b6125cd565b9050600061210e82612693565b905060008212801561213057506706f05b59d3b2000061212e8383613469565b135b1561214b57610ada670de0b6b3a7640000820561103d613469565b610ada670de0b6b3a7640000820561103c613469565b600061217286868686866000612705565b905085811115610dc8575093949350505050565b60007809392ee8e921d5d073aff322e62439fcf32d7f344649470f8f198212156121cb5760405163e608e18b60e01b8152600481018390526024015b60405180910390fd5b7809392ee8e921d5d073aff322e62439fcf32d7f344649470f90821315612208576040516371f72a3160e01b8152600481018390526024016121c2565b50670de0b6b3a76400000290565b600080821361223b5760405163309fa7dd60e11b8152600481018390526024016121c2565b6000670de0b6b3a764000083126122545750600161226d565b6000199050826a0c097ce7bc90715b34b9f160241b0492505b6000612282670de0b6b3a7640000850561276f565b670de0b6b3a764000081029350905083811d670de0b6b3a763ffff1981016122ac57505002919050565b6706f05b59d3b200005b60008113156122f157670de0b6b3a7640000828002059150671bc16d674ec8000082126122e9579384019360019190911d905b60011d6122b6565b50505002919050565b6000600160ff1b8314806123115750600160ff1b82145b1561232f57604051630d01a11b60e21b815260040160405180910390fd5b600080600085126123405784612345565b846000035b915060008412612355578361235a565b836000035b90506000612368838361284d565b90506001600160ff1b038111156123955760405163bf79e8d960e01b8152600481018290526024016121c2565b6000198087139086138082186001146123ae5782610a53565b505060000395945050505050565b60008082121561240f5768033dd1780914b97114198212156123e057506000919050565b6123ec826000036123bc565b6a0c097ce7bc90715b34b9f160241b8161240857612408613490565b0592915050565b680a688906bd8b000000821261243b5760405163e69458f960e01b8152600481018390526024016121c2565b670de0b6b3a7640000604083901b046109ba81612913565b600084158015612461575086155b1561246d575082611ee8565b8560000361247c575082611ee8565b611ff76124898489613325565b61249b670de0b6b3a764000088613325565b6124a5919061333c565b856124b8670de0b6b3a76400008a613325565b85612fa5565b6000670de0b6b3a76400006124d46002826134a6565b611f128486613325565b60006124eb6002836134ba565b60000361250357676765c793fa10079d601b1b612505565b825b90506125126002836134a6565b91505b8115611372576125258384612556565b92506125326002836134ba565b15612544576125418184612556565b90505b61254f6002836134a6565b9150612515565b6000676765c793fa10079d601b1b6124d46002826134a6565b6000633b9aca0061258483631dcd650061333c565b61137291906134a6565b600081831015611e9357816109ba565b6000611372670de0b6b3a764000083613325565b600081158015906125c257508215155b6120955760006109ba565b6000600160ff1b8314806125e45750600160ff1b82145b156126025760405163b3c754a360e01b815260040160405180910390fd5b600080600085126126135784612618565b846000035b915060008412612628578361262d565b836000035b9050600061264483670de0b6b3a764000084612ff6565b90506001600160ff1b0381111561267157604051637cb4bef560e01b8152600481018290526024016121c2565b60001980871390861380821860011461268a5782610a53565b610a53836134e4565b6000670afdc366fbc00000600160ff1b038213156126c757604051635399a28560e11b8152600481018390526024016121c2565b670de0b6b3a7640000820760008190036126e3578291506126ff565b808303915060008313156126ff57670de0b6b3a7640000820191505b50919050565b600084158015612713575086155b15612729576127228484611ef2565b9050611ee8565b8560000361273b576127228484611ef2565b611ff76127488489613325565b61275a670de0b6b3a764000088613325565b612764919061333c565b856124b8868a613325565b6000600160801b821061278f57608091821c9161278c908261333c565b90505b600160401b82106127ad57604091821c916127aa908261333c565b90505b600160201b82106127cb57602091821c916127c8908261333c565b90505b6201000082106127e857601091821c916127e5908261333c565b90505b610100821061280457600891821c91612801908261333c565b90505b6010821061281f57600491821c9161281c908261333c565b90505b6004821061283a57600291821c91612837908261333c565b90505b60028210611e7e5761137260018261333c565b60008080600019848609848602925082811083820303915050670de0b6b3a764000081106128915760405163698d9a0160e11b8152600481018290526024016121c2565b600080670de0b6b3a764000086880991506706f05b59d3b1ffff82119050826000036128cf5780670de0b6b3a7640000850401945050505050611372565b620400008285030493909111909103600160ee1b02919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690201905092915050565b600160bf1b6001603f1b8216156129335768016a09e667f3bcc9090260401c5b6001603e1b82161561294e576801306fe0a31b7152df0260401c5b6001603d1b821615612969576801172b83c7d517adce0260401c5b6001603c1b8216156129845768010b5586cf9890f62a0260401c5b6001603b1b82161561299f576801059b0d31585743ae0260401c5b6001603a1b8216156129ba57680102c9a3e778060ee70260401c5b600160391b8216156129d55768010163da9fb33356d80260401c5b600160381b8216156129f057680100b1afa5abcbed610260401c5b600160371b821615612a0b5768010058c86da1c09ea20260401c5b600160361b821615612a26576801002c605e2e8cec500260401c5b600160351b821615612a4157680100162f3904051fa10260401c5b600160341b821615612a5c576801000b175effdc76ba0260401c5b600160331b821615612a7757680100058ba01fb9f96d0260401c5b600160321b821615612a925768010002c5cc37da94920260401c5b600160311b821615612aad576801000162e525ee05470260401c5b600160301b821615612ac85768010000b17255775c040260401c5b6001602f1b821615612ae3576801000058b91b5bc9ae0260401c5b6001602e1b821615612afe57680100002c5c89d5ec6d0260401c5b6001602d1b821615612b195768010000162e43f4f8310260401c5b6001602c1b821615612b3457680100000b1721bcfc9a0260401c5b6001602b1b821615612b4f5768010000058b90cf1e6e0260401c5b6001602a1b821615612b6a576801000002c5c863b73f0260401c5b600160291b821615612b8557680100000162e430e5a20260401c5b600160281b821615612ba0576801000000b1721835510260401c5b600160271b821615612bbb57680100000058b90c0b490260401c5b600160261b821615612bd65768010000002c5c8601cc0260401c5b600160251b821615612bf1576801000000162e42fff00260401c5b600160241b821615612c0c5768010000000b17217fbb0260401c5b600160231b821615612c27576801000000058b90bfce0260401c5b600160221b821615612c4257680100000002c5c85fe30260401c5b600160211b821615612c5d5768010000000162e42ff10260401c5b600160201b821615612c7857680100000000b17217f80260401c5b6380000000821615612c935768010000000058b90bfc0260401c5b6340000000821615612cae576801000000002c5c85fe0260401c5b6320000000821615612cc957680100000000162e42ff0260401c5b6310000000821615612ce4576801000000000b17217f0260401c5b6308000000821615612cff57680100000000058b90c00260401c5b6304000000821615612d1a5768010000000002c5c8600260401c5b6302000000821615612d35576801000000000162e4300260401c5b6301000000821615612d505768010000000000b172180260401c5b62800000821615612d6a576801000000000058b90c0260401c5b62400000821615612d8457680100000000002c5c860260401c5b62200000821615612d9e5768010000000000162e430260401c5b62100000821615612db857680100000000000b17210260401c5b62080000821615612dd25768010000000000058b910260401c5b62040000821615612dec576801000000000002c5c80260401c5b62020000821615612e0657680100000000000162e40260401c5b62010000821615612e1f5761b172600160401b010260401c5b618000821615612e37576158b9600160401b010260401c5b614000821615612e4f57612c5d600160401b010260401c5b612000821615612e675761162e600160401b010260401c5b611000821615612e7f57610b17600160401b010260401c5b610800821615612e975761058c600160401b010260401c5b610400821615612eaf576102c6600160401b010260401c5b610200821615612ec757610163600160401b010260401c5b610100821615612ede5760b1600160401b010260401c5b6080821615612ef4576059600160401b010260401c5b6040821615612f0a57602c600160401b010260401c5b6020821615612f20576016600160401b010260401c5b6010821615612f3657600b600160401b010260401c5b6008821615612f4c576006600160401b010260401c5b6004821615612f62576003600160401b010260401c5b6002821615612f78576001600160401b010260401c5b6001821615612f8e576001600160401b010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b600080612fb38686866130c3565b90506001836002811115612fc957612fc96134ce565b148015612fe6575060008480612fe157612fe1613490565b868809115b15610dc857611ee860018261333c565b60008080600019858709858702925082811083820303915050806000036130305783828161302657613026613490565b04925050506109ba565b83811061305a57604051631dcf306360e21b815260048101829052602481018590526044016121c2565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60008080600019858709858702925082811083820303915050806000036130f35783828161302657613026613490565b80841161305a57600080fd5b6001600160a01b038116811461311457600080fd5b50565b6000806040838503121561312a57600080fd5b8235613135816130ff565b946020939093013593505050565b6000806040838503121561315657600080fd5b8235613161816130ff565b91506020830135613171816130ff565b809150509250929050565b9283526020830191909152604082015260600190565b6000602082840312156131a457600080fd5b81356109ba816130ff565b6000806000606084860312156131c457600080fd5b83356131cf816130ff565b95602085013595506040909401359392505050565b6000602082840312156131f657600080fd5b5035919050565b600080600080600060a0868803121561321557600080fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b6000806040838503121561325057600080fd5b505080516020909101519092909150565b60006020828403121561327357600080fd5b5051919050565b6001600160a01b0391909116815260200190565b6000806000606084860312156132a357600080fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156132d257600080fd5b505082516020840151604085015160609095015191969095509092509050565b60006020828403121561330457600080fd5b81516109ba816130ff565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176113725761137261330f565b808201808211156113725761137261330f565b818103818111156113725761137261330f565b60008060006060848603121561337757600080fd5b8351613382816130ff565b602085015160409095015190969495509392505050565b6000806000806000806000806000806101408b8d0312156133b957600080fd5b8a516133c4816130ff565b809a505060208b0151985060408b0151975060608b0151965060808b0151955060a08b0151945060c08b01516133f9816130ff565b60e08c015190945061340a816130ff565b6101008c015190935061341c816130ff565b6101208c0151909250801515811461343357600080fd5b809150509295989b9194979a5092959850565b60006020828403121561345857600080fd5b815160ff811681146109ba57600080fd5b81810360008312801583831316838312821617156134895761348961330f565b5092915050565b634e487b7160e01b600052601260045260246000fd5b6000826134b5576134b5613490565b500490565b6000826134c9576134c9613490565b500690565b634e487b7160e01b600052602160045260246000fd5b6000600160ff1b82016134f9576134f961330f565b506000039056fea2646970667358221220b89b21b655c6e0329e56075e7877e3f5527f58386c12c1e27df9da4510247e1064736f6c63430008120033", + "from": "0xcD9C63CFEE8ad52e6ff0B7F6Cb8726933D0FFaa2", + "to": null, + "nonce": 17 + }, + { + "operationName": "AjnaRewardClaimer", + "address": "0xf0f5b689d27365C18fbdFB9bc499708a19b56Fb5", + "data": "0x61012060405234801561001157600080fd5b50604051610c9b380380610c9b833981016040819052610030916100f4565b6001600160a01b0383811660805282811660c0523060e052604051630851f3bd60e01b815260206004820152600960248201526811141357d1d550549160ba1b604482015290821690630851f3bd90606401602060405180830381865afa15801561009f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100c39190610141565b6001600160a01b031660a0525050336101005250610165565b6001600160a01b03811681146100f157600080fd5b50565b60008060006060848603121561010957600080fd5b8351610114816100dc565b6020850151909350610125816100dc565b6040850151909250610136816100dc565b809150509250925092565b60006020828403121561015357600080fd5b815161015e816100dc565b9392505050565b60805160a05160c05160e05161010051610ac96101d26000396000818161012e01526106d701526000818160e0015281816104530152610742015260008181610155015261041c01526000818161010701526105eb01526000818161017c01526102080152610ac96000f3fe608060405234801561001057600080fd5b50600436106100785760003560e01c8063501568fc1461007d5780636641a79a146100a65780636e2e8cb5146100c65780637104ddb2146100db5780637ceab3b1146101025780638da5cb5b14610129578063ab01556114610150578063defe205314610177575b600080fd5b600054610090906001600160a01b031681565b60405161009d91906107ae565b60405180910390f35b6100b96100b43660046107d8565b61019e565b60405161009d91906108db565b6100d96100d4366004610952565b6105d4565b005b6100907f000000000000000000000000000000000000000000000000000000000000000081565b6100907f000000000000000000000000000000000000000000000000000000000000000081565b6100907f000000000000000000000000000000000000000000000000000000000000000081565b6100907f000000000000000000000000000000000000000000000000000000000000000081565b6100907f000000000000000000000000000000000000000000000000000000000000000081565b60606101a8610737565b8151806001600160401b038111156101c2576101c26107c2565b6040519080825280602002602001820160405280156101f557816020015b60608152602001906001900390816101e05790505b50915060005b8181101561058e576000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630981348287858151811061024757610247610976565b60200260200101516040518263ffffffff1660e01b815260040161026d91815260200190565b606060405180830381865afa15801561028a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ae919061098c565b50915091506000826001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031791906109cf565b905061032281610782565b6000632cb62de760e01b8389878151811061033f5761033f610976565b60200260200101516040516024016103589291906109ec565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092526000549151631cff79cd60e01b81529092506001600160a01b0380871692631cff79cd926103c19291909116908590600401610a05565b6020604051808303816000875af11580156103e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104049190610a31565b506040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90849083906370a082319061047b907f0000000000000000000000000000000000000000000000000000000000000000906004016107ae565b602060405180830381865afa158015610498573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bc9190610a31565b6040518363ffffffff1660e01b81526004016104d99291906109ec565b6020604051808303816000875af11580156104f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051c9190610a4a565b5087858151811061052f5761052f610976565b6020026020010151836001600160a01b0316856001600160a01b03167f0d0e78b90d2f52ceca151e62d0996d05eec90646ebaa23411c6ce3b5b4082b6d60405160405180910390a450505050808061058690610a6c565b9150506101fb565b5060405170105a9b9854995dd85c9910db185a5b5959607a1b907f463f98b00a27e540083d903c04918e4d1121820e305403dd278497b3dbf172a390600090a250919050565b604051633af32abf60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633af32abf906106209084906004016107ae565b602060405180830381865afa15801561063d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106619190610a4a565b15610695576000546040516317d0749960e01b815261068c916001600160a01b0316906004016107ae565b60405180910390fd5b6000546001600160a01b0316156106cc576000546040516314f7f77760e31b815261068c916001600160a01b0316906004016107ae565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610715576040516330cd747160e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107805760405163d622e2ff60e01b815260040160405180910390fd5b565b336001600160a01b038216146107ab5760405163044e150f60e01b815260040160405180910390fd5b50565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156107eb57600080fd5b82356001600160401b038082111561080257600080fd5b818501915085601f83011261081657600080fd5b813581811115610828576108286107c2565b8060051b604051601f19603f8301168101818110858211171561084d5761084d6107c2565b60405291825284820192508381018501918883111561086b57600080fd5b938501935b8285101561088957843584529385019392850192610870565b98975050505050505050565b6000815180845260005b818110156108bb5760208185018101518683018201520161089f565b506000602082860101526020601f19601f83011685010191505092915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561093057603f1988860301845261091e858351610895565b94509285019290850190600101610902565b5092979650505050505050565b6001600160a01b03811681146107ab57600080fd5b60006020828403121561096457600080fd5b813561096f8161093d565b9392505050565b634e487b7160e01b600052603260045260246000fd5b6000806000606084860312156109a157600080fd5b83516109ac8161093d565b60208501519093506109bd8161093d565b80925050604084015190509250925092565b6000602082840312156109e157600080fd5b815161096f8161093d565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0383168152604060208201819052600090610a2990830184610895565b949350505050565b600060208284031215610a4357600080fd5b5051919050565b600060208284031215610a5c57600080fd5b8151801515811461096f57600080fd5b600060018201610a8c57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220fbc20496655e25acf5ddc4474efc6c1568c8bb66f0d28c3d28454ad65694acd564736f6c63430008120033000000000000000000000000280c53b52a4ecbb0a2f2f5d0a10b354600c71602000000000000000000000000c6a15814fefaf471301163ae0a65cdac48bb2d4d0000000000000000000000003c0ac1a4f89d227db52115828fae7085f8686dc0", + "from": "0xcD9C63CFEE8ad52e6ff0B7F6Cb8726933D0FFaa2", + "to": null, + "nonce": 18 + }, + { + "operationName": "AjnaProxyActions", + "address": "0x662ED0EFFC9E3BdF50D9118ffaC2197590CA169E", + "data": "0x6101406040523480156200001257600080fd5b50604051620052253803806200522583398101604081905262000035916200007b565b6001600160a01b0393841660805291831660a052821660c0521660e05230610120523361010052620000e3565b6001600160a01b03811681146200007857600080fd5b50565b600080600080608085870312156200009257600080fd5b84516200009f8162000062565b6020860151909450620000b28162000062565b6040860151909350620000c58162000062565b6060860151909250620000d88162000062565b939692955090935050565b60805160a05160c05160e0516101005161012051614fbe62000267600039600081816103d60152818161071d0152818161081f01528181610c7701528181611223015281816113150152818161184a0152818161194101528181611a9101528181611b9401528181611cb101528181611d9e01528181611eb101528181611fbf0152818161238101528181612405015281816124f701528181612963015281816134950152818161359701528181613a6201528181613b3601528181613c1901528181613ca90152818161419001528181614214015281816144620152818161457401526146040152600081816105ff01526130200152600081816106f9015281816125eb015281816126810152818161434001526143d301526000818161055801528181613d8401528181613dd101528181613ed50152613f0e015260008181610524015261140b0152600081816104bd0152818161159c0152818161167c015281816121d801528181612b1901528181612d980152612f0f0152614fbe6000f3fe6080604052600436106101ec5760003560e01c80630ce7cf7d146101f15780630e46f6301461020657806312fdfd5b1461022657806313bf769d1461023957806315fc10d61461025f5780631a74856b14610272578063211664761461028557806329d53ce2146102b25780632bceabbd146102d25780632cb62de7146102e557806334eea00a14610305578063350c35e9146103255780634858c67414610345578063543aab3114610365578063557d061614610378578063640106e71461038b578063689363ce1461039e5780636cee94df146103b15780637104ddb2146103c4578063791b98bc146103f857806379e20bdc146104185780638267d2e71461042b57806385f36d841461044b578063876467f81461046b5780638c302f081461048b578063907f2579146104ab5780639d9d0bc9146104df578063a967ee2c146104ff578063ab01556114610512578063ad5c464814610546578063ae7eabea1461057a578063b4b864ba1461059a578063bff79f82146105ba578063c0c53b8b146105cd578063d5f39488146105ed578063d9d0373b14610621578063de3a5a0b14610634578063ded1d29a14610654578063defe205314610674578063f21ead2114610694578063f363c436146106b4578063f3f59216146106d4578063fe3348f9146106e7575b600080fd5b6102046101ff366004614941565b61071b565b005b34801561021257600080fd5b5061020461022136600461497c565b610934565b61020461023436600461497c565b610a88565b61024c61024736600461497c565b610c52565b6040519081526020015b60405180910390f35b61020461026d36600461497c565b610d96565b61020461028036600461497c565b610e9a565b34801561029157600080fd5b506002546102a5906001600160a01b031681565b60405161025691906149b1565b3480156102be57600080fd5b506102046102cd36600461497c565b611061565b6102046102e036600461497c565b61112c565b3480156102f157600080fd5b506102046103003660046149c5565b6111b9565b34801561031157600080fd5b5061024c6103203660046149c5565b6114ed565b34801561033157600080fd5b506102046103403660046149c5565b611612565b34801561035157600080fd5b5061020461036036600461497c565b6117f0565b610204610373366004614941565b611848565b61020461038636600461497c565b611a54565b6102046103993660046149f1565b611a8f565b6102046103ac366004614941565b611caf565b6102046103bf3660046149f1565b611eaf565b3480156103d057600080fd5b506102a57f000000000000000000000000000000000000000000000000000000000000000081565b34801561040457600080fd5b506000546102a5906001600160a01b031681565b6102046104263660046149c5565b6120dc565b34801561043757600080fd5b50610204610446366004614941565b61232d565b34801561045757600080fd5b50610204610466366004614a43565b61237d565b34801561047757600080fd5b506102046104863660046149c5565b6126bb565b34801561049757600080fd5b506102046104a636600461497c565b6126f9565b3480156104b757600080fd5b506102a57f000000000000000000000000000000000000000000000000000000000000000081565b3480156104eb57600080fd5b5061024c6104fa3660046149c5565b612949565b61020461050d366004614a8d565b612a48565b34801561051e57600080fd5b506102a57f000000000000000000000000000000000000000000000000000000000000000081565b34801561055257600080fd5b506102a57f000000000000000000000000000000000000000000000000000000000000000081565b34801561058657600080fd5b5061024c610595366004614ab1565b612ef6565b3480156105a657600080fd5b506102046105b536600461497c565b612f88565b6102046105c8366004614941565b612fc7565b3480156105d957600080fd5b506102046105e8366004614aca565b613015565b3480156105f957600080fd5b506102a57f000000000000000000000000000000000000000000000000000000000000000081565b61020461062f366004614941565b613141565b34801561064057600080fd5b5061020461064f36600461497c565b613246565b34801561066057600080fd5b5061020461066f36600461497c565b613283565b34801561068057600080fd5b506001546102a5906001600160a01b031681565b3480156106a057600080fd5b506102046106af36600461497c565b6132d8565b3480156106c057600080fd5b5061024c6106cf3660046149c5565b613311565b6102046106e2366004614941565b613352565b3480156106f357600080fd5b506102a57f000000000000000000000000000000000000000000000000000000000000000081565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663defe20536040518163ffffffff1660e01b8152600401602060405180830381865afa158015610779573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079d9190614b15565b6001600160a01b0316632e17de78826040518263ffffffff1660e01b81526004016107ca91815260200190565b600060405180830381600087803b1580156107e457600080fd5b505af11580156107f8573d6000803e3d6000fd5b5050505061080782828661341f565b610812848484613680565b61081d82828661394a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663defe20536040518163ffffffff1660e01b8152600401602060405180830381865afa15801561087b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089f9190614b15565b6001600160a01b031663a694fc3a826040518263ffffffff1660e01b81526004016108cc91815260200190565b600060405180830381600087803b1580156108e657600080fd5b505af11580156108fa573d6000803e3d6000fd5b505060405173105a9b9855da5d1a191c985dd45d5bdd1953999d60621b9250600080516020614f698339815191529150600090a250505050565b6000836001600160a01b031663bad346206040518163ffffffff1660e01b8152600401602060405180830381865afa158015610974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109989190614b15565b905060006109a583612ef6565b9050846001600160a01b031663cfa8ff0330876001600160a01b0316637b3f86556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a199190614b32565b610a239088614b61565b8460006040518563ffffffff1660e01b8152600401610a459493929190614b78565b600060405180830381600087803b158015610a5f57600080fd5b505af1158015610a73573d6000803e3d6000fd5b50505050610a818285613d82565b5050505050565b6000836001600160a01b031663bad346206040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aec9190614b15565b9050610af88184613ed3565b60405163095ea7b360e01b81526001600160a01b0382169063095ea7b390610b269087908790600401614b9e565b6020604051808303816000875af1158015610b45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b699190614bb7565b50836001600160a01b031663f78b0cce856001600160a01b0316637b3f86556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdb9190614b32565b610be59086614b61565b84610bf1426001614bd4565b6040518463ffffffff1660e01b8152600401610c0f93929190614be7565b6020604051808303816000875af1158015610c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a819190614b32565b6000610c5f848484613fab565b610c688461418b565b9050610c7582828661394a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663defe20536040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf79190614b15565b6001600160a01b031663a694fc3a826040518263ffffffff1660e01b8152600401610d2491815260200190565b600060405180830381600087803b158015610d3e57600080fd5b505af1158015610d52573d6000803e3d6000fd5b50506040517f416a6e61537570706c7951756f74654d696e744e6674416e645374616b6500009250600080516020614f698339815191529150600090a29392505050565b610da1838383610c52565b50306001600160a01b0316600080516020614f49833981519152846001600160a01b03166348d399e76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610df9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1d9190614b15565b856001600160a01b031663bad346206040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7f9190614b15565b604051610e8d929190614c14565b60405180910390a2505050565b6000836001600160a01b03166348d399e76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efe9190614b15565b9050610f0a8184613ed3565b6000610f1583612ef6565b60405163095ea7b360e01b81529091506001600160a01b0383169063095ea7b390610f469088908890600401614b9e565b6020604051808303816000875af1158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190614bb7565b50846001600160a01b031663cfa8ff0330600084896001600160a01b031663ec0bdcfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fff9190614b32565b611009908a614b61565b6040518563ffffffff1660e01b81526004016110289493929190614b78565b600060405180830381600087803b15801561104257600080fd5b505af1158015611056573d6000803e3d6000fd5b505050505050505050565b81156110715761107183836120dc565b8015611081576110818382611612565b6000821180156110915750600081115b156110c85760405170416a6e615265706179576974686472617760781b90600080516020614f6983398151915290600090a2505050565b81156110f85760405168416a6e61526570617960b81b90600080516020614f6983398151915290600090a2505050565b8015611127576040516b416a6e61576974686472617760a01b90600080516020614f6983398151915290600090a25b505050565b611137838383613fab565b6040516e416a6e61537570706c7951756f746560881b90600080516020614f6983398151915290600090a2306001600160a01b0316600080516020614f49833981519152846001600160a01b03166348d399e76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610df9573d6000803e3d6000fd5b6000826001600160a01b0316634ab1fc366040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121d9190614b32565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663defe20536040518163ffffffff1660e01b8152600401602060405180830381865afa15801561127f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a39190614b15565b6001600160a01b03166348a8870684846040518363ffffffff1660e01b81526004016112d0929190614c65565b602060405180830381865afa1580156112ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113119190614b32565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663defe20536040518163ffffffff1660e01b8152600401602060405180830381865afa158015611371573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113959190614b15565b6001600160a01b031663b087690c8484846040518463ffffffff1660e01b81526004016113c493929190614be7565b600060405180830381600087803b1580156113de57600080fd5b505af11580156113f2573d6000803e3d6000fd5b50506040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063a9059cbb9150339083906370a082319061144c9030906004016149b1565b602060405180830381865afa158015611469573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148d9190614b32565b6040518363ffffffff1660e01b81526004016114aa929190614b9e565b6020604051808303816000875af11580156114c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a819190614bb7565b6000806114f983612ef6565b90506000846001600160a01b031663a749f1a683306040518363ffffffff1660e01b815260040161152b929190614c73565b6040805180830381865afa158015611547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156b9190614c8a565b506040516343dfac7d60e01b81526001600160a01b03878116600483015260248201839052604482018590529192507f0000000000000000000000000000000000000000000000000000000000000000909116906343dfac7d90606401602060405180830381865afa1580156115e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116099190614b32565b95945050505050565b6000826001600160a01b03166348d399e76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116769190614b15565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad685b3c856040518263ffffffff1660e01b81526004016116c691906149b1565b60c060405180830381865afa1580156116e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117079190614cae565b95505050505050836001600160a01b031663a9ff9f77306000876001600160a01b031663ec0bdcfc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117829190614b32565b61178c9088614b61565b30866040518663ffffffff1660e01b81526004016117ae959493929190614cf8565b600060405180830381600087803b1580156117c857600080fd5b505af11580156117dc573d6000803e3d6000fd5b505050506117ea8284613d82565b50505050565b6117fd818484600161237d565b61180a8360001984613680565b6040517f416a6e61556e7374616b654e6674416e64576974686472617751756f7465000090600080516020614f6983398151915290600090a2505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663defe20536040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ca9190614b15565b6001600160a01b0316632e17de78826040518263ffffffff1660e01b81526004016118f791815260200190565b600060405180830381600087803b15801561191157600080fd5b505af1158015611925573d6000803e3d6000fd5b50505050611934848484613fab565b61193f82828661394a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663defe20536040518163ffffffff1660e01b8152600401602060405180830381865afa15801561199d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c19190614b15565b6001600160a01b031663a694fc3a826040518263ffffffff1660e01b81526004016119ee91815260200190565b600060405180830381600087803b158015611a0857600080fd5b505af1158015611a1c573d6000803e3d6000fd5b505060405171105a9b9854dd5c1c1b1e545d5bdd1953999d60721b9250600080516020614f698339815191529150600090a250505050565b611a5f838383613fab565b6040516e416a6e61537570706c7951756f746560881b90600080516020614f6983398151915290600090a2505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663defe20536040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b119190614b15565b6001600160a01b0316632e17de78826040518263ffffffff1660e01b8152600401611b3e91815260200190565b600060405180830381600087803b158015611b5857600080fd5b505af1158015611b6c573d6000803e3d6000fd5b50505050611b7c83838388614446565b611b87858584613fab565b611b9282828761394a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663defe20536040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c149190614b15565b6001600160a01b031663a694fc3a826040518263ffffffff1660e01b8152600401611c4191815260200190565b600060405180830381600087803b158015611c5b57600080fd5b505af1158015611c6f573d6000803e3d6000fd5b505060405178105a9b9854dd5c1c1b1e505b99135bdd99545d5bdd1953999d603a1b9250600080516020614f698339815191529150600090a25050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663defe20536040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d319190614b15565b6001600160a01b0316632e17de78826040518263ffffffff1660e01b8152600401611d5e91815260200190565b600060405180830381600087803b158015611d7857600080fd5b505af1158015611d8c573d6000803e3d6000fd5b50505050611d9c83838387614446565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663defe20536040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1e9190614b15565b6001600160a01b031663a694fc3a826040518263ffffffff1660e01b8152600401611e4b91815260200190565b600060405180830381600087803b158015611e6557600080fd5b505af1158015611e79573d6000803e3d6000fd5b50506040516f105a9b98535bdd99545d5bdd1953999d60821b9250600080516020614f698339815191529150600090a250505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663defe20536040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f319190614b15565b6001600160a01b0316632e17de78826040518263ffffffff1660e01b8152600401611f5e91815260200190565b600060405180830381600087803b158015611f7857600080fd5b505af1158015611f8c573d6000803e3d6000fd5b50505050611f9c83838388614446565b611fa782828761341f565b611fb2858584613680565b611fbd82828761394a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663defe20536040518163ffffffff1660e01b8152600401602060405180830381865afa15801561201b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203f9190614b15565b6001600160a01b031663a694fc3a826040518263ffffffff1660e01b815260040161206c91815260200190565b600060405180830381600087803b15801561208657600080fd5b505af115801561209a573d6000803e3d6000fd5b50506040517a105a9b9855da5d1a191c985dd05b99135bdd99545d5bdd1953999d602a1b9250600080516020614f698339815191529150600090a25050505050565b6000826001600160a01b031663bad346206040518163ffffffff1660e01b8152600401602060405180830381865afa15801561211c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121409190614b15565b905061214c8183613ed3565b60405163095ea7b360e01b81526001600160a01b0382169063095ea7b39061217a9086908690600401614b9e565b6020604051808303816000875af1158015612199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bd9190614bb7565b50604051632b5a16cf60e21b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ad685b3c9061220d9087906004016149b1565b60c060405180830381865afa15801561222a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224e9190614cae565b95505050505050836001600160a01b031663a9ff9f7730866001600160a01b0316637b3f86556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c79190614b32565b6122d19087614b61565b600030866040518663ffffffff1660e01b81526004016122f5959493929190614cf8565b600060405180830381600087803b15801561230f57600080fd5b505af1158015612323573d6000803e3d6000fd5b5050505050505050565b612338848484613680565b6123438483836146a2565b60405177416a6e615769746864726177416e644d6f766551756f746560401b90600080516020614f6983398151915290600090a250505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663211664766040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124019190614b15565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663defe20536040518163ffffffff1660e01b8152600401602060405180830381865afa158015612461573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124859190614b15565b6001600160a01b0316632e17de78866040518263ffffffff1660e01b81526004016124b291815260200190565b600060405180830381600087803b1580156124cc57600080fd5b505af11580156124e0573d6000803e3d6000fd5b505050506124ef83868661341f565b8115610a81577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612553573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125779190614b15565b6001600160a01b0316639dc29fac85876040518363ffffffff1660e01b81526004016125a4929190614b9e565b600060405180830381600087803b1580156125be57600080fd5b505af11580156125d2573d6000803e3d6000fd5b50506040516350be256160e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063a17c4ac291506126249030908590600401614d2b565b602060405180830381865afa158015612641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126659190614bb7565b15610a81576040516331568f3d60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c55a3cf4906110289084903090600090600401614d45565b6126c5828261474a565b60405173105a9b9854995b5bdd9950dbdb1b185d195c985b60621b90600080516020614f6983398151915290600090a25050565b600061270482612ef6565b90506000846001600160a01b031663bad346206040518163ffffffff1660e01b8152600401602060405180830381865afa158015612746573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276a9190614b15565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161279a91906149b1565b602060405180830381865afa1580156127b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127db9190614b32565b9050856001600160a01b031663b1f07247876001600160a01b0316637b3f86556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561282a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284e9190614b32565b6128589088614b61565b856040518363ffffffff1660e01b8152600401612876929190614c65565b60408051808303816000875af1158015612894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b89190614c8a565b5050600081836001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016128e991906149b1565b602060405180830381865afa158015612906573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061292a9190614b32565b6129349190614d69565b90506129408382613d82565b50505050505050565b60006129548361418b565b905061296182828561394a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663defe20536040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e39190614b15565b6001600160a01b031663a694fc3a826040518263ffffffff1660e01b8152600401612a1091815260200190565b600060405180830381600087803b158015612a2a57600080fd5b505af1158015612a3e573d6000803e3d6000fd5b5050505092915050565b6000816001600160a01b03166348d399e76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aac9190614b15565b90506000826001600160a01b031663bad346206040518163ffffffff1660e01b8152600401602060405180830381865afa158015612aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b129190614b15565b90506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631aeaf3f886306040518363ffffffff1660e01b8152600401612b65929190614d2b565b606060405180830381865afa158015612b82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ba69190614d7c565b50915091506000856001600160a01b0316637b3f86556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612beb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c0f9190614b32565b866001600160a01b0316637b3f86556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c719190614b32565b612c7b9085614daa565b612c86906001614bd4565b612c909190614b61565b90506000866001600160a01b0316637b3f86556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf69190614b32565b612d009083614daa565b9050612d0c8582613ed3565b60405163095ea7b360e01b81526001600160a01b0386169063095ea7b390612d3a908a908590600401614b9e565b6020604051808303816000875af1158015612d59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7d9190614bb7565b50604051632b5a16cf60e21b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ad685b3c90612dcd908b906004016149b1565b60c060405180830381865afa158015612dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0e9190614cae565b60405163a9ff9f7760e01b81529096506001600160a01b038e16955063a9ff9f779450612e4a9350309250889150899083908890600401614cf8565b600060405180830381600087803b158015612e6457600080fd5b505af1158015612e78573d6000803e3d6000fd5b505050506000886001600160a01b031663ec0bdcfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ebc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ee09190614b32565b612eea9086614daa565b90506110568882613d82565b6040516326dff88560e21b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690639b7fe21490602401602060405180830381865afa158015612f5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f829190614b32565b92915050565b612f95828483600161237d565b60405170416a6e614f70744f75745374616b696e6760781b90600080516020614f6983398151915290600090a2505050565b612fd2848483613fab565b612fdd8483836146a2565b60405175416a6e61537570706c79416e644d6f766551756f746560501b90600080516020614f6983398151915290600090a250505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146130855760405162461bcd60e51b815260206004820152601060248201526f30b83097b737ba16b232b83637bcb2b960811b60448201526064015b60405180910390fd5b6000546001600160a01b03161580156130a757506001546001600160a01b0316155b80156130bc57506002546001600160a01b0316155b6131025760405162461bcd60e51b8152602060048201526017602482015276185c184bd85b1c9958591e4b5a5b9a5d1a585b1a5e9959604a1b604482015260640161307c565b600080546001600160a01b039485166001600160a01b031991821617909155600180549385169382169390931790925560028054919093169116179055565b61314d84848484613352565b306001600160a01b0316600080516020614f49833981519152856001600160a01b03166348d399e76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c89190614b15565b866001600160a01b031663bad346206040518163ffffffff1660e01b8152600401602060405180830381865afa158015613206573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322a9190614b15565b604051613238929190614dcc565b60405180910390a250505050565b613251838383613680565b60405170416a6e61576974686472617751756f746560781b90600080516020614f6983398151915290600090a2505050565b613290818484600161237d565b61329a838361474a565b6040517f416a6e61556e7374616b654e6674416e64436c61696d436f6c6c61746572616c90600080516020614f6983398151915290600090a2505050565b6132e38383836146a2565b6040516c416a6e614d6f766551756f746560981b90600080516020614f6983398151915290600090a2505050565b600061331d8383612949565b6040519091506f416a6e614f7074496e5374616b696e6760801b90600080516020614f6983398151915290600090a292915050565b811561336357613363848383610e9a565b821561337457613374848483610934565b6000831180156133845750600082115b156133bb5760405170416a6e614465706f736974426f72726f7760781b90600080516020614f6983398151915290600090a26117ea565b82156133ec5760405169416a6e61426f72726f7760b01b90600080516020614f6983398151915290600090a26117ea565b81156117ea576040516a105a9b9851195c1bdcda5d60aa1b90600080516020614f6983398151915290600090a250505050565b600061342a84612ef6565b6040805160018082528183019092529192506000919060208083019080368337019050509050818160008151811061346457613464614e1f565b60209081029190910101526040805160018082528183019092526000918160200160208202803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135159190614b15565b8160008151811061352857613528614e1f565b6001600160a01b039283166020918202929092010152604051637f8baa3760e01b815290851690637f8baa3790613563908490600401614e35565b600060405180830381600087803b15801561357d57600080fd5b505af1158015613591573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136179190614b15565b6001600160a01b031663b4dc0aad8587856040518463ffffffff1660e01b815260040161364693929190614ebd565b600060405180830381600087803b15801561366057600080fd5b505af1158015613674573d6000803e3d6000fd5b50505050505050505050565b6000836001600160a01b031663bad346206040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136e49190614b15565b905060006136f183612ef6565b90506000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161372191906149b1565b602060405180830381865afa15801561373e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137629190614b32565b905060001985036137e65760405163b1f0724760e01b81526001600160a01b0387169063b1f072479061379d90600019908690600401614c65565b60408051808303816000875af11580156137bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137df9190614c8a565b50506138c4565b856001600160a01b031663b1f07247876001600160a01b0316637b3f86556040518163ffffffff1660e01b8152600401602060405180830381865afa158015613833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138579190614b32565b6138619088614b61565b846040518363ffffffff1660e01b815260040161387f929190614c65565b60408051808303816000875af115801561389d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138c19190614c8a565b50505b600081846001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016138f391906149b1565b602060405180830381865afa158015613910573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139349190614b32565b61393e9190614d69565b90506129408482613d82565b600061395584612ef6565b90506000826001600160a01b031663a749f1a683306040518363ffffffff1660e01b8152600401613987929190614c73565b6040805180830381865afa1580156139a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c79190614c8a565b5060408051600180825281830190925291925060009190602080830190803683370190505090508281600081518110613a0257613a02614e1f565b60209081029190910101526040805160018082528183019092526000918160200160208202803683370190505090508281600081518110613a4557613a45614e1f565b602002602001018181525050846001600160a01b031663a918058d7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ae29190614b15565b84846040518463ffffffff1660e01b8152600401613b0293929190614ee4565b600060405180830381600087803b158015613b1c57600080fd5b505af1158015613b30573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb69190614b15565b6001600160a01b031663228248328688856040518463ffffffff1660e01b8152600401613be593929190614ebd565b600060405180830381600087803b158015613bff57600080fd5b505af1158015613c13573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c999190614b15565b6001600160a01b031663095ea7b37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663defe20536040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d299190614b15565b886040518363ffffffff1660e01b8152600401613d47929190614b9e565b600060405180830381600087803b158015613d6157600080fd5b505af1158015613d75573d6000803e3d6000fd5b5050505050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603613e6257604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015613e1d57600080fd5b505af1158015613e31573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f19350505050158015611127573d6000803e3d6000fd5b60405163a9059cbb60e01b81526001600160a01b0383169063a9059cbb90613e909033908590600401614b9e565b6020604051808303816000875af1158015613eaf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111279190614bb7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603613f7b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613f6757600080fd5b505af1158015612940573d6000803e3d6000fd5b6040516323b872dd60e01b81526001600160a01b038316906323b872dd90613e9090339030908690600401614f24565b6000836001600160a01b031663bad346206040518163ffffffff1660e01b8152600401602060405180830381865afa158015613feb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061400f9190614b15565b905061401b8184613ed3565b600061402683612ef6565b60405163095ea7b360e01b81529091506001600160a01b0383169063095ea7b3906140579088908890600401614b9e565b6020604051808303816000875af1158015614076573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061409a9190614bb7565b50846001600160a01b031663f78b0cce866001600160a01b0316637b3f86556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156140e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061410c9190614b32565b6141169087614b61565b83614122426001614bd4565b6040518463ffffffff1660e01b815260040161414093929190614be7565b6020604051808303816000875af115801561415f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141839190614b32565b505050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663211664766040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142109190614b15565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614270573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142949190614b15565b6001600160a01b031663ed513d3584307f2263c4378b4920f0bef611a3ff22c506afa4745b3319c50b6d704a874990b8b26040518463ffffffff1660e01b81526004016142e393929190614f24565b6020604051808303816000875af1158015614302573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143269190614b32565b6040516350be256160e11b81529092506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a17c4ac2906143779030908590600401614d2b565b602060405180830381865afa158015614394573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143b89190614bb7565b614440576040516331568f3d60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c55a3cf49061440d9084903090600190600401614d45565b600060405180830381600087803b15801561442757600080fd5b505af115801561443b573d6000803e3d6000fd5b505050505b50919050565b600061445185612ef6565b9050600061445e85612ef6565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156144be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144e29190614b15565b6001600160a01b0316631a7d79dd848685856144ff426001614bd4565b6040516001600160e01b031960e088901b1681526001600160a01b039095166004860152602485019390935260448401919091526064830152608482015260a401600060405180830381600087803b15801561455a57600080fd5b505af115801561456e573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156145d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145f49190614b15565b6001600160a01b031663095ea7b37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663defe20536040518163ffffffff1660e01b8152600401602060405180830381865afa158015614660573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146849190614b15565b866040518363ffffffff1660e01b8152600401613646929190614b9e565b60006146ad83612ef6565b9050836001600160a01b031663332c0e43600019836146cb86612ef6565b6146d6426001614bd4565b6040516001600160e01b031960e087901b16815260048101949094526024840192909252604483015260648201526084016060604051808303816000875af1158015614726573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129409190614d7c565b6000826001600160a01b03166348d399e76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561478a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147ae9190614b15565b905060006147bb83612ef6565b90506000826001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016147eb91906149b1565b602060405180830381865afa158015614808573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061482c9190614b32565b604051636a9b189160e01b81529091506001600160a01b03861690636a9b18919061485f90600019908690600401614c65565b60408051808303816000875af115801561487d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148a19190614c8a565b5050600081846001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016148d291906149b1565b602060405180830381865afa1580156148ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149139190614b32565b61491d9190614d69565b90506141838482613d82565b6001600160a01b038116811461493e57600080fd5b50565b6000806000806080858703121561495757600080fd5b843561496281614929565b966020860135965060408601359560600135945092505050565b60008060006060848603121561499157600080fd5b833561499c81614929565b95602085013595506040909401359392505050565b6001600160a01b0391909116815260200190565b600080604083850312156149d857600080fd5b82356149e381614929565b946020939093013593505050565b600080600080600060a08688031215614a0957600080fd5b8535614a1481614929565b97602087013597506040870135966060810135965060800135945092505050565b801515811461493e57600080fd5b60008060008060808587031215614a5957600080fd5b843593506020850135614a6b81614929565b9250604085013591506060850135614a8281614a35565b939692955090935050565b600060208284031215614a9f57600080fd5b8135614aaa81614929565b9392505050565b600060208284031215614ac357600080fd5b5035919050565b600080600060608486031215614adf57600080fd5b8335614aea81614929565b92506020840135614afa81614929565b91506040840135614b0a81614929565b809150509250925092565b600060208284031215614b2757600080fd5b8151614aaa81614929565b600060208284031215614b4457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417612f8257612f82614b4b565b6001600160a01b0394909416845260208401929092526040830152606082015260800190565b6001600160a01b03929092168252602082015260400190565b600060208284031215614bc957600080fd5b8151614aaa81614a35565b80820180821115612f8257612f82614b4b565b9283526020830191909152604082015260600190565b6004815263416a6e6160e01b602082015260400190565b608081526000614c2660808301614bfd565b8281036020840152600481526322b0b93760e11b60208201526040810191505060018060a01b0380851660408401528084166060840152509392505050565b918252602082015260400190565b9182526001600160a01b0316602082015260400190565b60008060408385031215614c9d57600080fd5b505080516020909101519092909150565b60008060008060008060c08789031215614cc757600080fd5b865195506020870151945060408701519350606087015192506080870151915060a087015190509295509295509295565b6001600160a01b039586168152602081019490945260408401929092529092166060820152608081019190915260a00190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b81810381811115612f8257612f82614b4b565b600080600060608486031215614d9157600080fd5b8351925060208401519150604084015190509250925092565b600082614dc757634e487b7160e01b600052601260045260246000fd5b500490565b608081526000614dde60808301614bfd565b82810360208401526006815265426f72726f7760d01b60208201526040810191505060018060a01b0380851660408401528084166060840152509392505050565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b81811015614e765783516001600160a01b031683529284019291840191600101614e51565b50909695505050505050565b600081518084526020808501945080840160005b83811015614eb257815187529582019590820190600101614e96565b509495945050505050565b60018060a01b03841681528260208201526060604082015260006116096060830184614e82565b6001600160a01b0384168152606060208201819052600090614f0890830185614e82565b8281036040840152614f1a8185614e82565b9695505050505050565b6001600160a01b03938416815291909216602082015260408101919091526060019056fe76dad7077eda98c50bd77cf557ea65afdd8d9bc1f4c4ccd73fa97c3596dc5cda463f98b00a27e540083d903c04918e4d1121820e305403dd278497b3dbf172a3a2646970667358221220b17aaf4148c353f48eb90c4600f360370f646fd34e8d6f49c4713f9bc3e4f20564736f6c634300081200330000000000000000000000001b0e872565ac48269305b11b96ad481e264d507b000000000000000000000000c6a15814fefaf471301163ae0a65cdac48bb2d4d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000004bec5760bbe7fd73b03b80516df4760a05fb7389", + "from": "0xcD9C63CFEE8ad52e6ff0B7F6Cb8726933D0FFaa2", + "to": null, + "nonce": 19 + }, + { + "operationName": "addFeeTier", + "address": "0x7a44aadaCA83d044DD900899384c2Df39822066f", + "from": "0xC7b548AD9Cf38721810246C079b2d8083aba8909", + "to": "0x7a44aadaCA83d044DD900899384c2Df39822066f", + "nonce": 1 + }, + { + "operationName": "addFeeTier", + "address": "0x7a44aadaCA83d044DD900899384c2Df39822066f", + "from": "0xC7b548AD9Cf38721810246C079b2d8083aba8909", + "to": "0x7a44aadaCA83d044DD900899384c2Df39822066f", + "nonce": 2 + } +] \ No newline at end of file diff --git a/packages/aum-oracle/scripts/common/types.ts b/packages/aum-oracle/scripts/common/types.ts new file mode 100644 index 000000000..7ca11d5ed --- /dev/null +++ b/packages/aum-oracle/scripts/common/types.ts @@ -0,0 +1,10 @@ +import { Signer } from "ethers"; + +import { IAccountImplementation } from "../../typechain-types"; + +export interface User { + signer: Signer; + proxy: IAccountImplementation; +} + +export type Pool = { pair: string; amount: number; price: number; deposit: boolean }; diff --git a/packages/aum-oracle/scripts/deploy-apa.ts b/packages/aum-oracle/scripts/deploy-apa.ts new file mode 100644 index 000000000..bc2568f5b --- /dev/null +++ b/packages/aum-oracle/scripts/deploy-apa.ts @@ -0,0 +1,145 @@ +import { deployPool, HardhatUtils, Pool } from "@ajna-contracts/scripts"; +import { + AjnaProxyActions, + AjnaRewardClaimer, + ERC20, + ERC20Pool, + ERC20PoolFactory, + IWETH, +} from "@ajna-contracts/typechain"; +import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"; +import chalk from "chalk"; +import hre from "hardhat"; + +import { ADDRESSES, CONFIG, POOLS, TOKENS } from "./common/config"; +const utils = new HardhatUtils(hre); + +async function main() { + const signer: SignerWithAddress = await getSigner(); + console.info(`Deployer address: ${signer.address}`); + const network = hre.network.name === "hardhat" || hre.network.name === "local" ? "mainnet" : hre.network.name; + + const initializeStakingRewards = CONFIG.initializeStakingRewards || false; + const deployPools = CONFIG.deployPools || false; + + const erc20PoolFactory = await utils.getContract( + "ERC20PoolFactory", + ADDRESSES[network].ERC20_POOL_FACTORY + ); + let apa: AjnaProxyActions; + if (ADDRESSES[network].AJNA_PROXY_ACTIONS === "0x0000000000000000000000000000000000000000") { + apa = await utils.deployContract("AjnaProxyActions", [ + ADDRESSES[network].POOL_INFO_UTILS, + TOKENS[network].AJNA, + TOKENS[network].WETH, + ADDRESSES[network].GUARD, + ]); + console.log(`AjnaProxyActions Deployed: ${apa.address}`); + } else { + apa = await utils.getContract("AjnaProxyActions", ADDRESSES[network].AJNA_PROXY_ACTIONS); + if (initializeStakingRewards) { + const arc = await utils.deployContract("AjnaRewardClaimer", [ + ADDRESSES[network].REWARD_MANAGER, + TOKENS[network].AJNA, + ADDRESSES[network].SERVICE_REGISTRY, + ]); + await apa.initialize(ADDRESSES[network].POSITION_MANAGER, ADDRESSES[network].REWARD_MANAGER, arc.address); + console.log(`AjnaProxyActions Address : ${apa.address}`); + console.log(`AjnaRewardsClaimer Deployed: ${arc.address}`); + } + } + await deployAjnaPools(deployPools, network, erc20PoolFactory, apa, signer); +} + +async function deployAjnaPools( + deployPools: boolean, + network: string, + erc20PoolFactory: ERC20PoolFactory, + apa: AjnaProxyActions, + signer: SignerWithAddress +) { + for (const pool of POOLS) { + const [collateral, quote] = pool.pair.split("-"); + const collateralToken = TOKENS[network][collateral]; + const quoteToken = TOKENS[network][quote]; + if (quoteToken === hre.ethers.constants.AddressZero || collateralToken === hre.ethers.constants.AddressZero) { + console.log( + chalk.red(`Token ${quote}(${quoteToken}) or ${collateral}(${collateralToken}) not found for ${network}`) + ); + continue; + } + try { + const deployedPool = await deployPool(erc20PoolFactory, collateralToken, quoteToken, deployPools); + deployedPool.address === hre.ethers.constants.AddressZero + ? console.info(chalk.red(`Pool ${pool.pair} not yet deployed`)) + : console.info(chalk.green(`Pool ${pool.pair} deployed at ${deployedPool.address}`)); + if (pool.deposit) { + await depositQuoteToken(network, quote, signer, pool, apa, deployedPool); + } + } catch (error) { + console.error(chalk.red("error adding quote token"), error); + } + } +} + +async function depositQuoteToken( + network: string, + quote: string, + signer: SignerWithAddress, + pool: Pool, + apa: AjnaProxyActions, + deployedPool: ERC20Pool +) { + const quoteToken = await utils.getContract("ERC20", TOKENS[network][quote]); + if (quote === "WETH") { + const weth = await utils.getContract("IWETH", TOKENS[network][quote]); + try { + await weth.connect(signer).deposit({ value: hre.ethers.utils.parseUnits(pool.amount.toString(), 18) }); + } catch (error) { + console.error("error depositing weth", error); + } + } + const balance = await quoteToken.balanceOf(signer.address); + const decimals = await quoteToken.decimals(); + const price = hre.ethers.utils.parseUnits(pool.price.toString(), 18); + const index = await apa.convertPriceToIndex(price.toString()); + const amountInDecimals = hre.ethers.utils.parseUnits(pool.amount.toString(), decimals); + const amount = hre.ethers.utils.parseUnits(pool.amount.toString(), 18); + const allowance = await quoteToken.allowance(signer.address, deployedPool.address); + if (allowance.lt(amountInDecimals)) { + console.info(chalk.blue(`Approving ${pool.amount} of ${quote} to pool ${pool.pair} at index ${index}`)); + await quoteToken.connect(signer).approve(deployedPool.address, amountInDecimals); + } + if (amountInDecimals.lte(balance)) { + console.info(chalk.blue(`Adding ${pool.amount} of ${quote} to pool ${pool.pair} at index ${index}`)); + await deployedPool.connect(signer).addQuoteToken(amount, index, 999999999999999, false); + } else { + console.info(chalk.red(`Not enough ${quote} to add to pool ${pool.pair}`)); + } +} + +async function getSigner() { + let signer: SignerWithAddress; + if (hre.network.name === "hardhat" || hre.network.name === "localhost") { + const deployer = CONFIG.deployer || "0x8E78CC7089509B568a401f593F64B3074693d25E"; + await utils.impersonate(deployer); + signer = await hre.ethers.getSigner(deployer); + } else { + signer = (await hre.ethers.getSigners())[0]; + } + return signer; +} + +// We recommend this pattern to be able to use async/await everywhere +// and properly handle errors. +main() + .then(() => { + // success message or other processing + process.exitCode = 0; + process.exit(); + }) + .catch(error => { + console.error(error); + process.exitCode = 1; + process.exit(); + }); diff --git a/packages/aum-oracle/scripts/index.ts b/packages/aum-oracle/scripts/index.ts new file mode 100644 index 000000000..4e4b0b699 --- /dev/null +++ b/packages/aum-oracle/scripts/index.ts @@ -0,0 +1,2 @@ +export * from "./common"; +export { createDPMProxy, prepareEnv } from "./prepare-env"; diff --git a/packages/aum-oracle/scripts/prepare-env.ts b/packages/aum-oracle/scripts/prepare-env.ts new file mode 100644 index 000000000..81ae398d8 --- /dev/null +++ b/packages/aum-oracle/scripts/prepare-env.ts @@ -0,0 +1,573 @@ +import { + DAY, + deploy, + depositCollateralAndDrawQuote, + HardhatUtils, + openPosition, + provideLiquidity, + User, + WEEK, + withdrawCollateralAndRepayQuote, + YEAR, +} from "@aum-oracle/scripts"; +import { AccountFactory, ERC20Pool, IAccountImplementation, Token, WETH } from "@ajna-contracts/typechain"; +import { swapUniswapTokens } from "@oasisdex/dma-common/test-utils"; +import { BigNumber, Signer } from "ethers"; +import hre from "hardhat"; +import { HardhatRuntimeEnvironment } from "hardhat/types/runtime"; +// @ts-ignore +import ploty_ from "plotly"; + +const plotly = + process.env.PLOTY_KEY && process.env.PLOTY_USER ? ploty_(process.env.PLOTY_USER, process.env.PLOTY_KEY) : undefined; + +const utils = new HardhatUtils(hre); + +interface Bucket { + price: BigNumber; + index: BigNumber; + quoteTokens: BigNumber; + collateral: BigNumber; + bucketLPs: BigNumber; +} +interface AjnaPool { + poolAddress: string; + quoteToken: string; + collateralToken: string; + + //@deprecated use lowestUtilizedPrice + lup: BigNumber; + lowestUtilizedPrice: BigNumber; + lowestUtilizedPriceIndex: BigNumber; + + //@deprecated use highestThresholdPrice + htp: BigNumber; + highestThresholdPrice: BigNumber; + highestThresholdPriceIndex: BigNumber; + + highestPriceBucket: BigNumber; + highestPriceBucketIndex: BigNumber; + + mostOptimisticMatchingPrice: BigNumber; + + poolMinDebtAmount: BigNumber; + poolCollateralization: BigNumber; + poolActualUtilization: BigNumber; + poolTargetUtilization: BigNumber; + + // annualized rate as a fraction 0.05 = 5% + interestRate: BigNumber; + debt: BigNumber; + depositSize: BigNumber; + apr30dAverage: BigNumber; + dailyPercentageRate30dAverage: BigNumber; + monthlyPercentageRate30dAverage: BigNumber; + currentBurnEpoch: BigNumber; + buckets: Bucket[]; + pendingInflator: BigNumber; +} + +export const ajnaHre = hre; +export async function createDPMProxy(dmpFactory: AccountFactory, owner: Signer) { + const accountTx = await dmpFactory.connect(owner)["createAccount()"](); + const factoryReceipt = await accountTx.wait(); + const [AccountCreatedEvent] = utils.getEvents(factoryReceipt, dmpFactory.interface.getEvent("AccountCreated")); + const proxyAddress = AccountCreatedEvent.args.proxy.toString(); + const dpmProxy = utils.getContract("IAccountImplementation", proxyAddress); + return dpmProxy; +} + +export async function prepareEnv(_hre?: HardhatRuntimeEnvironment, mainnetTokens = false) { + const hre = _hre ? _hre : await import("hardhat"); + const ethers = hre.ethers; + const signers = await ethers.getSigners(); + const [deployer, lender, borrower] = signers; + + if (hre.network.name === "tenderly") { + await hre.ethers.provider.send("tenderly_setBalance", [ + [deployer.address, lender.address, borrower.address], + //amount in wei will be set for all wallets + hre.ethers.utils.hexValue(ethers.utils.parseUnits("1000000", "ether").toHexString()), + ]); + } + + async function getTokensForAccounts(token: string) { + await Promise.all( + signers.map(async signer => { + return swapUniswapTokens( + weth.address, + token, + hre.ethers.utils.parseEther("1000").toHexString(), + "0", + await signer.getAddress(), + { provider: hre.ethers.provider, signer } + ); + }) + ); + } + + async function fundAccounts() { + if (hre.network.name === "tenderly") { + await hre.ethers.provider.send("tenderly_setBalance", [ + signers.map(signer => signer.address), + //amount in wei will be set for all wallets + hre.ethers.utils.hexValue(ethers.utils.parseUnits("1000000", "ether").toHexString()), + ]); + + await getTokensForAccounts(usdc.address); + await getTokensForAccounts(wbtc.address); + } + if (hre.network.name !== "tenderly") { + await Promise.all([ + // Have some issues with setting balance on mainnet USDC contract + ...(mainnetTokens ? [] : signers.map(signer => utils.sendLotsOfMoney(signer.address, usdc, mainnetTokens))), + ...signers.map(signer => utils.sendLotsOfMoney(signer.address, wbtc, mainnetTokens)), + ...signers.map(signer => utils.sendLotsOfMoney(signer.address, weth, mainnetTokens)), + ]); + } + } + + const { + erc20PoolFactory, + erc721PoolFactory, + ajnaProxyActionsContract, + poolInfoContract, + usdc, + wbtc, + weth, + ajna, + dmpFactory, + guardDeployerSigner, + dmpGuardContract, + pools, + positionManagerContract, + rewardsManagerContract, + } = await deploy(mainnetTokens, hre); + + const poolByAddress = Object.entries(pools).reduce( + (acc, [, pool]) => ({ ...acc, [pool.address]: pool }), + {} as Record + ); + + await fundAccounts(); + + const dmpProxies = await Promise.all(signers.map(signer => createDPMProxy(dmpFactory, signer))); + const users: User[] = signers.map((signer, index) => ({ + signer, + proxy: dmpProxies[index], + })); + const lenderProxy = users[1].proxy; + const borrowerProxy = users[2].proxy; + + async function getLenderInfo(index: BigNumber, lenderAddress: string = lender.address) { + const lenderInfo = await pools.wbtcUsdcPool.lenderInfo(index, lenderAddress); + + return { + lenderInfo, + }; + } + + async function getBorrowerInfo(user: User, pool: ERC20Pool = pools.wbtcUsdcPool) { + return await poolInfoContract.borrowerInfo(pool.address, user.proxy.address); + } + + async function getParams(pool: ERC20Pool = pools.wbtcUsdcPool) { + const borrowerInfo = await poolInfoContract.borrowerInfo(pool.address, borrowerProxy.address); + const hpb = await poolInfoContract.hpb(pool.address); + const hpbIndex = await poolInfoContract.hpbIndex(pool.address); + const htp = await poolInfoContract.htp(pool.address); + let momp = BigNumber.from(0); + let htpIndex = BigNumber.from(0); + try { + htpIndex = await poolInfoContract.priceToIndex(htp); + } catch (e) { + console.error("htp not found"); + } + try { + momp = await poolInfoContract.momp(pool.address); + } catch (e) { + console.error("momp not found"); + } + const lenderInterestMargin = await poolInfoContract.lenderInterestMargin(pool.address); + const lup = await poolInfoContract.lup(pool.address); + const lupIndex = await poolInfoContract.lupIndex(pool.address); + const poolLoansInfo = await poolInfoContract.poolLoansInfo(pool.address); + const poolPricesInfo = await poolInfoContract.poolPricesInfo(pool.address); + const poolReservesInfo = await poolInfoContract.poolReservesInfo(pool.address); + const poolUtilizationInfo = await poolInfoContract.poolUtilizationInfo(pool.address); + const [debt, accruedDebt, debtInAuctions] = await pool.debtInfo(); + + const params = { + hpb, + hpbIndex, + htp, + htpIndex, + lenderInterestMargin, + lup, + lupIndex, + momp, + }; + + return { + borrowerInfo, + poolLoansInfo, + poolPricesInfo, + poolReservesInfo, + poolUtilizationInfo, + erc20PoolFactory, + balances: { + lender: { + eth: await lender.getBalance(), + + usdc: await usdc.balanceOf(lender.address), + wbtc: await wbtc.balanceOf(lender.address), + }, + borrower: { + eth: await lender.getBalance(), + usdc: await usdc.balanceOf(borrower.address), + wbtc: await wbtc.balanceOf(borrower.address), + }, + }, + debtInfo: { + debt, + debtInAuctions, + accruedDebt, + }, + ...params, + }; + } + + async function timeTravel(time: number): Promise { + await hre.network.provider.send("evm_increaseTime", [BigNumber.from(time).toHexString()]); + } + + const bucketsRepo: Record> = Object.values(pools).reduce( + (acc, pool) => ({ + ...acc, + [pool.address]: new Set(), + }), + {} + ); + async function provideLiquidity_(pool: ERC20Pool, amount: BigNumber, bucketIndex: BigNumber, user: User = users[1]) { + await provideLiquidity(usdc, user.signer, pool, amount, bucketIndex, getExpiryTimestamp); + bucketsRepo[pool.address].add(bucketIndex.toNumber()); + } + async function removeLiquidity_(pool: ERC20Pool, amount: BigNumber, bucketIndex: BigNumber, user: User = users[1]) { + const amountWei = ethers.utils.parseUnits(amount.toString(), 18); + const tx = await pool.connect(user.signer).removeQuoteToken(amountWei, bucketIndex); + await tx.wait(); + } + + async function getPoolData(poolAddress: string): Promise { + const buckets = await getAllBucketsInfo(poolAddress); + const pool = poolByAddress[poolAddress]; + const params = await getParams(pool); + + return { + poolAddress: pool.address, + quoteToken: await pool.quoteTokenAddress(), + collateralToken: await pool.collateralAddress(), + + //@deprecated use lowestUtilizedPrice + lup: params.lup, + lowestUtilizedPrice: params.lup, + lowestUtilizedPriceIndex: params.lupIndex, + + //@deprecated use highestThresholdPrice + htp: params.htp, + highestThresholdPrice: params.htp, + highestThresholdPriceIndex: params.htpIndex, + + highestPriceBucket: params.hpb, + highestPriceBucketIndex: params.hpbIndex, + + mostOptimisticMatchingPrice: params.momp, + + poolMinDebtAmount: params.poolUtilizationInfo.poolMinDebtAmount_, + poolCollateralization: params.poolUtilizationInfo.poolCollateralization_, + poolActualUtilization: params.poolUtilizationInfo.poolActualUtilization_, + poolTargetUtilization: params.poolUtilizationInfo.poolTargetUtilization_, + + // annualized rate as a fraction 0.05 = 5% + interestRate: params.poolLoansInfo.pendingInflator_, + debt: BigNumber.from(0), + depositSize: BigNumber.from(0), + apr30dAverage: BigNumber.from(0), + dailyPercentageRate30dAverage: BigNumber.from(0), + monthlyPercentageRate30dAverage: BigNumber.from(0), + currentBurnEpoch: BigNumber.from(0), + buckets: Object.entries(buckets).map(([index, bucket]) => { + return { + price: bucket.price_, + index: BigNumber.from(index), + quoteTokens: bucket.quoteTokens_, + collateral: bucket.collateral_, + bucketLPs: bucket.bucketLP_, + }; + }), + pendingInflator: BigNumber.from(0), + }; + } + + async function getBucketInfo(index: BigNumber, poolAddress: string = pools.wbtcUsdcPool.address.toLowerCase()) { + const bucketInfo = await poolInfoContract.bucketInfo(poolAddress, index); + + return bucketInfo; + } + async function moveLiquidity_( + pool: ERC20Pool, + amount: BigNumber, + fromBucketIndex: BigNumber, + toBucketIndex: BigNumber, + user: User = users[1] + ) { + const amountWei = ethers.utils.parseUnits(amount.toString(), 18); + const expiry = await getExpiryTimestamp(); + const tx = await pool.connect(user.signer).moveQuoteToken(amountWei, fromBucketIndex, toBucketIndex, expiry, false); + await tx.wait(); + } + + async function getAllBucketsInfo( + poolAddress: string = pools.wbtcUsdcPool.address.toLowerCase() + ): Promise>>> { + const buckets = bucketsRepo[poolAddress]; + + return ( + await Promise.all(Array.from(buckets).map(bucketIndex => getBucketInfo(BigNumber.from(bucketIndex), poolAddress))) + ).reduce( + (acc, bucketInfo, index) => ({ + ...acc, + [Array.from(buckets)[index]]: bucketInfo, + }), + {} + ); + } + + async function printBuckets(name: string, pool: ERC20Pool = pools.wbtcUsdcPool) { + if (!plotly) { + console.log("Create ploty account: https://chart-studio.plotly.com/"); + return; + } + const bucketsInfo = await getAllBucketsInfo(pool.address.toLowerCase()); + const params = await getParams(pool); + + let totalDebt = params.debtInfo.accruedDebt; + const buckets = Object.values(bucketsInfo); + + const yUtilized: string[] = []; + const yUnutilized: string[] = []; + const yNotEarning: string[] = []; + + const x = Object.values(bucketsInfo).map(bucket => ethers.utils.formatUnits(bucket.price_, 18)); + + buckets.forEach(bucket => { + if (totalDebt.gt(0)) { + if (totalDebt.gt(bucket.quoteTokens_)) { + yUtilized.push(ethers.utils.formatUnits(bucket.quoteTokens_, 18)); + yUnutilized.push("0"); + yNotEarning.push("0"); + totalDebt = totalDebt.sub(bucket.quoteTokens_); + } else { + yUtilized.push(ethers.utils.formatUnits(totalDebt, 18)); + yUnutilized.push(ethers.utils.formatUnits(bucket.quoteTokens_.sub(totalDebt), 18)); + yNotEarning.push("0"); + totalDebt = BigNumber.from(0); + } + } else { + yUtilized.push("0"); + if (bucket.price_.gte(params.htp)) { + yNotEarning.push("0"); + yUnutilized.push(ethers.utils.formatUnits(bucket.quoteTokens_, 18)); + } else { + yNotEarning.push(ethers.utils.formatUnits(bucket.quoteTokens_, 18)); + yUnutilized.push("0"); + } + } + }); + + const data = [ + { + x: x, + y: yUtilized, + type: "bar", + name: "Utilized", + }, + { + x: x, + y: yUnutilized, + type: "bar", + name: "Unutilized", + }, + { + x: x, + y: yNotEarning, + name: "Not earning", + type: "bar", + }, + ]; + + const graphOptions = { + filename: name, + fileopt: "overwrite", + layout: { barmode: "stack" }, + }; + return new Promise((resolve, reject) => { + plotly.plot(data, graphOptions, function (err: any, msg: any) { + if (err) { + reject(err); + } + resolve(msg); + }); + }); + } + + function printAddresses() { + console.table({ + erc20PoolFactory: erc20PoolFactory.address, + wbtcUsdcPool: pools.wbtcUsdcPool.address, + wethUsdcPool: pools.wethUsdcPool.address, + poolInfoContract: poolInfoContract.address, + dmpFactory: dmpFactory.address, + dmpGuardContract: dmpGuardContract.address, + "lender - signer[1]": lender.address, + lenderProxy: lenderProxy.address, + "borrower - signer[2]": borrower.address, + borrowerProxy: borrowerProxy.address, + ajnaProxyActions: ajnaProxyActionsContract.address, + positionManagerContract: positionManagerContract.address, + rewardsManagerContract: rewardsManagerContract.address, + }); + } + async function getExpiryTimestamp() { + const blockNumber = await ethers.provider.getBlockNumber(); + const timestamp = (await ethers.provider.getBlock(blockNumber)).timestamp; + + return timestamp + 130000; + } + + console.log(` + DEPLOYED AJNA CONTRACTS: + ======================== + erc20PoolFactory: ${erc20PoolFactory.address} + wbtcUsdcPool: ${pools.wbtcUsdcPool.address} + wethUsdcPool: ${pools.wethUsdcPool.address} + poolInfoContract: ${poolInfoContract.address} + ajnaProxyActionsContract: ${ajnaProxyActionsContract.address} + positionManagerContract: ${positionManagerContract.address} + rewardsManagerContract: ${rewardsManagerContract.address} + ======================== + `); + + return { + times: { + DAY, + WEEK, + YEAR, + }, + erc20PoolFactory, + getLenderInfo, + timeTravel, + getBucketInfo, + users, + poolContract: pools.wbtcUsdcPool, + lender, + borrower, + deployer, + dmpFactory, + dmpGuardContract, + guardDeployerSigner, + borrowerProxy, + lenderProxy, + poolInfo: poolInfoContract, + ajnaProxyActionsContract, + usdc, + wbtc, + weth, + ajna, + getParams, + provideLiquidity: provideLiquidity_, + removeLiquidity: removeLiquidity_, + moveLiquidity: moveLiquidity_, + getAllBucketsInfo, + getBorrowerInfo, + printBuckets, + printAddresses, + getPoolData, + fundAccounts, + pools, + positionManagerContract, + rewardsManagerContract, + getExpiryTimestamp, + provider: hre.ethers.provider, + withdrawCollateralAndRepayQuote: async ( + collateralToken: Token, + debtToken: Token, + pool: ERC20Pool, + collateralAmount: BigNumber, + debtAmount: BigNumber, + user: User = users[2] + ) => + withdrawCollateralAndRepayQuote( + ajnaProxyActionsContract, + pool, + debtToken, + await collateralToken.decimals(), + await debtToken.decimals(), + user.proxy, + user.signer, + collateralAmount, + debtAmount, + poolInfoContract, + hre.ethers.provider, + weth.address + ), + depositCollateralAndDrawQuote: async ( + collateralToken: Token | WETH, + debtToken: Token, + pool: ERC20Pool, + collateralAmount: BigNumber, + debtAmount: BigNumber, + price: BigNumber, + user: User = users[2] + ) => + depositCollateralAndDrawQuote( + ajnaProxyActionsContract, + pool, + collateralToken, + await collateralToken.decimals(), + await debtToken.decimals(), + user.proxy, + user.signer, + collateralAmount, + debtAmount, + price, + poolInfoContract, + hre.ethers.provider, + weth + ), + openPosition: async ( + collateralToken: Token | WETH, + debtToken: Token, + pool: ERC20Pool, + collateralAmount: BigNumber, + debtAmount: BigNumber, + price: BigNumber, + user: User = users[2] + ) => + openPosition( + ajnaProxyActionsContract, + pool, + collateralToken, + await collateralToken.decimals(), + await debtToken.decimals(), + user.proxy, + user.signer, + collateralAmount, + debtAmount, + price, + poolInfoContract, + hre.ethers.provider, + weth + ), + }; +} diff --git a/packages/aum-oracle/test/price.getter.test.ts b/packages/aum-oracle/test/price.getter.test.ts new file mode 100644 index 000000000..f86463017 --- /dev/null +++ b/packages/aum-oracle/test/price.getter.test.ts @@ -0,0 +1,130 @@ +import { expect } from "chai"; +import { BigNumber } from "ethers"; +import { ethers } from "hardhat"; + +import { AggregatedPriceOracle } from "../typechain-types"; + +describe("AggregatedPriceOracle", function () { + describe("Getter Cases", function () { + /// CONSTANTS + const NumberOfDaysPerWeek = 7; + const NumberOfWeeksPerMonth = 4; + const NumberOfMonthsPerYear = 12; + + const NumberOfDaysPerMonth = NumberOfDaysPerWeek * NumberOfWeeksPerMonth; + const NumberOfDaysPerYear = NumberOfDaysPerWeek * NumberOfWeeksPerMonth * NumberOfMonthsPerYear; + + /// DEPLOYMENT VARIABLES + let aggregatedPriceOracle: AggregatedPriceOracle; + let initialTimestamp: BigNumber; + let lastTimestamp: BigNumber; + + // Initialize the contract + before(async function () { + const AggregatedPriceOracle = await ethers.getContractFactory("AggregatedPriceOracle"); + aggregatedPriceOracle = (await AggregatedPriceOracle.deploy( + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + BigNumber.from(100), + )) as AggregatedPriceOracle; + + await aggregatedPriceOracle.deployed(); + + // Populate the contracts + + /// CONFIG + const NumberOfYears = 1; + const NumberOfMonths = 6; + const NumberOfWeeks = 3; + const NumberOfDays = 6; + + const TotalNumberOfDays = + NumberOfYears * NumberOfDaysPerYear + + NumberOfMonths * NumberOfDaysPerMonth + + NumberOfWeeks * NumberOfDaysPerWeek + + NumberOfDays - + 1; // Minus one because first price is set in the constructor + const InitialPrice = 100; + + const NumberOfSecondsPerDay = 86400; + const NumberOfSecondsToAdvance = NumberOfSecondsPerDay * TotalNumberOfDays; + + for (let i = 1; i <= TotalNumberOfDays; i++) { + await aggregatedPriceOracle.setDailyPrice(InitialPrice + i * 100); + } + + // Default to one year + await ethers.provider.send("evm_increaseTime", [NumberOfSecondsToAdvance]); + await ethers.provider.send("evm_mine", []); + + initialTimestamp = await aggregatedPriceOracle.initialTimestamp(); + lastTimestamp = initialTimestamp.add(NumberOfSecondsToAdvance); + }); + + // The following tests are skipped while the getAggregatedPrice function is not marked as view, + // because then the return value cannot be retrieved + it.skip("Start Timestamp in the Future", async function () { + const timestampInTheFuture = lastTimestamp.add(10000); + await expect(aggregatedPriceOracle.getAggregatedPrice(timestampInTheFuture)).to.be.revertedWith( + "StartTSAfterEndTS", + ); + }); + + it.skip("Start Timestamp Before Initial Timestamp", async function () { + const timestampBeforeInitialTimestamp = initialTimestamp.sub(1); + await expect(aggregatedPriceOracle.getAggregatedPrice(timestampBeforeInitialTimestamp)).to.be.revertedWith( + "StartTSBeforeInitialTS", + ); + }); + + it.skip("Get Price for Last 2 Days", async function () { + const NumberOfDays = 2; + const NumberOfSecondsPerDay = 86400; + const NumberOfSeconds = NumberOfSecondsPerDay * (NumberOfDays - 1); + + const aggregatedPrice = await aggregatedPriceOracle.getAggregatedPrice(lastTimestamp.sub(NumberOfSeconds)); + + expect(aggregatedPrice).to.equal(106100); + }); + + it.skip("Get Price for Last 6 Days", async function () { + const NumberOfDays = 6; + const NumberOfSecondsPerDay = 86400; + const NumberOfSeconds = NumberOfSecondsPerDay * (NumberOfDays - 1); + + const aggregatedPrice = await aggregatedPriceOracle.getAggregatedPrice(lastTimestamp.sub(NumberOfSeconds)); + + expect(aggregatedPrice).to.equal(317100); + }); + + it.skip("Get Price for Last 11 Days", async function () { + const NumberOfDays = 11; + const NumberOfSecondsPerDay = 86400; + const NumberOfSeconds = NumberOfSecondsPerDay * (NumberOfDays - 1); + + const aggregatedPrice = await aggregatedPriceOracle.getAggregatedPrice(lastTimestamp.sub(NumberOfSeconds)); + + expect(aggregatedPrice).to.equal(682500); + }); + + it.skip("Get Price for Last Year, 6 Months, 3 weeks and 2 Days", async function () { + const NumberOfDays = NumberOfDaysPerYear + NumberOfDaysPerMonth * 6 + NumberOfDaysPerWeek * 3 + 2; + const NumberOfSecondsPerDay = 86400; + const NumberOfSeconds = NumberOfSecondsPerDay * (NumberOfDays - 1); + + const aggregatedPrice = await aggregatedPriceOracle.getAggregatedPrice(lastTimestamp.sub(NumberOfSeconds)); + + expect(aggregatedPrice).to.equal(14124600); + }); + + it("Get Price for Different Ranges", async function () { + const NumberOfDays = NumberOfDaysPerYear + NumberOfDaysPerMonth * 6 + NumberOfDaysPerWeek * 3 + 6; + const NumberOfSecondsPerDay = 86400; + + let startTimestamp = initialTimestamp; + for (let i = 0; i < NumberOfDays; i++) { + await aggregatedPriceOracle.getAggregatedPrice(startTimestamp); + startTimestamp = startTimestamp.add(NumberOfSecondsPerDay); + } + }); + }); +}); diff --git a/packages/aum-oracle/test/price.setter.test.ts b/packages/aum-oracle/test/price.setter.test.ts new file mode 100644 index 000000000..86c09c0db --- /dev/null +++ b/packages/aum-oracle/test/price.setter.test.ts @@ -0,0 +1,250 @@ +import { expect } from "chai"; +import { BigNumber } from "ethers"; +import { ethers } from "hardhat"; + +import { AggregatedPriceOracle } from "../typechain-types"; + +describe("AggregatedPriceOracle", function () { + describe("Setter Cases", function () { + let aggregatedPriceOracle: AggregatedPriceOracle; + + // Initialize the contract + beforeEach(async function () { + const AggregatedPriceOracle = await ethers.getContractFactory("AggregatedPriceOracle"); + aggregatedPriceOracle = (await AggregatedPriceOracle.deploy( + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + BigNumber.from(100), + )) as AggregatedPriceOracle; + + await aggregatedPriceOracle.deployed(); + }); + it("Valid deployment", async function () { + expect(await aggregatedPriceOracle.token()).to.be.equal("0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"); + expect(await aggregatedPriceOracle.dailyPrice(0)).to.be.equal(100); + expect(await aggregatedPriceOracle.nextDailyPriceIndex()).to.be.equal(1); + expect(await aggregatedPriceOracle.nextWeeklyPriceIndex()).to.be.equal(0); + expect(await aggregatedPriceOracle.nextMonthlyPriceIndex()).to.be.equal(0); + }); + it("Set Daily Price", async function () { + await aggregatedPriceOracle.setDailyPrice(200); + + expect(await aggregatedPriceOracle.dailyPrice(0)).to.be.equal(100); + expect(await aggregatedPriceOracle.dailyPrice(1)).to.be.equal(200); + }); + it("Set Daily Price for Week", async function () { + await aggregatedPriceOracle.setDailyPrice(200); + await aggregatedPriceOracle.setDailyPrice(300); + await aggregatedPriceOracle.setDailyPrice(400); + await aggregatedPriceOracle.setDailyPrice(500); + await aggregatedPriceOracle.setDailyPrice(600); + await aggregatedPriceOracle.setDailyPrice(700); + + expect(await aggregatedPriceOracle.dailyPrice(0)).to.be.equal(100); + expect(await aggregatedPriceOracle.dailyPrice(1)).to.be.equal(200); + expect(await aggregatedPriceOracle.dailyPrice(2)).to.be.equal(300); + expect(await aggregatedPriceOracle.dailyPrice(3)).to.be.equal(400); + expect(await aggregatedPriceOracle.dailyPrice(4)).to.be.equal(500); + expect(await aggregatedPriceOracle.dailyPrice(5)).to.be.equal(600); + expect(await aggregatedPriceOracle.dailyPrice(6)).to.be.equal(700); + }); + it("Set Daily Price for 1 Week + 1 Day", async function () { + await aggregatedPriceOracle.setDailyPrice(200); + await aggregatedPriceOracle.setDailyPrice(300); + await aggregatedPriceOracle.setDailyPrice(400); + await aggregatedPriceOracle.setDailyPrice(500); + await aggregatedPriceOracle.setDailyPrice(600); + await aggregatedPriceOracle.setDailyPrice(700); + + await aggregatedPriceOracle.setDailyPrice(800); + + expect(await aggregatedPriceOracle.nextDailyPriceIndex()).to.be.equal(1); + expect(await aggregatedPriceOracle.nextWeeklyPriceIndex()).to.be.equal(1); + + expect(await aggregatedPriceOracle.dailyPrice(0)).to.be.equal(800); + expect(await aggregatedPriceOracle.weeklyPriceAggregated(0)).to.be.equal(2800); + }); + it("Set Daily Price for 1 Week + 6 Days", async function () { + await aggregatedPriceOracle.setDailyPrice(200); + await aggregatedPriceOracle.setDailyPrice(300); + await aggregatedPriceOracle.setDailyPrice(400); + await aggregatedPriceOracle.setDailyPrice(500); + await aggregatedPriceOracle.setDailyPrice(600); + await aggregatedPriceOracle.setDailyPrice(700); + + await aggregatedPriceOracle.setDailyPrice(800); + await aggregatedPriceOracle.setDailyPrice(900); + await aggregatedPriceOracle.setDailyPrice(1000); + await aggregatedPriceOracle.setDailyPrice(1100); + await aggregatedPriceOracle.setDailyPrice(1200); + await aggregatedPriceOracle.setDailyPrice(1300); + + expect(await aggregatedPriceOracle.nextDailyPriceIndex()).to.be.equal(6); + expect(await aggregatedPriceOracle.nextWeeklyPriceIndex()).to.be.equal(1); + + expect(await aggregatedPriceOracle.dailyPrice(0)).to.be.equal(800); + expect(await aggregatedPriceOracle.dailyPrice(1)).to.be.equal(900); + expect(await aggregatedPriceOracle.dailyPrice(2)).to.be.equal(1000); + expect(await aggregatedPriceOracle.dailyPrice(3)).to.be.equal(1100); + expect(await aggregatedPriceOracle.dailyPrice(4)).to.be.equal(1200); + expect(await aggregatedPriceOracle.dailyPrice(5)).to.be.equal(1300); + + expect(await aggregatedPriceOracle.weeklyPriceAggregated(0)).to.be.equal(2800); + }); + it("Set Daily Price for 2 Weeks", async function () { + await aggregatedPriceOracle.setDailyPrice(200); + await aggregatedPriceOracle.setDailyPrice(300); + await aggregatedPriceOracle.setDailyPrice(400); + await aggregatedPriceOracle.setDailyPrice(500); + await aggregatedPriceOracle.setDailyPrice(600); + await aggregatedPriceOracle.setDailyPrice(700); + + await aggregatedPriceOracle.setDailyPrice(800); + await aggregatedPriceOracle.setDailyPrice(900); + await aggregatedPriceOracle.setDailyPrice(1000); + await aggregatedPriceOracle.setDailyPrice(1100); + await aggregatedPriceOracle.setDailyPrice(1200); + await aggregatedPriceOracle.setDailyPrice(1300); + await aggregatedPriceOracle.setDailyPrice(1400); + + expect(await aggregatedPriceOracle.nextDailyPriceIndex()).to.be.equal(0); + expect(await aggregatedPriceOracle.nextWeeklyPriceIndex()).to.be.equal(2); + + expect(await aggregatedPriceOracle.weeklyPriceAggregated(0)).to.be.equal(2800); + expect(await aggregatedPriceOracle.weeklyPriceAggregated(1)).to.be.equal(7700); + }); + it("Set Daily Price for 3 Weeks + 6 days", async function () { + await aggregatedPriceOracle.setDailyPrice(200); + await aggregatedPriceOracle.setDailyPrice(300); + await aggregatedPriceOracle.setDailyPrice(400); + await aggregatedPriceOracle.setDailyPrice(500); + await aggregatedPriceOracle.setDailyPrice(600); + await aggregatedPriceOracle.setDailyPrice(700); + + await aggregatedPriceOracle.setDailyPrice(800); + await aggregatedPriceOracle.setDailyPrice(900); + await aggregatedPriceOracle.setDailyPrice(1000); + await aggregatedPriceOracle.setDailyPrice(1100); + await aggregatedPriceOracle.setDailyPrice(1200); + await aggregatedPriceOracle.setDailyPrice(1300); + await aggregatedPriceOracle.setDailyPrice(1400); + + await aggregatedPriceOracle.setDailyPrice(1500); + await aggregatedPriceOracle.setDailyPrice(1600); + await aggregatedPriceOracle.setDailyPrice(1700); + await aggregatedPriceOracle.setDailyPrice(1800); + await aggregatedPriceOracle.setDailyPrice(1900); + await aggregatedPriceOracle.setDailyPrice(2000); + await aggregatedPriceOracle.setDailyPrice(2100); + + await aggregatedPriceOracle.setDailyPrice(2200); + await aggregatedPriceOracle.setDailyPrice(2300); + await aggregatedPriceOracle.setDailyPrice(2400); + await aggregatedPriceOracle.setDailyPrice(2500); + await aggregatedPriceOracle.setDailyPrice(2600); + await aggregatedPriceOracle.setDailyPrice(2700); + + expect(await aggregatedPriceOracle.nextDailyPriceIndex()).to.be.equal(6); + expect(await aggregatedPriceOracle.nextWeeklyPriceIndex()).to.be.equal(3); + + expect(await aggregatedPriceOracle.weeklyPriceAggregated(0)).to.be.equal(2800); + expect(await aggregatedPriceOracle.weeklyPriceAggregated(1)).to.be.equal(7700); + expect(await aggregatedPriceOracle.weeklyPriceAggregated(2)).to.be.equal(12600); + }); + it("Set Daily Price for 4 Weeks", async function () { + await aggregatedPriceOracle.setDailyPrice(200); + await aggregatedPriceOracle.setDailyPrice(300); + await aggregatedPriceOracle.setDailyPrice(400); + await aggregatedPriceOracle.setDailyPrice(500); + await aggregatedPriceOracle.setDailyPrice(600); + await aggregatedPriceOracle.setDailyPrice(700); + + await aggregatedPriceOracle.setDailyPrice(800); + await aggregatedPriceOracle.setDailyPrice(900); + await aggregatedPriceOracle.setDailyPrice(1000); + await aggregatedPriceOracle.setDailyPrice(1100); + await aggregatedPriceOracle.setDailyPrice(1200); + await aggregatedPriceOracle.setDailyPrice(1300); + await aggregatedPriceOracle.setDailyPrice(1400); + + await aggregatedPriceOracle.setDailyPrice(1500); + await aggregatedPriceOracle.setDailyPrice(1600); + await aggregatedPriceOracle.setDailyPrice(1700); + await aggregatedPriceOracle.setDailyPrice(1800); + await aggregatedPriceOracle.setDailyPrice(1900); + await aggregatedPriceOracle.setDailyPrice(2000); + await aggregatedPriceOracle.setDailyPrice(2100); + + await aggregatedPriceOracle.setDailyPrice(2200); + await aggregatedPriceOracle.setDailyPrice(2300); + await aggregatedPriceOracle.setDailyPrice(2400); + await aggregatedPriceOracle.setDailyPrice(2500); + await aggregatedPriceOracle.setDailyPrice(2600); + await aggregatedPriceOracle.setDailyPrice(2700); + await aggregatedPriceOracle.setDailyPrice(2800); + + expect(await aggregatedPriceOracle.nextDailyPriceIndex()).to.be.equal(0); + expect(await aggregatedPriceOracle.nextWeeklyPriceIndex()).to.be.equal(0); + expect(await aggregatedPriceOracle.nextMonthlyPriceIndex()).to.be.equal(1); + + expect(await aggregatedPriceOracle.weeklyPriceAggregated(0)).to.be.equal(2800); + expect(await aggregatedPriceOracle.weeklyPriceAggregated(1)).to.be.equal(7700); + expect(await aggregatedPriceOracle.weeklyPriceAggregated(2)).to.be.equal(12600); + expect(await aggregatedPriceOracle.weeklyPriceAggregated(3)).to.be.equal(17500); + + expect(await aggregatedPriceOracle.monthlyPriceAggregated(0)).to.be.equal(40600); + }); + it("Set Daily Price for 11 Months + 3 Weeks + 6 Days", async function () { + const NumberOfDays = 7 * 4 * 12 - 2; // Minus 2 because a daily price is already set in the constructor + const InitialPrice = 100; + + for (let i = 1; i <= NumberOfDays; i++) { + await aggregatedPriceOracle.setDailyPrice(InitialPrice + i * 100); + } + + expect(await aggregatedPriceOracle.nextDailyPriceIndex()).to.be.equal(6); + expect(await aggregatedPriceOracle.nextWeeklyPriceIndex()).to.be.equal(3); + expect(await aggregatedPriceOracle.nextMonthlyPriceIndex()).to.be.equal(11); + + expect(await aggregatedPriceOracle.dailyPrice(0)).to.be.equal(33000); + expect(await aggregatedPriceOracle.dailyPrice(1)).to.be.equal(33100); + expect(await aggregatedPriceOracle.dailyPrice(2)).to.be.equal(33200); + expect(await aggregatedPriceOracle.dailyPrice(3)).to.be.equal(33300); + expect(await aggregatedPriceOracle.dailyPrice(4)).to.be.equal(33400); + expect(await aggregatedPriceOracle.dailyPrice(5)).to.be.equal(33500); + }); + it("Set Daily Price for 1 Year", async function () { + const NumberOfDays = 7 * 4 * 12 - 1; + const InitialPrice = 100; + + for (let i = 1; i <= NumberOfDays; i++) { + await aggregatedPriceOracle.setDailyPrice(InitialPrice + i * 100); + } + + expect(await aggregatedPriceOracle.nextDailyPriceIndex()).to.be.equal(0); + expect(await aggregatedPriceOracle.nextWeeklyPriceIndex()).to.be.equal(0); + expect(await aggregatedPriceOracle.nextMonthlyPriceIndex()).to.be.equal(0); + expect(await aggregatedPriceOracle.getYearlyPriceAggregatedLength()).to.be.equal(1); + + expect(await aggregatedPriceOracle.yearlyPriceAggregated(0)).to.be.equal(5661600); + }); + it("Set Daily Price for 3 Years", async function () { + const NumberOfDaysPerYear = 7 * 4 * 12; + const NumberOfYears = 3; + const NumberOfDays = NumberOfDaysPerYear * NumberOfYears - 1; + const InitialPrice = 100; + + for (let i = 1; i <= NumberOfDays; i++) { + await aggregatedPriceOracle.setDailyPrice(InitialPrice + i * 100); + } + + expect(await aggregatedPriceOracle.nextDailyPriceIndex()).to.be.equal(0); + expect(await aggregatedPriceOracle.nextWeeklyPriceIndex()).to.be.equal(0); + expect(await aggregatedPriceOracle.nextMonthlyPriceIndex()).to.be.equal(0); + expect(await aggregatedPriceOracle.getYearlyPriceAggregatedLength()).to.be.equal(3); + + expect(await aggregatedPriceOracle.yearlyPriceAggregated(0)).to.be.equal(5661600); + expect(await aggregatedPriceOracle.yearlyPriceAggregated(1)).to.be.equal(16951200); + expect(await aggregatedPriceOracle.yearlyPriceAggregated(2)).to.be.equal(28240800); + }); + }); +}); diff --git a/packages/aum-oracle/tsconfig.json b/packages/aum-oracle/tsconfig.json new file mode 100644 index 000000000..bb3da3200 --- /dev/null +++ b/packages/aum-oracle/tsconfig.json @@ -0,0 +1,41 @@ +{ + "extends": "../../tsconfig.options.json", + "compilerOptions": { + "paths": { + "@abis/*": ["../abis/*"], + "@aum-oracle/typechain": ["./typechain-types/index.ts"], + "@aum-oracle/typechain/*": ["./typechain-types/*"], + "@dma-library": ["../dma-library/src/index.ts"], + "@dma-library/*": ["../dma-library/src/*"], + "utils/*": ["../dma-common/utils/*"], + "@aum-oracle/scripts": ["./scripts/index.ts"], + "@aum-oracle/scripts/*": ["./scripts/*"], + "@dma-common/constants": ["../dma-common/constants/index.ts"], + "@dma-common/utils/*": ["../dma-common/utils/*"], + "@dma-common/test-utils/*": ["../dma-common/test-utils/*"], + "@deploy-configurations/addresses": ["../deploy-configurations/addresses/index.ts"], + "@deploy-configurations/utils/*": ["../deploy-configurations/utils/*"], + "@deploy-configurations/configs": ["../deploy-configurations/configs/index.ts"], + "@deploy-configurations/types/*": ["../deploy-configurations/types/*"], + "@deploy-configurations/constants": ["../deploy-configurations/constants/index.ts"] + }, + "typeRoots": [ + "../../node_modules/@types" + ] + }, + "references": [ + { + "path": "../abis", + }, + { + "path": "../dma-common", + }, + { + "path": "../dma-library", + }, + { + "path": "../deploy-configurations", + } + ], + "include": ["./bootstrap-env.ts", "./hardhat.config.ts", "./test", "./tasks", "./scripts/**/*.ts", "./typechain-types"] +} diff --git a/tsconfig.json b/tsconfig.json index 44fd7cca7..08b11e845 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,6 +10,9 @@ { "path": "packages/ajna-contracts" }, + { + "path": "packages/aum-oracle" + }, { "path": "packages/dma-contracts" },