From 11cc6967f571dcb8d2f2aae5f468e5e92e68c209 Mon Sep 17 00:00:00 2001 From: David Meister Date: Fri, 22 May 2026 10:19:53 +0000 Subject: [PATCH 01/27] feat: migrate raindex to soldeer for dependency management Replaces lib/ submodules (rain.interpreter, rain.deploy, rain.raindex.interface) with soldeer registry deps. Rewrites 146 source files' imports to versioned soldeer paths (rain-interpreter-interface-0.1.0/ src/, raindex-interface-0.1.1/src/, rainlang-0.1.2/src/, etc.). sushixswap-v2 remains a submodule (not on the Soldeer registry). OpenZeppelin pinned at 5.6.1 for raindex source plus 4.8.3 side-by-side for rain-math-fixedpoint-0.1.0's transitive dep. Co-Authored-By: Claude Opus 4.7 --- .gitignore | 2 + foundry.toml | 51 ++++--- remappings.txt | 19 +++ script/BuildAuthoringMeta.sol | 2 +- script/BuildPointers.sol | 10 +- script/Deploy.sol | 14 +- script/DiagOrder.sol | 2 +- soldeer.lock | 125 ++++++++++++++++++ src/abstract/RaindexV6ArbCommon.sol | 2 +- src/abstract/RaindexV6ArbOrderTaker.sol | 16 +-- src/abstract/RaindexV6ArbTaskGated.sol | 2 +- src/abstract/RaindexV6FlashBorrower.sol | 18 +-- src/abstract/RaindexV6FlashLender.sol | 10 +- .../RouteProcessorRaindexV6ArbOrderTaker.sol | 8 +- src/concrete/parser/RaindexV6SubParser.sol | 12 +- src/concrete/raindex/RaindexV6.sol | 48 +++---- src/lib/LibGenericPoolExchange.sol | 6 +- src/lib/LibOrder.sol | 2 +- src/lib/LibRaindex.sol | 8 +- src/lib/LibRaindexArb.sol | 10 +- src/lib/LibRaindexSubParser.sol | 8 +- .../RaindexV6ArbOrderTaker.context.t.sol | 10 +- .../RaindexV6ArbOrderTaker.ierc165.t.sol | 8 +- .../RaindexV6ArbOrderTaker.noOrders.t.sol | 6 +- ...RaindexV6ArbOrderTaker.onTakeOrders2.t.sol | 16 +-- ...xV6ArbOrderTaker.onTakeOrders2Direct.t.sol | 8 +- .../RaindexV6ArbOrderTaker.reentrancy.t.sol | 14 +- ...6ArbTaskGated.checkTaskHashPassMatch.t.sol | 10 +- ...V6ArbTaskGated.checkTaskHashPassZero.t.sol | 10 +- ...6ArbTaskGated.checkTaskHashWrongTask.t.sol | 10 +- .../RaindexV6ArbTaskGated.construct.t.sol | 10 +- ...indexV6ArbTaskGated.iTaskHashNonzero.t.sol | 10 +- .../RaindexV6ArbTaskGated.iTaskHashZero.t.sol | 10 +- .../RaindexV6FlashBorrower.badInitiator.t.sol | 2 +- ...dexV6FlashBorrower.badLenderApproval.t.sol | 16 +-- ...indexV6FlashBorrower.flashLoanFailed.t.sol | 16 +-- .../RaindexV6FlashBorrower.ierc165.t.sol | 4 +- ...ndexV6FlashBorrower.lenderValidation.t.sol | 2 +- ...RaindexV6FlashBorrower.mixedDecimals.t.sol | 16 +-- .../RaindexV6FlashBorrower.noOrders.t.sol | 6 +- ...exV6FlashBorrower.realTokenTransfers.t.sol | 16 +-- .../RaindexV6FlashBorrower.reentrancy.t.sol | 14 +- .../RaindexV6FlashLender.griefRecipient.t.sol | 4 +- .../RaindexV6FlashLender.ierc165.t.sol | 4 +- .../RaindexV6FlashLender.maxFlashLoan.t.sol | 2 +- .../RaindexV6FlashLender.mockSuccess.t.sol | 4 +- .../RaindexV6FlashLender.reentrant.t.sol | 10 +- .../RaindexV6FlashLender.transfers.t.sol | 12 +- ...indexV6ArbOrderTaker.approvalRevoked.t.sol | 2 +- ...aindexV6ArbOrderTaker.exchangeRevert.t.sol | 2 +- ...ricPoolRaindexV6ArbOrderTaker.sender.t.sol | 6 +- ...indexV6FlashBorrower.approvalRevoked.t.sol | 2 +- ...lRaindexV6FlashBorrower.ethForwarded.t.sol | 2 +- ...aindexV6FlashBorrower.exchangeRevert.t.sol | 2 +- ...ricPoolRaindexV6FlashBorrower.sender.t.sol | 6 +- ...RaindexV6ArbOrderTaker.lossyRounding.t.sol | 10 +- ...xV6ArbOrderTaker.nonStandardDecimals.t.sol | 18 +-- ...RaindexV6ArbOrderTaker.onTakeOrders2.t.sol | 16 +-- ...xV6ArbOrderTaker.onTakeOrders2Direct.t.sol | 8 +- ...ocessorRaindexV6ArbOrderTaker.sender.t.sol | 6 +- .../RaindexV6SubParser.describedByMeta.t.sol | 2 +- .../parser/RaindexV6SubParser.ierc165.t.sol | 12 +- .../parser/RaindexV6SubParser.pointers.t.sol | 4 +- .../RaindexV6SubParser.signedContext.t.sol | 8 +- .../parser/RaindexV6SubParser.signers.t.sol | 8 +- .../raindex/RaindexV6.addOrder.entask.t.sol | 4 +- .../raindex/RaindexV6.addOrder.mock.t.sol | 8 +- .../raindex/RaindexV6.addOrder.nonce.t.sol | 2 +- .../raindex/RaindexV6.addOrder.owner.t.sol | 2 +- .../concrete/raindex/RaindexV6.addOrder.t.sol | 4 +- .../raindex/RaindexV6.clear.badStack.t.sol | 4 +- .../raindex/RaindexV6.clear.context.t.sol | 10 +- .../RaindexV6.clear.handleIO.revert.t.sol | 8 +- .../raindex/RaindexV6.clear.mock.t.sol | 22 +-- .../raindex/RaindexV6.clear.sameOwner.t.sol | 4 +- .../raindex/RaindexV6.clear.sameToken.t.sol | 2 +- .../raindex/RaindexV6.clear.zeroAmount.t.sol | 2 +- .../raindex/RaindexV6.deposit.entask.t.sol | 10 +- test/concrete/raindex/RaindexV6.deposit.t.sol | 14 +- test/concrete/raindex/RaindexV6.entask.t.sol | 2 +- .../raindex/RaindexV6.quote.sameToken.t.sol | 4 +- test/concrete/raindex/RaindexV6.quote.t.sol | 12 +- .../RaindexV6.removeOrder.entask.t.sol | 4 +- .../raindex/RaindexV6.removeOrder.mock.t.sol | 2 +- .../raindex/RaindexV6.removeOrder.owner.t.sol | 2 +- .../RaindexV6.takeOrder.badStack.t.sol | 2 +- .../RaindexV6.takeOrder.exceedsMaxRatio.t.sol | 6 +- .../RaindexV6.takeOrder.handleIO.revert.t.sol | 10 +- .../RaindexV6.takeOrder.maximumInput.t.sol | 10 +- .../RaindexV6.takeOrder.maximumOutput.t.sol | 6 +- .../RaindexV6.takeOrder.minimumIO.t.sol | 6 +- .../raindex/RaindexV6.takeOrder.noop.t.sol | 8 +- .../RaindexV6.takeOrder.precision.t.sol | 8 +- .../RaindexV6.takeOrder.sameToken.t.sol | 4 +- .../RaindexV6.takeOrder.tokenMismatch.t.sol | 4 +- .../raindex/RaindexV6.vaultBalance.t.sol | 4 +- .../raindex/RaindexV6.withdraw.entask.t.sol | 16 +-- .../concrete/raindex/RaindexV6.withdraw.t.sol | 14 +- test/lib/LibOrder.t.sol | 2 +- .../LibRaindexArb.finalizeArbNativeGas.t.sol | 2 +- ...ndexArb.finalizeArbOutputTokenProfit.t.sol | 2 +- ...LibRaindexArb.finalizeArbTaskContext.t.sol | 12 +- ...RaindexArb.finalizeArbTokenTransfers.t.sol | 2 +- test/lib/deploy/LibRaindexDeploy.t.sol | 4 +- ...LibRaindexDeployIsStartBlockArbitrum.t.sol | 4 +- .../LibRaindexDeployIsStartBlockBase.t.sol | 4 +- .../LibRaindexDeployIsStartBlockFlare.t.sol | 4 +- .../LibRaindexDeployIsStartBlockPolygon.t.sol | 4 +- ...ibRaindexDeployNetworksJsonAddresses.t.sol | 2 +- ...DeployNetworksJsonStartBlockArbitrum.t.sol | 2 +- ...ndexDeployNetworksJsonStartBlockBase.t.sol | 2 +- ...dexDeployNetworksJsonStartBlockFlare.t.sol | 2 +- ...xDeployNetworksJsonStartBlockPolygon.t.sol | 2 +- test/lib/deploy/LibRaindexDeployProd.t.sol | 4 +- .../LibRaindexDeployStartBlockArbitrum.t.sol | 4 +- .../LibRaindexDeployStartBlockBase.t.sol | 4 +- .../LibRaindexDeployStartBlockFlare.t.sol | 4 +- .../LibRaindexDeployStartBlockPolygon.t.sol | 4 +- .../LibRaindexDeploySubgraphYamlAddress.t.sol | 2 +- .../LibRouteProcessor4CreationCode.t.sol | 2 +- test/util/abstract/ArbTest.sol | 8 +- test/util/abstract/IRaindexV6Stub.sol | 6 +- test/util/abstract/MockRaindexBase.sol | 8 +- .../abstract/RaindexV6ExternalMockTest.sol | 20 +-- .../abstract/RaindexV6ExternalRealTest.sol | 20 +-- test/util/abstract/RaindexV6SelfTest.sol | 2 +- .../RaindexV6SubParserContextTest.sol | 6 +- .../concrete/AllowanceCheckingExchange.sol | 4 +- .../concrete/ChildRaindexV6ArbTaskGated.sol | 2 +- .../util/concrete/FlashLendingMockRaindex.sol | 4 +- test/util/concrete/MaliciousLender.sol | 4 +- test/util/concrete/MaliciousRaindex.sol | 4 +- test/util/concrete/MockExchange.sol | 4 +- test/util/concrete/MockRouteProcessor.sol | 4 +- test/util/concrete/MockToken.sol | 2 +- .../RealisticFlashLendingMockRaindex.sol | 8 +- .../RealisticOrderTakerMockRaindex.sol | 8 +- test/util/concrete/Reenteroor.sol | 6 +- test/util/concrete/ReentrantExchange.sol | 8 +- test/util/concrete/ReentrantMockRaindex.sol | 10 +- test/util/concrete/RevertingExchange.sol | 2 +- test/util/lib/LibEtchRaindex.sol | 2 +- test/util/lib/LibTestAddOrder.sol | 12 +- test/util/lib/LibTestArb.sol | 18 +-- test/util/lib/LibTestFlashBorrowerArb.sol | 18 +-- test/util/lib/LibTestTakeOrder.sol | 16 +-- 146 files changed, 703 insertions(+), 536 deletions(-) create mode 100644 remappings.txt create mode 100644 soldeer.lock diff --git a/.gitignore b/.gitignore index 01a26e9273..c83d6007f4 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,5 @@ packages/raindex/esm.d.ts .ai_docs/ .ai_spec/ .cursor/ + +dependencies/ diff --git a/foundry.toml b/foundry.toml index 57fc4ef680..5f34ef9a79 100644 --- a/foundry.toml +++ b/foundry.toml @@ -1,7 +1,9 @@ [profile.default] src = 'src' out = 'out' -libs = ['lib'] +# 'dependencies' for soldeer-managed packages, 'lib' kept for the +# remaining git submodule (sushixswap-v2, which isn't on soldeer). +libs = ['dependencies', 'lib'] # See more config options https://github.com/foundry-rs/foundry/tree/master/config @@ -28,32 +30,51 @@ cbor_metadata = false # Build metadata used for testing rain meta aware contracts in this folder rather # than expose ffi to forge. fs_permissions = [ - { access = "read", path = "./meta"}, {access = "read", path = "./lib/rain.interpreter/meta/RainterpreterExpressionDeployerNPE2.rain.meta"}, + { access = "read", path = "./meta" }, + { access = "read", path = "./lib/rain.interpreter/meta/RainterpreterExpressionDeployerNPE2.rain.meta" }, { access = "read", path = "./lib/rain.interpreter/deployments/latest/RainterpreterParserNPE2" }, { access = "read", path = "./lib/rain.interpreter/deployments/latest/RainterpreterStoreNPE2" }, { access = "read", path = "./lib/rain.interpreter/deployments/latest/RainterpreterNPE2" }, { access = "read", path = "./lib/rain.interpreter/deployments/latest/RainterpreterExpressionDeployerNPE2" }, - { access = "read-write", path = "./meta/RaindexV6SubParserAuthoringMeta.rain.meta"}, + { access = "read-write", path = "./meta/RaindexV6SubParserAuthoringMeta.rain.meta" }, { access = "read-write", path = "src/generated" }, { access = "read", path = "./subgraph" }, ] remappings = [ - "forge-std/=lib/rain.interpreter/lib/rain.interpreter.interface/lib/forge-std/src/", - "openzeppelin-contracts/=lib/rain.raindex.interface/lib/rain.interpreter.interface/lib/openzeppelin-contracts/", - "rain.interpreter/=lib/rain.interpreter/src/", - "rain.metadata/=lib/rain.interpreter/lib/rain.metadata/src/", - "rain.interpreter.interface/=lib/rain.raindex.interface/lib/rain.interpreter.interface/src/", - "rain.intorastring/=lib/rain.interpreter/lib/rain.interpreter.interface/lib/rain.intorastring/src/", - "rain.sol.codegen/=lib/rain.interpreter/lib/rain.interpreter.interface/lib/rain.sol.codegen/src/", - "rain.solmem/=lib/rain.raindex.interface/lib/rain.interpreter.interface/lib/rain.solmem/src", - "rain.math.float/=lib/rain.raindex.interface/lib/rain.interpreter.interface/lib/rain.math.float/src/", - "rain.tofu.erc20-decimals/=lib/rain.interpreter/lib/rain.tofu.erc20-decimals/src/", - "rain.deploy/=lib/rain.deploy/src/", - "rain.lib.typecast/=lib/rain.raindex.interface/lib/rain.interpreter.interface/lib/rain.lib.typecast/src/", + # Custom remap so @openzeppelin packages' own internal imports resolve. + "@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.6.1/", + # Submodule for sushixswap-v2 (not on Soldeer). "sushixswap-v2/=lib/sushixswap-v2/", ] +[dependencies] +forge-std = "1.16.1" +"@openzeppelin-contracts" = "5.6.1" +# rainlanguage/rain.interpreter was renamed to rainlanguage/rainlang; +# its Soldeer registry name follows. +rainlang = "0.1.2" +rain-interpreter-interface = "0.1.0" +# rainlanguage/rain.raindex.interface was renamed to +# rainlanguage/raindex.interface; Soldeer registry name follows. +raindex-interface = "0.1.1" +rain-metadata = "0.1.0" +rain-intorastring = "0.1.0" +rain-sol-codegen = "0.1.0" +rain-solmem = "0.1.3" +rain-math-float = "0.1.1" +rain-tofu-erc20-decimals = "0.1.1" +rain-deploy = "0.1.2" +rain-lib-typecast = "0.1.0" +rain-lib-hash = "0.1.0" +rain-math-binary = "0.1.1" +rain-string = "0.2.0" +rain-lib-memkv = "0.1.0" +rain-math-fixedpoint = "0.1.0" + +[soldeer] +recursive_deps = false + [fuzz] runs = 5096 diff --git a/remappings.txt b/remappings.txt new file mode 100644 index 0000000000..4afac64043 --- /dev/null +++ b/remappings.txt @@ -0,0 +1,19 @@ +@openzeppelin-contracts-4.8.3/=dependencies/@openzeppelin-contracts-4.8.3/ +@openzeppelin-contracts-5.6.1/=dependencies/@openzeppelin-contracts-5.6.1/ +forge-std-1.16.1/=dependencies/forge-std-1.16.1/ +rain-deploy-0.1.2/=dependencies/rain-deploy-0.1.2/ +rain-interpreter-interface-0.1.0/=dependencies/rain-interpreter-interface-0.1.0/ +rain-intorastring-0.1.0/=dependencies/rain-intorastring-0.1.0/ +rain-lib-hash-0.1.0/=dependencies/rain-lib-hash-0.1.0/ +rain-lib-memkv-0.1.0/=dependencies/rain-lib-memkv-0.1.0/ +rain-lib-typecast-0.1.0/=dependencies/rain-lib-typecast-0.1.0/ +rain-math-binary-0.1.1/=dependencies/rain-math-binary-0.1.1/ +rain-math-fixedpoint-0.1.0/=dependencies/rain-math-fixedpoint-0.1.0/ +rain-math-float-0.1.1/=dependencies/rain-math-float-0.1.1/ +rain-metadata-0.1.0/=dependencies/rain-metadata-0.1.0/ +rain-sol-codegen-0.1.0/=dependencies/rain-sol-codegen-0.1.0/ +rain-solmem-0.1.3/=dependencies/rain-solmem-0.1.3/ +rain-string-0.2.0/=dependencies/rain-string-0.2.0/ +rain-tofu-erc20-decimals-0.1.1/=dependencies/rain-tofu-erc20-decimals-0.1.1/ +raindex-interface-0.1.1/=dependencies/raindex-interface-0.1.1/ +rainlang-0.1.2/=dependencies/rainlang-0.1.2/ diff --git a/script/BuildAuthoringMeta.sol b/script/BuildAuthoringMeta.sol index 392aab23f4..2faf6904aa 100644 --- a/script/BuildAuthoringMeta.sol +++ b/script/BuildAuthoringMeta.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Script} from "forge-std/Script.sol"; +import {Script} from "forge-std-1.16.1/src/Script.sol"; import {LibRaindexSubParser} from "../src/lib/LibRaindexSubParser.sol"; /// @title Raindex subparser Authoring Meta diff --git a/script/BuildPointers.sol b/script/BuildPointers.sol index 7fe742e1bd..f3379fab0a 100644 --- a/script/BuildPointers.sol +++ b/script/BuildPointers.sol @@ -2,14 +2,14 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Script} from "forge-std/Script.sol"; -import {LibCodeGen} from "rain.sol.codegen/lib/LibCodeGen.sol"; -import {LibFs} from "rain.sol.codegen/lib/LibFs.sol"; +import {Script} from "forge-std-1.16.1/src/Script.sol"; +import {LibCodeGen} from "rain-sol-codegen-0.1.0/src/lib/LibCodeGen.sol"; +import {LibFs} from "rain-sol-codegen-0.1.0/src/lib/LibFs.sol"; import {RaindexV6} from "../src/concrete/raindex/RaindexV6.sol"; import {RaindexV6SubParser} from "../src/concrete/parser/RaindexV6SubParser.sol"; import {LibRaindexSubParser, EXTERN_PARSE_META_BUILD_DEPTH} from "../src/lib/LibRaindexSubParser.sol"; -import {LibGenParseMeta} from "rain.interpreter.interface/lib/codegen/LibGenParseMeta.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; +import {LibGenParseMeta} from "rain-interpreter-interface-0.1.0/src/lib/codegen/LibGenParseMeta.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; import {ROUTE_PROCESSOR_4_CREATION_CODE} from "../src/lib/deploy/LibRouteProcessor4CreationCode.sol"; import {GenericPoolRaindexV6ArbOrderTaker} from "../src/concrete/arb/GenericPoolRaindexV6ArbOrderTaker.sol"; import {RouteProcessorRaindexV6ArbOrderTaker} from "../src/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.sol"; diff --git a/script/Deploy.sol b/script/Deploy.sol index 9c0e2c463d..47970dbfbc 100644 --- a/script/Deploy.sol +++ b/script/Deploy.sol @@ -2,14 +2,14 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Script, console2} from "forge-std/Script.sol"; +import {Script, console2} from "forge-std-1.16.1/src/Script.sol"; import {RaindexV6SubParser} from "../src/concrete/parser/RaindexV6SubParser.sol"; -import {IMetaBoardV1_2} from "rain.metadata/interface/unstable/IMetaBoardV1_2.sol"; -import {LibDescribedByMeta} from "rain.metadata/lib/LibDescribedByMeta.sol"; -import {LibMetaBoardDeploy} from "rain.metadata/lib/deploy/LibMetaBoardDeploy.sol"; -import {LibDecimalFloatDeploy} from "rain.math.float/lib/deploy/LibDecimalFloatDeploy.sol"; -import {LibTOFUTokenDecimals} from "rain.tofu.erc20-decimals/lib/LibTOFUTokenDecimals.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; +import {IMetaBoardV1_2} from "rain-metadata-0.1.0/src/interface/unstable/IMetaBoardV1_2.sol"; +import {LibDescribedByMeta} from "rain-metadata-0.1.0/src/lib/LibDescribedByMeta.sol"; +import {LibMetaBoardDeploy} from "rain-metadata-0.1.0/src/lib/deploy/LibMetaBoardDeploy.sol"; +import {LibDecimalFloatDeploy} from "rain-math-float-0.1.1/src/lib/deploy/LibDecimalFloatDeploy.sol"; +import {LibTOFUTokenDecimals} from "rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; import {LibRaindexDeploy} from "../src/lib/deploy/LibRaindexDeploy.sol"; import {CREATION_CODE as RAINDEX_CREATION_CODE} from "../src/generated/RaindexV6.pointers.sol"; import {CREATION_CODE as SUB_PARSER_CREATION_CODE} from "../src/generated/RaindexV6SubParser.pointers.sol"; diff --git a/script/DiagOrder.sol b/script/DiagOrder.sol index 8b2d3703ef..4140b9507d 100644 --- a/script/DiagOrder.sol +++ b/script/DiagOrder.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Script} from "forge-std/Script.sol"; +import {Script} from "forge-std-1.16.1/src/Script.sol"; contract DiagOrder is Script { function run() external { diff --git a/soldeer.lock b/soldeer.lock new file mode 100644 index 0000000000..b80a2d19ff --- /dev/null +++ b/soldeer.lock @@ -0,0 +1,125 @@ +[[dependencies]] +name = "@openzeppelin-contracts" +version = "4.8.3" +url = "https://soldeer-revisions.s3.amazonaws.com/@openzeppelin-contracts/4_8_3_22-01-2024_13:13:46_contracts.zip" +checksum = "c6c0f1d430120cf45a3531a2fe740a4dffa1434ebccac753a59c54bc1ce65db9" +integrity = "3ecc700e5d25af23c53959baf3cfd3cbadbc0013e80dfca40cee9e7ea34e141d" + +[[dependencies]] +name = "forge-std" +version = "1.16.1" +url = "https://soldeer-revisions.s3.amazonaws.com/forge-std/1_16_1_08-05-2026_08:51:16_forge-std-1.16.zip" +checksum = "839b61832925c7152c7b6dffbfa4998d9e606211179bd8f604733124e8a7cb57" +integrity = "60e55d10150354ca4a1e2985c5456c834b92b82ef85ab0e1d92a7786cddbd219" + +[[dependencies]] +name = "rain-deploy" +version = "0.1.2" +url = "https://soldeer-revisions.s3.amazonaws.com/rain-deploy/0_1_2_09-05-2026_19:49:20_rain.zip" +checksum = "94d3daf2f9f90062d2e676077c2b4ccd2bdd66201665a2209e98016e155f619a" +integrity = "10bff708d9e5d8b77655b8a8fc0c755cef8e3fc876cc3ff100425d27b08294a0" + +[[dependencies]] +name = "rain-interpreter-interface" +version = "0.1.0" +url = "https://soldeer-revisions.s3.amazonaws.com/rain-interpreter-interface/0_1_0_12-05-2026_18:43:02_rain.interpreter.zip" +checksum = "887c4d5f1a87713c49f015b3fcdb295defbb495b126d15f9850c0ce72ef79639" +integrity = "c1b89f8a7ad02507ceb051b6c0f2750f6abe1ba99ffdfe1c9ac93905db90e75d" + +[[dependencies]] +name = "rain-intorastring" +version = "0.1.0" +url = "https://soldeer-revisions.s3.amazonaws.com/rain-intorastring/0_1_0_12-05-2026_19:21:48_rain.zip" +checksum = "6cd4b0e5ea0a7ffc8adef762b3687d180e4c1408ec4ff8bf8d88d5f9712bf5af" +integrity = "cad9d7a463dd388f73b1f2cf85dd212fd46320203f8d39cb0938ffb451295384" + +[[dependencies]] +name = "rain-lib-hash" +version = "0.1.0" +url = "https://soldeer-revisions.s3.amazonaws.com/rain-lib-hash/0_1_0_12-05-2026_16:24:56_rain.lib.zip" +checksum = "648f3e38b297dbd3ecb32b82c8b24c322f484e1734eb50fd393bc547c72b59b0" +integrity = "91f5f679a0a27f096fdbc1e41195dd9f42cacfab15735efeb1101cc1b9215b47" + +[[dependencies]] +name = "rain-lib-memkv" +version = "0.1.0" +url = "https://soldeer-revisions.s3.amazonaws.com/rain-lib-memkv/0_1_0_12-05-2026_19:04:20_rain.lib.zip" +checksum = "69142c50851359c0b19ba0e59c387623a90debd16fb1c3a907aa2809a6873b1f" +integrity = "f2a63c0466c50cbfb3b3545094890c74dd1116b55fcb738bb631471252cee5b8" + +[[dependencies]] +name = "rain-lib-typecast" +version = "0.1.0" +url = "https://soldeer-revisions.s3.amazonaws.com/rain-lib-typecast/0_1_0_12-05-2026_16:31:39_rain.lib.zip" +checksum = "5c0419501e4c763ef161a3489934af192219f994cb2c9187699bc4dee0b4e2bb" +integrity = "092781f87fd9227c4c95aafde59300c503d6a9a355beaeb5c5732fe6e36676d6" + +[[dependencies]] +name = "rain-math-binary" +version = "0.1.1" +url = "https://soldeer-revisions.s3.amazonaws.com/rain-math-binary/0_1_1_09-05-2026_19:49:57_rain.math.zip" +checksum = "6f966e4f5f59103b62de2004005db508824622495b893a646d0e2a35511f0093" +integrity = "4cfaa11c0e48ac46824a10fec2184863d114f09c171544b721d782386708dca7" + +[[dependencies]] +name = "rain-math-fixedpoint" +version = "0.1.0" +url = "https://soldeer-revisions.s3.amazonaws.com/rain-math-fixedpoint/0_1_0_09-05-2026_20:41:06_rain.math.zip" +checksum = "3b19166f9f12ed84047f6570992d1bc445eed7705d5ba7e5a94de9f8cc51d572" +integrity = "8578d71cf511ea2ab2044821c733f06ad5d2a08afc4eb3ff7c14b1af809ab39c" + +[[dependencies]] +name = "rain-math-float" +version = "0.1.1" +url = "https://soldeer-revisions.s3.amazonaws.com/rain-math-float/0_1_1_13-05-2026_13:48:34_rain.math.zip" +checksum = "322956f272ae3073ee02b0e7301b8834f08f2de62bcd6c309c44e946d7cd7056" +integrity = "dccdd4406a37db6af690872b805084a7dbe5211c57961a61ef083a7912ddbdc9" + +[[dependencies]] +name = "rain-metadata" +version = "0.1.0" +url = "https://soldeer-revisions.s3.amazonaws.com/rain-metadata/0_1_0_12-05-2026_20:20:51_rain.zip" +checksum = "801d2b97b393d346c19a2f4f454d0279ba8f7d0f81fa3eb4fe8609da7291203d" +integrity = "f17f10aa50e9e2b254c689c83f41b3cabab81c95bad06424b9b3e9c92d02e577" + +[[dependencies]] +name = "rain-sol-codegen" +version = "0.1.0" +url = "https://soldeer-revisions.s3.amazonaws.com/rain-sol-codegen/0_1_0_09-05-2026_20:30:25_rain.sol.zip" +checksum = "6b5abd394c5db86ac64214262b7a5115158f480b2fbd74442672dfe52bb67310" +integrity = "e22748ce2ba7eca3ce71e23b2271d1c0f370b989507e784b0a4850a7a9e52157" + +[[dependencies]] +name = "rain-solmem" +version = "0.1.3" +url = "https://soldeer-revisions.s3.amazonaws.com/rain-solmem/0_1_3_09-05-2026_19:49:33_rain.zip" +checksum = "1d405bb81f7c9e56d1717de0d60da918d2fc2fa4db083efd2abe9906378d019f" +integrity = "e879d2743f9d884f647b9dd489889a83f2cea5f76eb69409a113e1baa69d3643" + +[[dependencies]] +name = "rain-string" +version = "0.2.0" +url = "https://soldeer-revisions.s3.amazonaws.com/rain-string/0_2_0_09-05-2026_21:16:31_rain.zip" +checksum = "847b9366128c5dcc5849c6938ae7ac92561ed8185bf304f1b1eb9ef59d77954e" +integrity = "7cb6ee638b59b840ea59e014e2610fdccc30a1593e763590e298314f00700561" + +[[dependencies]] +name = "rain-tofu-erc20-decimals" +version = "0.1.1" +url = "https://soldeer-revisions.s3.amazonaws.com/rain-tofu-erc20-decimals/0_1_1_12-05-2026_15:44:19_rain.tofu.zip" +checksum = "2a48a362ac80a85a8792492fcaf943a86a95009a8aeaced3b50554bbed1e5874" +integrity = "9e1fccf893dd0d90aeb445c78f9eee3904bc50287ff1da30b954508f18412cd2" + +[[dependencies]] +name = "raindex-interface" +version = "0.1.1" +url = "https://soldeer-revisions.s3.amazonaws.com/raindex-interface/0_1_1_21-05-2026_18:36:45_raindex.zip" +checksum = "d744aec8e9dc1bcce58de546d1a419f7eb87610e1541ce5459a140fd45626c99" +integrity = "df40e42221d1ecd4e6e6ae6a3511b00fc182e1a46f99401f564d94f299d63730" + +[[dependencies]] +name = "rainlang" +version = "0.1.2" +url = "https://soldeer-revisions.s3.amazonaws.com/rainlang/0_1_2_14-05-2026_19:37:46_rainlang.zip" +checksum = "87f4056d17bc103d6ca8d1881fe64c67d74d36f67ec1d858d071e3f77a449845" +integrity = "8c93188eddb2df33bc3c0e4f529f5de8476e813803bbaadc59500f6d37baebce" diff --git a/src/abstract/RaindexV6ArbCommon.sol b/src/abstract/RaindexV6ArbCommon.sol index 4c801b28e8..991f75ee99 100644 --- a/src/abstract/RaindexV6ArbCommon.sol +++ b/src/abstract/RaindexV6ArbCommon.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.19; -import {TaskV2} from "rain.raindex.interface/interface/IRaindexV6.sol"; +import {TaskV2} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; /// @param task The task to run as post for each arb. struct RaindexV6ArbConfig { diff --git a/src/abstract/RaindexV6ArbOrderTaker.sol b/src/abstract/RaindexV6ArbOrderTaker.sol index 691ed97cdb..538dc5041a 100644 --- a/src/abstract/RaindexV6ArbOrderTaker.sol +++ b/src/abstract/RaindexV6ArbOrderTaker.sol @@ -2,16 +2,16 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.19; -import {ERC165, IERC165} from "openzeppelin-contracts/contracts/utils/introspection/ERC165.sol"; -import {ReentrancyGuard} from "openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol"; -import {IERC20, SafeERC20} from "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; -import {IRaindexV6} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IRaindexV6ArbOrderTaker, TaskV2} from "rain.raindex.interface/interface/IRaindexV6ArbOrderTaker.sol"; -import {TakeOrdersConfigV5, Float} from "rain.raindex.interface/interface/IRaindexV6.sol"; +import {ERC165, IERC165} from "@openzeppelin-contracts-5.6.1/utils/introspection/ERC165.sol"; +import {ReentrancyGuard} from "@openzeppelin-contracts-5.6.1/utils/ReentrancyGuard.sol"; +import {IERC20, SafeERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol"; +import {IRaindexV6} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IRaindexV6ArbOrderTaker, TaskV2} from "raindex-interface-0.1.1/src/interface/IRaindexV6ArbOrderTaker.sol"; +import {TakeOrdersConfigV5, Float} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import {RaindexV6ArbCommon} from "./RaindexV6ArbCommon.sol"; import {LibRaindexArb} from "../lib/LibRaindexArb.sol"; -import {IRaindexV6OrderTaker} from "rain.raindex.interface/interface/IRaindexV6OrderTaker.sol"; -import {LibTOFUTokenDecimals} from "rain.tofu.erc20-decimals/lib/LibTOFUTokenDecimals.sol"; +import {IRaindexV6OrderTaker} from "raindex-interface-0.1.1/src/interface/IRaindexV6OrderTaker.sol"; +import {LibTOFUTokenDecimals} from "rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol"; /// @title RaindexV6ArbOrderTaker /// @notice Arb contract that takes orders directly from a `Raindex` without diff --git a/src/abstract/RaindexV6ArbTaskGated.sol b/src/abstract/RaindexV6ArbTaskGated.sol index c1f4d9a4b2..b6c123cd50 100644 --- a/src/abstract/RaindexV6ArbTaskGated.sol +++ b/src/abstract/RaindexV6ArbTaskGated.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.19; import {RaindexV6ArbCommon, RaindexV6ArbConfig, WrongTask} from "./RaindexV6ArbCommon.sol"; -import {TaskV2} from "rain.raindex.interface/interface/IRaindexV6.sol"; +import {TaskV2} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; /// @title RaindexV6ArbTaskGated /// @notice Mixin that adds task-hash gating to arb contracts. Stores a task diff --git a/src/abstract/RaindexV6FlashBorrower.sol b/src/abstract/RaindexV6FlashBorrower.sol index 2a206264aa..4fd1008d96 100644 --- a/src/abstract/RaindexV6FlashBorrower.sol +++ b/src/abstract/RaindexV6FlashBorrower.sol @@ -2,18 +2,18 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.19; -import {ERC165, IERC165} from "openzeppelin-contracts/contracts/utils/introspection/ERC165.sol"; -import {SafeERC20} from "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; -import {ReentrancyGuard} from "openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol"; -import {ON_FLASH_LOAN_CALLBACK_SUCCESS} from "rain.raindex.interface/interface/ierc3156/IERC3156FlashBorrower.sol"; -import {IRaindexV6, TakeOrdersConfigV5, TaskV2} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IERC3156FlashBorrower} from "rain.raindex.interface/interface/ierc3156/IERC3156FlashBorrower.sol"; +import {ERC165, IERC165} from "@openzeppelin-contracts-5.6.1/utils/introspection/ERC165.sol"; +import {SafeERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {ReentrancyGuard} from "@openzeppelin-contracts-5.6.1/utils/ReentrancyGuard.sol"; +import {ON_FLASH_LOAN_CALLBACK_SUCCESS} from "raindex-interface-0.1.1/src/interface/ierc3156/IERC3156FlashBorrower.sol"; +import {IRaindexV6, TakeOrdersConfigV5, TaskV2} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IERC3156FlashBorrower} from "raindex-interface-0.1.1/src/interface/ierc3156/IERC3156FlashBorrower.sol"; import {RaindexV6ArbCommon} from "./RaindexV6ArbCommon.sol"; import {LibRaindexArb} from "../lib/LibRaindexArb.sol"; import {LibRaindexDeploy} from "../lib/deploy/LibRaindexDeploy.sol"; -import {LibTOFUTokenDecimals} from "rain.tofu.erc20-decimals/lib/LibTOFUTokenDecimals.sol"; -import {LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; +import {LibTOFUTokenDecimals} from "rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol"; +import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; /// Thrown when the flash loan initiator is not this contract. /// @param badInitiator The untrusted initiator of the flash loan. diff --git a/src/abstract/RaindexV6FlashLender.sol b/src/abstract/RaindexV6FlashLender.sol index 98d70605f5..aa37fc2090 100644 --- a/src/abstract/RaindexV6FlashLender.sol +++ b/src/abstract/RaindexV6FlashLender.sol @@ -2,15 +2,15 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.19; -import {ERC165, IERC165} from "openzeppelin-contracts/contracts/utils/introspection/ERC165.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; -import {SafeERC20} from "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; +import {ERC165, IERC165} from "@openzeppelin-contracts-5.6.1/utils/introspection/ERC165.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {SafeERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol"; import { IERC3156FlashBorrower, ON_FLASH_LOAN_CALLBACK_SUCCESS -} from "rain.raindex.interface/interface/ierc3156/IERC3156FlashBorrower.sol"; -import {IERC3156FlashLender} from "rain.raindex.interface/interface/ierc3156/IERC3156FlashLender.sol"; +} from "raindex-interface-0.1.1/src/interface/ierc3156/IERC3156FlashBorrower.sol"; +import {IERC3156FlashLender} from "raindex-interface-0.1.1/src/interface/ierc3156/IERC3156FlashLender.sol"; /// Thrown when the `onFlashLoan` callback returns anything other than /// ON_FLASH_LOAN_CALLBACK_SUCCESS. diff --git a/src/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.sol b/src/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.sol index 012d1834fe..320c2fde1a 100644 --- a/src/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.sol +++ b/src/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.sol @@ -3,12 +3,12 @@ pragma solidity =0.8.25; import {IRouteProcessor} from "sushixswap-v2/src/interfaces/IRouteProcessor.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; -import {SafeERC20} from "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {SafeERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol"; import {RaindexV6ArbOrderTaker, Float} from "../../abstract/RaindexV6ArbOrderTaker.sol"; -import {LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {IERC20Metadata} from "openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol"; +import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {IERC20Metadata} from "@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol"; import {LibRaindexDeploy} from "../../lib/deploy/LibRaindexDeploy.sol"; /// @title RouteProcessorRaindexV6ArbOrderTaker diff --git a/src/concrete/parser/RaindexV6SubParser.sol b/src/concrete/parser/RaindexV6SubParser.sol index a7a38ef674..259ab159a1 100644 --- a/src/concrete/parser/RaindexV6SubParser.sol +++ b/src/concrete/parser/RaindexV6SubParser.sol @@ -7,9 +7,9 @@ import { BaseRainlangSubParser, OperandV2, IParserToolingV1 -} from "rain.interpreter/abstract/BaseRainlangSubParser.sol"; -import {LibConvert} from "rain.lib.typecast/LibConvert.sol"; -import {LibUint256Matrix} from "rain.solmem/lib/LibUint256Matrix.sol"; +} from "rainlang-0.1.2/src/abstract/BaseRainlangSubParser.sol"; +import {LibConvert} from "rain-lib-typecast-0.1.0/src/LibConvert.sol"; +import {LibUint256Matrix} from "rain-solmem-0.1.3/src/lib/LibUint256Matrix.sol"; import { LibRaindexSubParser, @@ -33,7 +33,7 @@ import { CONTEXT_BASE_ROW_SENDER, CONTEXT_BASE_ROW_CALLING_CONTRACT, CONTEXT_BASE_ROWS -} from "rain.interpreter.interface/lib/caller/LibContext.sol"; +} from "rain-interpreter-interface-0.1.0/src/lib/caller/LibContext.sol"; import { CONTEXT_COLUMNS_EXTENDED, CONTEXT_VAULT_OUTPUTS_COLUMN, @@ -66,8 +66,8 @@ import { SUB_PARSER_WORD_PARSERS, OPERAND_HANDLER_FUNCTION_POINTERS as SUB_PARSER_OPERAND_HANDLERS } from "../../generated/RaindexV6SubParser.pointers.sol"; -import {IDescribedByMetaV1} from "rain.metadata/interface/IDescribedByMetaV1.sol"; -import {ISubParserToolingV1} from "rain.sol.codegen/interface/ISubParserToolingV1.sol"; +import {IDescribedByMetaV1} from "rain-metadata-0.1.0/src/interface/IDescribedByMetaV1.sol"; +import {ISubParserToolingV1} from "rain-sol-codegen-0.1.0/src/interface/ISubParserToolingV1.sol"; /// @title RaindexV6SubParser /// @notice Sub-parser that provides raindex-specific context words (sender, diff --git a/src/concrete/raindex/RaindexV6.sol b/src/concrete/raindex/RaindexV6.sol index cce56a1572..c8f509a8cc 100644 --- a/src/concrete/raindex/RaindexV6.sol +++ b/src/concrete/raindex/RaindexV6.sol @@ -2,32 +2,32 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Math} from "openzeppelin-contracts/contracts/utils/math/Math.sol"; -import {Multicall} from "openzeppelin-contracts/contracts/utils/Multicall.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; -import {SafeERC20} from "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; -import {ReentrancyGuard} from "openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol"; -import {IERC20Metadata} from "openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol"; - -import {LibContext} from "rain.interpreter.interface/lib/caller/LibContext.sol"; -import {LibBytecode} from "rain.interpreter.interface/lib/bytecode/LibBytecode.sol"; +import {Math} from "@openzeppelin-contracts-5.6.1/utils/math/Math.sol"; +import {Multicall} from "@openzeppelin-contracts-5.6.1/utils/Multicall.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {SafeERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol"; +import {ReentrancyGuard} from "@openzeppelin-contracts-5.6.1/utils/ReentrancyGuard.sol"; +import {IERC20Metadata} from "@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol"; + +import {LibContext} from "rain-interpreter-interface-0.1.0/src/lib/caller/LibContext.sol"; +import {LibBytecode} from "rain-interpreter-interface-0.1.0/src/lib/bytecode/LibBytecode.sol"; import { SourceIndexV2, StateNamespace, IInterpreterV4, StackItem, EvalV4 -} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {LibUint256Array} from "rain.solmem/lib/LibUint256Array.sol"; -import {LibUint256Matrix} from "rain.solmem/lib/LibUint256Matrix.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; -import {LibNamespace} from "rain.interpreter.interface/lib/ns/LibNamespace.sol"; -import {LibMeta} from "rain.metadata/lib/LibMeta.sol"; -import {IMetaV1_2} from "rain.metadata/interface/unstable/IMetaV1_2.sol"; +} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {LibUint256Array} from "rain-solmem-0.1.3/src/lib/LibUint256Array.sol"; +import {LibUint256Matrix} from "rain-solmem-0.1.3/src/lib/LibUint256Matrix.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; +import {LibNamespace} from "rain-interpreter-interface-0.1.0/src/lib/ns/LibNamespace.sol"; +import {LibMeta} from "rain-metadata-0.1.0/src/lib/LibMeta.sol"; +import {IMetaV1_2} from "rain-metadata-0.1.0/src/interface/unstable/IMetaV1_2.sol"; import {LibRaindex} from "../../lib/LibRaindex.sol"; -import {LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {LibTOFUTokenDecimals, TOFUOutcome} from "rain.tofu.erc20-decimals/lib/LibTOFUTokenDecimals.sol"; -import {ITOFUTokenDecimals} from "rain.tofu.erc20-decimals/interface/ITOFUTokenDecimals.sol"; +import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {LibTOFUTokenDecimals, TOFUOutcome} from "rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol"; +import {ITOFUTokenDecimals} from "rain-tofu-erc20-decimals-0.1.1/src/interface/ITOFUTokenDecimals.sol"; import { IRaindexV6, @@ -45,8 +45,8 @@ import { QuoteV2, Float, IOV2 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IRaindexV6OrderTaker} from "rain.raindex.interface/interface/IRaindexV6OrderTaker.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IRaindexV6OrderTaker} from "raindex-interface-0.1.1/src/interface/IRaindexV6OrderTaker.sol"; import {LibOrder} from "../../lib/LibOrder.sol"; import { CALLING_CONTEXT_COLUMNS, @@ -59,10 +59,10 @@ import { CONTEXT_VAULT_IO_VAULT_ID } from "../../lib/LibRaindex.sol"; import {RaindexV6FlashLender} from "../../abstract/RaindexV6FlashLender.sol"; -import {LibBytes32Array} from "rain.solmem/lib/LibBytes32Array.sol"; -import {LibBytes32Matrix} from "rain.solmem/lib/LibBytes32Matrix.sol"; +import {LibBytes32Array} from "rain-solmem-0.1.3/src/lib/LibBytes32Array.sol"; +import {LibBytes32Matrix} from "rain-solmem-0.1.3/src/lib/LibBytes32Matrix.sol"; -import {LibFormatDecimalFloat} from "rain.math.float/lib/format/LibFormatDecimalFloat.sol"; +import {LibFormatDecimalFloat} from "rain-math-float-0.1.1/src/lib/format/LibFormatDecimalFloat.sol"; /// This will exist in a future version of Open Zeppelin if their main branch is /// to be believed. diff --git a/src/lib/LibGenericPoolExchange.sol b/src/lib/LibGenericPoolExchange.sol index 3920e25009..41ca096487 100644 --- a/src/lib/LibGenericPoolExchange.sol +++ b/src/lib/LibGenericPoolExchange.sol @@ -2,9 +2,9 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.19; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; -import {SafeERC20} from "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; -import {Address} from "openzeppelin-contracts/contracts/utils/Address.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {SafeERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol"; +import {Address} from "@openzeppelin-contracts-5.6.1/utils/Address.sol"; /// @title LibGenericPoolExchange /// @notice Shared approve-call-revoke pattern for generic pool exchanges. diff --git a/src/lib/LibOrder.sol b/src/lib/LibOrder.sol index 5fd8252cf5..c3a1119c3f 100644 --- a/src/lib/LibOrder.sol +++ b/src/lib/LibOrder.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.19; -import {OrderV4} from "rain.raindex.interface/interface/IRaindexV6.sol"; +import {OrderV4} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; /// @title LibOrder /// @notice Consistent handling of `OrderV4` for where it matters w.r.t. diff --git a/src/lib/LibRaindex.sol b/src/lib/LibRaindex.sol index e7e58d2f5c..96fcdf2fdf 100644 --- a/src/lib/LibRaindex.sol +++ b/src/lib/LibRaindex.sol @@ -2,15 +2,15 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.19; -import {TaskV2} from "rain.raindex.interface/interface/IRaindexV6.sol"; +import {TaskV2} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import { SourceIndexV2, StateNamespace, StackItem, EvalV4 -} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {LibNamespace, FullyQualifiedNamespace} from "rain.interpreter.interface/lib/ns/LibNamespace.sol"; -import {LibContext} from "rain.interpreter.interface/lib/caller/LibContext.sol"; +} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {LibNamespace, FullyQualifiedNamespace} from "rain-interpreter-interface-0.1.0/src/lib/ns/LibNamespace.sol"; +import {LibContext} from "rain-interpreter-interface-0.1.0/src/lib/caller/LibContext.sol"; /// @dev Raindex context is actually fairly complex. The calling context column /// is populated before calculate order, but the remaining columns are only diff --git a/src/lib/LibRaindexArb.sol b/src/lib/LibRaindexArb.sol index 4c27735ff3..ff578cb3bd 100644 --- a/src/lib/LibRaindexArb.sol +++ b/src/lib/LibRaindexArb.sol @@ -2,12 +2,12 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.19; -import {TaskV2} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import {TaskV2} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import {LibRaindex} from "./LibRaindex.sol"; -import {Address} from "openzeppelin-contracts/contracts/utils/Address.sol"; -import {SafeERC20} from "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; -import {LibDecimalFloat, Float} from "rain.math.float/lib/LibDecimalFloat.sol"; +import {Address} from "@openzeppelin-contracts-5.6.1/utils/Address.sol"; +import {SafeERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol"; +import {LibDecimalFloat, Float} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; /// @title LibRaindexArb library LibRaindexArb { diff --git a/src/lib/LibRaindexSubParser.sol b/src/lib/LibRaindexSubParser.sol index bb03cca804..d380af9500 100644 --- a/src/lib/LibRaindexSubParser.sol +++ b/src/lib/LibRaindexSubParser.sol @@ -2,15 +2,15 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.19; -import {AuthoringMetaV2, OperandV2} from "rain.interpreter.interface/interface/ISubParserV4.sol"; -import {LibUint256Matrix} from "rain.solmem/lib/LibUint256Matrix.sol"; -import {LibSubParse} from "rain.interpreter/lib/parse/LibSubParse.sol"; +import {AuthoringMetaV2, OperandV2} from "rain-interpreter-interface-0.1.0/src/interface/ISubParserV4.sol"; +import {LibUint256Matrix} from "rain-solmem-0.1.3/src/lib/LibUint256Matrix.sol"; +import {LibSubParse} from "rainlang-0.1.2/src/lib/parse/LibSubParse.sol"; import { CONTEXT_BASE_COLUMN, CONTEXT_BASE_ROW_SENDER, CONTEXT_BASE_ROW_CALLING_CONTRACT, CONTEXT_BASE_ROWS -} from "rain.interpreter.interface/lib/caller/LibContext.sol"; +} from "rain-interpreter-interface-0.1.0/src/lib/caller/LibContext.sol"; import { CONTEXT_COLUMNS, CONTEXT_COLUMNS_EXTENDED, diff --git a/test/abstract/RaindexV6ArbOrderTaker.context.t.sol b/test/abstract/RaindexV6ArbOrderTaker.context.t.sol index 6532ce2f72..4a8ae98a42 100644 --- a/test/abstract/RaindexV6ArbOrderTaker.context.t.sol +++ b/test/abstract/RaindexV6ArbOrderTaker.context.t.sol @@ -3,7 +3,7 @@ pragma solidity =0.8.25; import {ChildRaindexV6ArbOrderTaker} from "../util/concrete/ChildRaindexV6ArbOrderTaker.sol"; -import {TaskV2, SignedContextV1, EvaluableV4} from "rain.raindex.interface/interface/IRaindexV6.sol"; +import {TaskV2, SignedContextV1, EvaluableV4} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import {RaindexV6ExternalRealTest} from "../util/abstract/RaindexV6ExternalRealTest.sol"; import { TakeOrdersConfigV5, @@ -12,11 +12,11 @@ import { OrderConfigV4, OrderV4, IInterpreterV4 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; -import {IERC20Metadata} from "openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {IERC20Metadata} from "@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol"; import {StateNamespace, LibNamespace} from "../../src/concrete/raindex/RaindexV6.sol"; -import {LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; +import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; contract RaindexV6ArbOrderTakerContextTest is RaindexV6ExternalRealTest { function testRaindexV6ArbOrderTakerContext() external { diff --git a/test/abstract/RaindexV6ArbOrderTaker.ierc165.t.sol b/test/abstract/RaindexV6ArbOrderTaker.ierc165.t.sol index 459296413d..42f0e12062 100644 --- a/test/abstract/RaindexV6ArbOrderTaker.ierc165.t.sol +++ b/test/abstract/RaindexV6ArbOrderTaker.ierc165.t.sol @@ -2,10 +2,10 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; -import {IERC165} from "openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"; -import {IRaindexV6ArbOrderTaker} from "rain.raindex.interface/interface/IRaindexV6ArbOrderTaker.sol"; -import {IRaindexV6OrderTaker} from "rain.raindex.interface/interface/IRaindexV6OrderTaker.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; +import {IERC165} from "@openzeppelin-contracts-5.6.1/utils/introspection/IERC165.sol"; +import {IRaindexV6ArbOrderTaker} from "raindex-interface-0.1.1/src/interface/IRaindexV6ArbOrderTaker.sol"; +import {IRaindexV6OrderTaker} from "raindex-interface-0.1.1/src/interface/IRaindexV6OrderTaker.sol"; import {ChildRaindexV6ArbOrderTaker} from "../util/concrete/ChildRaindexV6ArbOrderTaker.sol"; contract RaindexV6ArbOrderTakerIERC165Test is Test { diff --git a/test/abstract/RaindexV6ArbOrderTaker.noOrders.t.sol b/test/abstract/RaindexV6ArbOrderTaker.noOrders.t.sol index 4654b6d46a..be14720421 100644 --- a/test/abstract/RaindexV6ArbOrderTaker.noOrders.t.sol +++ b/test/abstract/RaindexV6ArbOrderTaker.noOrders.t.sol @@ -14,9 +14,9 @@ import { IInterpreterStoreV3, TaskV2, SignedContextV1 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {LibInterpreterDeploy} from "rain.interpreter/lib/deploy/LibInterpreterDeploy.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {LibInterpreterDeploy} from "rainlang-0.1.2/src/lib/deploy/LibInterpreterDeploy.sol"; contract RaindexV6ArbOrderTakerNoOrdersTest is GenericPoolRaindexV6ArbOrderTakerTest { /// arb5 MUST revert with NoOrders when given an empty orders array. diff --git a/test/abstract/RaindexV6ArbOrderTaker.onTakeOrders2.t.sol b/test/abstract/RaindexV6ArbOrderTaker.onTakeOrders2.t.sol index 2c9a893057..1243328c0b 100644 --- a/test/abstract/RaindexV6ArbOrderTaker.onTakeOrders2.t.sol +++ b/test/abstract/RaindexV6ArbOrderTaker.onTakeOrders2.t.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import {GenericPoolRaindexV6ArbOrderTaker} from "../../src/concrete/arb/GenericPoolRaindexV6ArbOrderTaker.sol"; import { @@ -16,12 +16,12 @@ import { SignedContextV1, TaskV2, Float -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IInterpreterV4} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; -import {LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; -import {LibTOFUTokenDecimals} from "rain.tofu.erc20-decimals/lib/LibTOFUTokenDecimals.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IInterpreterV4} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; +import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; +import {LibTOFUTokenDecimals} from "rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol"; import {MockToken} from "test/util/concrete/MockToken.sol"; import {MockExchange} from "test/util/concrete/MockExchange.sol"; import {RealisticOrderTakerMockRaindex} from "test/util/concrete/RealisticOrderTakerMockRaindex.sol"; diff --git a/test/abstract/RaindexV6ArbOrderTaker.onTakeOrders2Direct.t.sol b/test/abstract/RaindexV6ArbOrderTaker.onTakeOrders2Direct.t.sol index 342debc540..b6abfa6612 100644 --- a/test/abstract/RaindexV6ArbOrderTaker.onTakeOrders2Direct.t.sol +++ b/test/abstract/RaindexV6ArbOrderTaker.onTakeOrders2Direct.t.sol @@ -2,12 +2,12 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {GenericPoolRaindexV6ArbOrderTaker} from "../../src/concrete/arb/GenericPoolRaindexV6ArbOrderTaker.sol"; -import {Float} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; -import {LibTOFUTokenDecimals} from "rain.tofu.erc20-decimals/lib/LibTOFUTokenDecimals.sol"; +import {Float} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; +import {LibTOFUTokenDecimals} from "rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol"; import {MockToken} from "test/util/concrete/MockToken.sol"; contract RaindexV6ArbOrderTakerOnTakeOrders2DirectTest is Test { diff --git a/test/abstract/RaindexV6ArbOrderTaker.reentrancy.t.sol b/test/abstract/RaindexV6ArbOrderTaker.reentrancy.t.sol index 341210eabc..c9c3be2bde 100644 --- a/test/abstract/RaindexV6ArbOrderTaker.reentrancy.t.sol +++ b/test/abstract/RaindexV6ArbOrderTaker.reentrancy.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {GenericPoolRaindexV6ArbOrderTaker} from "../../src/concrete/arb/GenericPoolRaindexV6ArbOrderTaker.sol"; import { @@ -14,12 +14,12 @@ import { EvaluableV4, SignedContextV1, TaskV2 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IInterpreterV4} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; -import {LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; -import {LibTOFUTokenDecimals} from "rain.tofu.erc20-decimals/lib/LibTOFUTokenDecimals.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IInterpreterV4} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; +import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; +import {LibTOFUTokenDecimals} from "rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol"; import {MockToken} from "test/util/concrete/MockToken.sol"; import {ReentrantMockRaindex} from "test/util/concrete/ReentrantMockRaindex.sol"; diff --git a/test/abstract/RaindexV6ArbTaskGated.checkTaskHashPassMatch.t.sol b/test/abstract/RaindexV6ArbTaskGated.checkTaskHashPassMatch.t.sol index 2d9d952e22..ae907ba286 100644 --- a/test/abstract/RaindexV6ArbTaskGated.checkTaskHashPassMatch.t.sol +++ b/test/abstract/RaindexV6ArbTaskGated.checkTaskHashPassMatch.t.sol @@ -2,13 +2,13 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {ChildRaindexV6ArbTaskGated} from "test/util/concrete/ChildRaindexV6ArbTaskGated.sol"; import {RaindexV6ArbConfig} from "../../src/abstract/RaindexV6ArbCommon.sol"; -import {TaskV2, EvaluableV4, SignedContextV1} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IInterpreterV4} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; -import {LibInterpreterDeploy} from "rain.interpreter/lib/deploy/LibInterpreterDeploy.sol"; +import {TaskV2, EvaluableV4, SignedContextV1} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IInterpreterV4} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; +import {LibInterpreterDeploy} from "rainlang-0.1.2/src/lib/deploy/LibInterpreterDeploy.sol"; /// _checkTaskHash MUST pass when the runtime task matches the configured task. contract RaindexV6ArbTaskGatedCheckTaskHashPassMatchTest is Test { diff --git a/test/abstract/RaindexV6ArbTaskGated.checkTaskHashPassZero.t.sol b/test/abstract/RaindexV6ArbTaskGated.checkTaskHashPassZero.t.sol index b44a52ba6e..11cbeda465 100644 --- a/test/abstract/RaindexV6ArbTaskGated.checkTaskHashPassZero.t.sol +++ b/test/abstract/RaindexV6ArbTaskGated.checkTaskHashPassZero.t.sol @@ -2,13 +2,13 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {ChildRaindexV6ArbTaskGated} from "test/util/concrete/ChildRaindexV6ArbTaskGated.sol"; import {RaindexV6ArbConfig} from "../../src/abstract/RaindexV6ArbCommon.sol"; -import {TaskV2, EvaluableV4, SignedContextV1} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IInterpreterV4} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; -import {LibInterpreterDeploy} from "rain.interpreter/lib/deploy/LibInterpreterDeploy.sol"; +import {TaskV2, EvaluableV4, SignedContextV1} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IInterpreterV4} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; +import {LibInterpreterDeploy} from "rainlang-0.1.2/src/lib/deploy/LibInterpreterDeploy.sol"; /// _checkTaskHash MUST pass through when iTaskHash is zero, regardless of /// the task provided at runtime. diff --git a/test/abstract/RaindexV6ArbTaskGated.checkTaskHashWrongTask.t.sol b/test/abstract/RaindexV6ArbTaskGated.checkTaskHashWrongTask.t.sol index 2ac7ec871e..ba7a8bdea4 100644 --- a/test/abstract/RaindexV6ArbTaskGated.checkTaskHashWrongTask.t.sol +++ b/test/abstract/RaindexV6ArbTaskGated.checkTaskHashWrongTask.t.sol @@ -2,13 +2,13 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {ChildRaindexV6ArbTaskGated} from "test/util/concrete/ChildRaindexV6ArbTaskGated.sol"; import {RaindexV6ArbConfig, WrongTask} from "../../src/abstract/RaindexV6ArbCommon.sol"; -import {TaskV2, EvaluableV4, SignedContextV1} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IInterpreterV4} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; -import {LibInterpreterDeploy} from "rain.interpreter/lib/deploy/LibInterpreterDeploy.sol"; +import {TaskV2, EvaluableV4, SignedContextV1} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IInterpreterV4} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; +import {LibInterpreterDeploy} from "rainlang-0.1.2/src/lib/deploy/LibInterpreterDeploy.sol"; /// _checkTaskHash MUST revert with WrongTask when iTaskHash is nonzero and /// the runtime task does not match. diff --git a/test/abstract/RaindexV6ArbTaskGated.construct.t.sol b/test/abstract/RaindexV6ArbTaskGated.construct.t.sol index b271acfef5..d11ef45876 100644 --- a/test/abstract/RaindexV6ArbTaskGated.construct.t.sol +++ b/test/abstract/RaindexV6ArbTaskGated.construct.t.sol @@ -2,13 +2,13 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {ChildRaindexV6ArbTaskGated} from "test/util/concrete/ChildRaindexV6ArbTaskGated.sol"; import {RaindexV6ArbConfig, RaindexV6ArbCommon} from "../../src/abstract/RaindexV6ArbCommon.sol"; -import {TaskV2, EvaluableV4, SignedContextV1} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IInterpreterV4} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; -import {LibInterpreterDeploy} from "rain.interpreter/lib/deploy/LibInterpreterDeploy.sol"; +import {TaskV2, EvaluableV4, SignedContextV1} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IInterpreterV4} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; +import {LibInterpreterDeploy} from "rainlang-0.1.2/src/lib/deploy/LibInterpreterDeploy.sol"; /// Construction MUST emit the Construct event with the sender and config. contract RaindexV6ArbTaskGatedConstructTest is Test { diff --git a/test/abstract/RaindexV6ArbTaskGated.iTaskHashNonzero.t.sol b/test/abstract/RaindexV6ArbTaskGated.iTaskHashNonzero.t.sol index 2956fd2945..25090b5544 100644 --- a/test/abstract/RaindexV6ArbTaskGated.iTaskHashNonzero.t.sol +++ b/test/abstract/RaindexV6ArbTaskGated.iTaskHashNonzero.t.sol @@ -2,13 +2,13 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {ChildRaindexV6ArbTaskGated} from "test/util/concrete/ChildRaindexV6ArbTaskGated.sol"; import {RaindexV6ArbConfig} from "../../src/abstract/RaindexV6ArbCommon.sol"; -import {TaskV2, EvaluableV4, SignedContextV1} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IInterpreterV4} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; -import {LibInterpreterDeploy} from "rain.interpreter/lib/deploy/LibInterpreterDeploy.sol"; +import {TaskV2, EvaluableV4, SignedContextV1} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IInterpreterV4} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; +import {LibInterpreterDeploy} from "rainlang-0.1.2/src/lib/deploy/LibInterpreterDeploy.sol"; /// When constructed with non-empty bytecode the task hash MUST be the /// keccak256 of the abi-encoded task. diff --git a/test/abstract/RaindexV6ArbTaskGated.iTaskHashZero.t.sol b/test/abstract/RaindexV6ArbTaskGated.iTaskHashZero.t.sol index b0779eff55..07a768a37d 100644 --- a/test/abstract/RaindexV6ArbTaskGated.iTaskHashZero.t.sol +++ b/test/abstract/RaindexV6ArbTaskGated.iTaskHashZero.t.sol @@ -2,13 +2,13 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {ChildRaindexV6ArbTaskGated} from "test/util/concrete/ChildRaindexV6ArbTaskGated.sol"; import {RaindexV6ArbConfig} from "../../src/abstract/RaindexV6ArbCommon.sol"; -import {TaskV2, EvaluableV4, SignedContextV1} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IInterpreterV4} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; -import {LibInterpreterDeploy} from "rain.interpreter/lib/deploy/LibInterpreterDeploy.sol"; +import {TaskV2, EvaluableV4, SignedContextV1} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IInterpreterV4} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; +import {LibInterpreterDeploy} from "rainlang-0.1.2/src/lib/deploy/LibInterpreterDeploy.sol"; /// When constructed with empty bytecode the task hash MUST be zero. contract RaindexV6ArbTaskGatedITaskHashZeroTest is Test { diff --git a/test/abstract/RaindexV6FlashBorrower.badInitiator.t.sol b/test/abstract/RaindexV6FlashBorrower.badInitiator.t.sol index 71759c20e6..764309c469 100644 --- a/test/abstract/RaindexV6FlashBorrower.badInitiator.t.sol +++ b/test/abstract/RaindexV6FlashBorrower.badInitiator.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {GenericPoolRaindexV6FlashBorrower} from "../../src/concrete/arb/GenericPoolRaindexV6FlashBorrower.sol"; import {BadInitiator} from "../../src/abstract/RaindexV6FlashBorrower.sol"; diff --git a/test/abstract/RaindexV6FlashBorrower.badLenderApproval.t.sol b/test/abstract/RaindexV6FlashBorrower.badLenderApproval.t.sol index ae297e1780..b4b84d69de 100644 --- a/test/abstract/RaindexV6FlashBorrower.badLenderApproval.t.sol +++ b/test/abstract/RaindexV6FlashBorrower.badLenderApproval.t.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import {GenericPoolRaindexV6FlashBorrower} from "../../src/concrete/arb/GenericPoolRaindexV6FlashBorrower.sol"; import {BadLender} from "../../src/abstract/RaindexV6FlashBorrower.sol"; @@ -16,12 +16,12 @@ import { EvaluableV4, SignedContextV1, TaskV2 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IInterpreterV4} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; -import {LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; -import {LibTOFUTokenDecimals} from "rain.tofu.erc20-decimals/lib/LibTOFUTokenDecimals.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IInterpreterV4} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; +import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; +import {LibTOFUTokenDecimals} from "rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol"; import {MockToken} from "test/util/concrete/MockToken.sol"; import {MaliciousRaindex} from "test/util/concrete/MaliciousRaindex.sol"; diff --git a/test/abstract/RaindexV6FlashBorrower.flashLoanFailed.t.sol b/test/abstract/RaindexV6FlashBorrower.flashLoanFailed.t.sol index d4b5a1e418..86938ad92c 100644 --- a/test/abstract/RaindexV6FlashBorrower.flashLoanFailed.t.sol +++ b/test/abstract/RaindexV6FlashBorrower.flashLoanFailed.t.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import {GenericPoolRaindexV6FlashBorrower} from "../../src/concrete/arb/GenericPoolRaindexV6FlashBorrower.sol"; import {FlashLoanFailed} from "../../src/abstract/RaindexV6FlashBorrower.sol"; @@ -17,12 +17,12 @@ import { SignedContextV1, TaskV2, Float -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IInterpreterV4} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; -import {LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; -import {LibTOFUTokenDecimals} from "rain.tofu.erc20-decimals/lib/LibTOFUTokenDecimals.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IInterpreterV4} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; +import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; +import {LibTOFUTokenDecimals} from "rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol"; import {LibRaindexDeploy} from "../../src/lib/deploy/LibRaindexDeploy.sol"; import {MockToken} from "test/util/concrete/MockToken.sol"; import {MockRaindexBase} from "test/util/abstract/MockRaindexBase.sol"; diff --git a/test/abstract/RaindexV6FlashBorrower.ierc165.t.sol b/test/abstract/RaindexV6FlashBorrower.ierc165.t.sol index 76cc6d9348..186210c8c9 100644 --- a/test/abstract/RaindexV6FlashBorrower.ierc165.t.sol +++ b/test/abstract/RaindexV6FlashBorrower.ierc165.t.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; -import {IERC165} from "openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; +import {IERC165} from "@openzeppelin-contracts-5.6.1/utils/introspection/IERC165.sol"; import {RaindexV6FlashBorrower, IERC3156FlashBorrower} from "../../src/abstract/RaindexV6FlashBorrower.sol"; /// @dev We need a contract that is deployable in order to test the abstract diff --git a/test/abstract/RaindexV6FlashBorrower.lenderValidation.t.sol b/test/abstract/RaindexV6FlashBorrower.lenderValidation.t.sol index 09523b041c..7e2d19a3bc 100644 --- a/test/abstract/RaindexV6FlashBorrower.lenderValidation.t.sol +++ b/test/abstract/RaindexV6FlashBorrower.lenderValidation.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {GenericPoolRaindexV6FlashBorrower} from "../../src/concrete/arb/GenericPoolRaindexV6FlashBorrower.sol"; import {BadLender} from "../../src/abstract/RaindexV6FlashBorrower.sol"; diff --git a/test/abstract/RaindexV6FlashBorrower.mixedDecimals.t.sol b/test/abstract/RaindexV6FlashBorrower.mixedDecimals.t.sol index f20ff335bf..5eb252d4a4 100644 --- a/test/abstract/RaindexV6FlashBorrower.mixedDecimals.t.sol +++ b/test/abstract/RaindexV6FlashBorrower.mixedDecimals.t.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import {GenericPoolRaindexV6FlashBorrower} from "../../src/concrete/arb/GenericPoolRaindexV6FlashBorrower.sol"; import { @@ -16,12 +16,12 @@ import { SignedContextV1, TaskV2, Float -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IInterpreterV4} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; -import {LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; -import {LibTOFUTokenDecimals} from "rain.tofu.erc20-decimals/lib/LibTOFUTokenDecimals.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IInterpreterV4} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; +import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; +import {LibTOFUTokenDecimals} from "rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol"; import {LibRaindexDeploy} from "../../src/lib/deploy/LibRaindexDeploy.sol"; import {MockToken} from "test/util/concrete/MockToken.sol"; import {MockExchange} from "test/util/concrete/MockExchange.sol"; diff --git a/test/abstract/RaindexV6FlashBorrower.noOrders.t.sol b/test/abstract/RaindexV6FlashBorrower.noOrders.t.sol index d0e52a4107..c7f482bb59 100644 --- a/test/abstract/RaindexV6FlashBorrower.noOrders.t.sol +++ b/test/abstract/RaindexV6FlashBorrower.noOrders.t.sol @@ -14,9 +14,9 @@ import { IInterpreterStoreV3, TaskV2, SignedContextV1 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {LibInterpreterDeploy} from "rain.interpreter/lib/deploy/LibInterpreterDeploy.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {LibInterpreterDeploy} from "rainlang-0.1.2/src/lib/deploy/LibInterpreterDeploy.sol"; contract RaindexV6FlashBorrowerNoOrdersTest is ArbTest { function buildArb() internal override returns (address payable) { diff --git a/test/abstract/RaindexV6FlashBorrower.realTokenTransfers.t.sol b/test/abstract/RaindexV6FlashBorrower.realTokenTransfers.t.sol index 1d9f98669a..c13ed8cacb 100644 --- a/test/abstract/RaindexV6FlashBorrower.realTokenTransfers.t.sol +++ b/test/abstract/RaindexV6FlashBorrower.realTokenTransfers.t.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import {GenericPoolRaindexV6FlashBorrower} from "../../src/concrete/arb/GenericPoolRaindexV6FlashBorrower.sol"; import { @@ -16,12 +16,12 @@ import { SignedContextV1, TaskV2, Float -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IInterpreterV4} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; -import {LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; -import {LibTOFUTokenDecimals} from "rain.tofu.erc20-decimals/lib/LibTOFUTokenDecimals.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IInterpreterV4} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; +import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; +import {LibTOFUTokenDecimals} from "rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol"; import {LibRaindexDeploy} from "../../src/lib/deploy/LibRaindexDeploy.sol"; import {MockToken} from "test/util/concrete/MockToken.sol"; import {MockExchange} from "test/util/concrete/MockExchange.sol"; diff --git a/test/abstract/RaindexV6FlashBorrower.reentrancy.t.sol b/test/abstract/RaindexV6FlashBorrower.reentrancy.t.sol index fc0672db6e..4d4e0f510e 100644 --- a/test/abstract/RaindexV6FlashBorrower.reentrancy.t.sol +++ b/test/abstract/RaindexV6FlashBorrower.reentrancy.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {GenericPoolRaindexV6FlashBorrower} from "../../src/concrete/arb/GenericPoolRaindexV6FlashBorrower.sol"; import { @@ -14,12 +14,12 @@ import { EvaluableV4, SignedContextV1, TaskV2 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IInterpreterV4} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; -import {LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; -import {LibTOFUTokenDecimals} from "rain.tofu.erc20-decimals/lib/LibTOFUTokenDecimals.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IInterpreterV4} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; +import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; +import {LibTOFUTokenDecimals} from "rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol"; import {LibRaindexDeploy} from "../../src/lib/deploy/LibRaindexDeploy.sol"; import {MockToken} from "test/util/concrete/MockToken.sol"; import {FlashLendingMockRaindex} from "test/util/concrete/FlashLendingMockRaindex.sol"; diff --git a/test/abstract/RaindexV6FlashLender.griefRecipient.t.sol b/test/abstract/RaindexV6FlashLender.griefRecipient.t.sol index d19bbf4fec..ed600c2e3e 100644 --- a/test/abstract/RaindexV6FlashLender.griefRecipient.t.sol +++ b/test/abstract/RaindexV6FlashLender.griefRecipient.t.sol @@ -6,8 +6,8 @@ import {RaindexV6ExternalMockTest} from "test/util/abstract/RaindexV6ExternalMoc import { IERC3156FlashBorrower, ON_FLASH_LOAN_CALLBACK_SUCCESS -} from "rain.raindex.interface/interface/ierc3156/IERC3156FlashBorrower.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +} from "raindex-interface-0.1.1/src/interface/ierc3156/IERC3156FlashBorrower.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import {FlashLenderCallbackFailed} from "../../src/abstract/RaindexV6FlashLender.sol"; /// @title RaindexV6FlashLenderGriefRecipientTest diff --git a/test/abstract/RaindexV6FlashLender.ierc165.t.sol b/test/abstract/RaindexV6FlashLender.ierc165.t.sol index 282cf84990..ed645f50ed 100644 --- a/test/abstract/RaindexV6FlashLender.ierc165.t.sol +++ b/test/abstract/RaindexV6FlashLender.ierc165.t.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; -import {IERC165} from "openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; +import {IERC165} from "@openzeppelin-contracts-5.6.1/utils/introspection/IERC165.sol"; import {RaindexV6FlashLender, IERC3156FlashLender} from "../../src/abstract/RaindexV6FlashLender.sol"; /// @dev We need a contract that is deployable in order to test the abstract diff --git a/test/abstract/RaindexV6FlashLender.maxFlashLoan.t.sol b/test/abstract/RaindexV6FlashLender.maxFlashLoan.t.sol index 052f59d2ad..f926b7d164 100644 --- a/test/abstract/RaindexV6FlashLender.maxFlashLoan.t.sol +++ b/test/abstract/RaindexV6FlashLender.maxFlashLoan.t.sol @@ -3,7 +3,7 @@ pragma solidity =0.8.25; import {RaindexV6ExternalMockTest} from "test/util/abstract/RaindexV6ExternalMockTest.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; /// @title RaindexV6FlashLenderMaxFlashLoanTest /// Tests the maximum flash loan amount for `RaindexV6FlashLender`. diff --git a/test/abstract/RaindexV6FlashLender.mockSuccess.t.sol b/test/abstract/RaindexV6FlashLender.mockSuccess.t.sol index 29734fea43..1912530d17 100644 --- a/test/abstract/RaindexV6FlashLender.mockSuccess.t.sol +++ b/test/abstract/RaindexV6FlashLender.mockSuccess.t.sol @@ -6,8 +6,8 @@ import {RaindexV6ExternalMockTest} from "test/util/abstract/RaindexV6ExternalMoc import { IERC3156FlashBorrower, ON_FLASH_LOAN_CALLBACK_SUCCESS -} from "rain.raindex.interface/interface/ierc3156/IERC3156FlashBorrower.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +} from "raindex-interface-0.1.1/src/interface/ierc3156/IERC3156FlashBorrower.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; /// @title RaindexV6FlashLenderMockSuccessTest /// Show that if the receiver is `RaindexV6FlashBorrower` and the token diff --git a/test/abstract/RaindexV6FlashLender.reentrant.t.sol b/test/abstract/RaindexV6FlashLender.reentrant.t.sol index db8773a0fa..1b5fc7e501 100644 --- a/test/abstract/RaindexV6FlashLender.reentrant.t.sol +++ b/test/abstract/RaindexV6FlashLender.reentrant.t.sol @@ -11,13 +11,13 @@ import { TakeOrdersConfigV5, ClearConfigV2, TaskV2 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IERC3156FlashBorrower} from "rain.raindex.interface/interface/ierc3156/IERC3156FlashBorrower.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IERC3156FlashBorrower} from "raindex-interface-0.1.1/src/interface/ierc3156/IERC3156FlashBorrower.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; import {LibTestTakeOrder} from "test/util/lib/LibTestTakeOrder.sol"; -import {EvaluableV4, SignedContextV1} from "rain.interpreter.interface/interface/IInterpreterCallerV4.sol"; -import {Float, LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; +import {EvaluableV4, SignedContextV1} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterCallerV4.sol"; +import {Float, LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; /// @title RaindexV6FlashLenderReentrant /// Test that flash borrowers can reenter the raindex, which is necessary for diff --git a/test/abstract/RaindexV6FlashLender.transfers.t.sol b/test/abstract/RaindexV6FlashLender.transfers.t.sol index d50933680f..d8d53f7354 100644 --- a/test/abstract/RaindexV6FlashLender.transfers.t.sol +++ b/test/abstract/RaindexV6FlashLender.transfers.t.sol @@ -2,17 +2,17 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {stdError} from "forge-std/Test.sol"; +import {stdError} from "forge-std-1.16.1/src/Test.sol"; import {RaindexV6ExternalMockTest} from "test/util/abstract/RaindexV6ExternalMockTest.sol"; -import {ERC20, IERC20Errors} from "openzeppelin-contracts/contracts/token/ERC20/ERC20.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; -import {SafeERC20} from "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; +import {ERC20, IERC20Errors} from "@openzeppelin-contracts-5.6.1/token/ERC20/ERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {SafeERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol"; import { IERC3156FlashBorrower, ON_FLASH_LOAN_CALLBACK_SUCCESS -} from "rain.raindex.interface/interface/ierc3156/IERC3156FlashBorrower.sol"; -import {IERC3156FlashLender} from "rain.raindex.interface/interface/ierc3156/IERC3156FlashLender.sol"; +} from "raindex-interface-0.1.1/src/interface/ierc3156/IERC3156FlashBorrower.sol"; +import {IERC3156FlashLender} from "raindex-interface-0.1.1/src/interface/ierc3156/IERC3156FlashLender.sol"; import {FlashLenderCallbackFailed} from "../../src/abstract/RaindexV6FlashLender.sol"; contract TKN is ERC20 { diff --git a/test/concrete/arb/GenericPoolRaindexV6ArbOrderTaker.approvalRevoked.t.sol b/test/concrete/arb/GenericPoolRaindexV6ArbOrderTaker.approvalRevoked.t.sol index ec2097de67..14caf1962e 100644 --- a/test/concrete/arb/GenericPoolRaindexV6ArbOrderTaker.approvalRevoked.t.sol +++ b/test/concrete/arb/GenericPoolRaindexV6ArbOrderTaker.approvalRevoked.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {LibTestArb, OrderTakerSetup} from "test/util/lib/LibTestArb.sol"; import {AllowanceCheckingExchange} from "test/util/concrete/AllowanceCheckingExchange.sol"; diff --git a/test/concrete/arb/GenericPoolRaindexV6ArbOrderTaker.exchangeRevert.t.sol b/test/concrete/arb/GenericPoolRaindexV6ArbOrderTaker.exchangeRevert.t.sol index 7c51a62d5e..3264f54dc0 100644 --- a/test/concrete/arb/GenericPoolRaindexV6ArbOrderTaker.exchangeRevert.t.sol +++ b/test/concrete/arb/GenericPoolRaindexV6ArbOrderTaker.exchangeRevert.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {LibTestArb, OrderTakerSetup} from "test/util/lib/LibTestArb.sol"; import {RevertingExchange} from "test/util/concrete/RevertingExchange.sol"; diff --git a/test/concrete/arb/GenericPoolRaindexV6ArbOrderTaker.sender.t.sol b/test/concrete/arb/GenericPoolRaindexV6ArbOrderTaker.sender.t.sol index c49653ed30..d91fdaa427 100644 --- a/test/concrete/arb/GenericPoolRaindexV6ArbOrderTaker.sender.t.sol +++ b/test/concrete/arb/GenericPoolRaindexV6ArbOrderTaker.sender.t.sol @@ -14,9 +14,9 @@ import { IInterpreterStoreV3, TaskV2, SignedContextV1 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {LibInterpreterDeploy} from "rain.interpreter/lib/deploy/LibInterpreterDeploy.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {LibInterpreterDeploy} from "rainlang-0.1.2/src/lib/deploy/LibInterpreterDeploy.sol"; contract GenericPoolRaindexV6ArbOrderTakerSenderTest is GenericPoolRaindexV6ArbOrderTakerTest { /// forge-config: default.fuzz.runs = 10 diff --git a/test/concrete/arb/GenericPoolRaindexV6FlashBorrower.approvalRevoked.t.sol b/test/concrete/arb/GenericPoolRaindexV6FlashBorrower.approvalRevoked.t.sol index 8c45400b1b..1d3b0126ac 100644 --- a/test/concrete/arb/GenericPoolRaindexV6FlashBorrower.approvalRevoked.t.sol +++ b/test/concrete/arb/GenericPoolRaindexV6FlashBorrower.approvalRevoked.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {LibTestFlashBorrowerArb, FlashBorrowerSetup} from "test/util/lib/LibTestFlashBorrowerArb.sol"; import {LibTestArb} from "test/util/lib/LibTestArb.sol"; import {AllowanceCheckingExchange} from "test/util/concrete/AllowanceCheckingExchange.sol"; diff --git a/test/concrete/arb/GenericPoolRaindexV6FlashBorrower.ethForwarded.t.sol b/test/concrete/arb/GenericPoolRaindexV6FlashBorrower.ethForwarded.t.sol index eb63f98c16..465acbb55e 100644 --- a/test/concrete/arb/GenericPoolRaindexV6FlashBorrower.ethForwarded.t.sol +++ b/test/concrete/arb/GenericPoolRaindexV6FlashBorrower.ethForwarded.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {LibTestFlashBorrowerArb, FlashBorrowerSetup} from "test/util/lib/LibTestFlashBorrowerArb.sol"; import {LibTestArb} from "test/util/lib/LibTestArb.sol"; import {AllowanceCheckingExchange} from "test/util/concrete/AllowanceCheckingExchange.sol"; diff --git a/test/concrete/arb/GenericPoolRaindexV6FlashBorrower.exchangeRevert.t.sol b/test/concrete/arb/GenericPoolRaindexV6FlashBorrower.exchangeRevert.t.sol index 8d8f8b8784..4c0118d0c3 100644 --- a/test/concrete/arb/GenericPoolRaindexV6FlashBorrower.exchangeRevert.t.sol +++ b/test/concrete/arb/GenericPoolRaindexV6FlashBorrower.exchangeRevert.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {LibTestFlashBorrowerArb, FlashBorrowerSetup} from "test/util/lib/LibTestFlashBorrowerArb.sol"; import {LibTestArb} from "test/util/lib/LibTestArb.sol"; import {RevertingExchange} from "test/util/concrete/RevertingExchange.sol"; diff --git a/test/concrete/arb/GenericPoolRaindexV6FlashBorrower.sender.t.sol b/test/concrete/arb/GenericPoolRaindexV6FlashBorrower.sender.t.sol index e6bb8e83c1..9c9c305c50 100644 --- a/test/concrete/arb/GenericPoolRaindexV6FlashBorrower.sender.t.sol +++ b/test/concrete/arb/GenericPoolRaindexV6FlashBorrower.sender.t.sol @@ -14,9 +14,9 @@ import { IInterpreterStoreV3, TaskV2, SignedContextV1 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {LibDecimalFloat, Float} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {LibInterpreterDeploy} from "rain.interpreter/lib/deploy/LibInterpreterDeploy.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {LibDecimalFloat, Float} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {LibInterpreterDeploy} from "rainlang-0.1.2/src/lib/deploy/LibInterpreterDeploy.sol"; contract GenericPoolRaindexV6FlashBorrowerTest is ArbTest { function buildArb() internal override returns (address payable) { diff --git a/test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.lossyRounding.t.sol b/test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.lossyRounding.t.sol index b126499459..17c55ff74f 100644 --- a/test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.lossyRounding.t.sol +++ b/test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.lossyRounding.t.sol @@ -2,14 +2,14 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {IRouteProcessor} from "sushixswap-v2/src/interfaces/IRouteProcessor.sol"; import {RouteProcessorRaindexV6ArbOrderTaker} from "../../../src/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.sol"; -import {Float} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; -import {LibTOFUTokenDecimals} from "rain.tofu.erc20-decimals/lib/LibTOFUTokenDecimals.sol"; +import {Float} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; +import {LibTOFUTokenDecimals} from "rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol"; import {LibRaindexDeploy} from "../../../src/lib/deploy/LibRaindexDeploy.sol"; import {MockToken} from "test/util/concrete/MockToken.sol"; import {MockRouteProcessor} from "test/util/concrete/MockRouteProcessor.sol"; diff --git a/test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.nonStandardDecimals.t.sol b/test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.nonStandardDecimals.t.sol index aecc70a974..9b14299a9a 100644 --- a/test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.nonStandardDecimals.t.sol +++ b/test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.nonStandardDecimals.t.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import {RouteProcessorRaindexV6ArbOrderTaker} from "../../../src/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.sol"; import { @@ -16,14 +16,14 @@ import { SignedContextV1, TaskV2, Float -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IInterpreterV4} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; -import {LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; -import {LibTOFUTokenDecimals} from "rain.tofu.erc20-decimals/lib/LibTOFUTokenDecimals.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IInterpreterV4} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; +import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; +import {LibTOFUTokenDecimals} from "rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol"; import {LibRaindexDeploy} from "../../../src/lib/deploy/LibRaindexDeploy.sol"; -import {LibInterpreterDeploy} from "rain.interpreter/lib/deploy/LibInterpreterDeploy.sol"; +import {LibInterpreterDeploy} from "rainlang-0.1.2/src/lib/deploy/LibInterpreterDeploy.sol"; import {MockToken} from "test/util/concrete/MockToken.sol"; import {MockRouteProcessor} from "test/util/concrete/MockRouteProcessor.sol"; import {RealisticOrderTakerMockRaindex} from "test/util/concrete/RealisticOrderTakerMockRaindex.sol"; diff --git a/test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.onTakeOrders2.t.sol b/test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.onTakeOrders2.t.sol index 0e5bfa1570..7d353ee33e 100644 --- a/test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.onTakeOrders2.t.sol +++ b/test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.onTakeOrders2.t.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import {RouteProcessorRaindexV6ArbOrderTaker} from "../../../src/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.sol"; import { @@ -16,12 +16,12 @@ import { SignedContextV1, TaskV2, Float -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IInterpreterV4} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; -import {LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; -import {LibTOFUTokenDecimals} from "rain.tofu.erc20-decimals/lib/LibTOFUTokenDecimals.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IInterpreterV4} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; +import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; +import {LibTOFUTokenDecimals} from "rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol"; import {LibRaindexDeploy} from "../../../src/lib/deploy/LibRaindexDeploy.sol"; import {MockToken} from "test/util/concrete/MockToken.sol"; import {MockRouteProcessor} from "test/util/concrete/MockRouteProcessor.sol"; diff --git a/test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.onTakeOrders2Direct.t.sol b/test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.onTakeOrders2Direct.t.sol index 75c84c4ca1..b9055f0e3b 100644 --- a/test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.onTakeOrders2Direct.t.sol +++ b/test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.onTakeOrders2Direct.t.sol @@ -2,12 +2,12 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {RouteProcessorRaindexV6ArbOrderTaker} from "../../../src/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.sol"; -import {Float} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; -import {LibTOFUTokenDecimals} from "rain.tofu.erc20-decimals/lib/LibTOFUTokenDecimals.sol"; +import {Float} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; +import {LibTOFUTokenDecimals} from "rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol"; import {LibRaindexDeploy} from "../../../src/lib/deploy/LibRaindexDeploy.sol"; import {MockToken} from "test/util/concrete/MockToken.sol"; import {MockRouteProcessor} from "test/util/concrete/MockRouteProcessor.sol"; diff --git a/test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.sender.t.sol b/test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.sender.t.sol index 0355db8a1b..6dba848f7c 100644 --- a/test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.sender.t.sol +++ b/test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.sender.t.sol @@ -14,10 +14,10 @@ import { IInterpreterStoreV3, TaskV2, SignedContextV1 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import {RouteProcessorRaindexV6ArbOrderTaker} from "../../../src/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.sol"; -import {LibDecimalFloat, Float} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {LibInterpreterDeploy} from "rain.interpreter/lib/deploy/LibInterpreterDeploy.sol"; +import {LibDecimalFloat, Float} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {LibInterpreterDeploy} from "rainlang-0.1.2/src/lib/deploy/LibInterpreterDeploy.sol"; contract RouteProcessorRaindexV6ArbOrderTakerSenderTest is RouteProcessorRaindexV6ArbOrderTakerTest { /// forge-config: default.fuzz.runs = 100 diff --git a/test/concrete/parser/RaindexV6SubParser.describedByMeta.t.sol b/test/concrete/parser/RaindexV6SubParser.describedByMeta.t.sol index 64cab2cfb2..3434803a75 100644 --- a/test/concrete/parser/RaindexV6SubParser.describedByMeta.t.sol +++ b/test/concrete/parser/RaindexV6SubParser.describedByMeta.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {RaindexV6SubParser} from "../../../src/concrete/parser/RaindexV6SubParser.sol"; import {LibRaindexDeploy} from "../../../src/lib/deploy/LibRaindexDeploy.sol"; import {LibEtchRaindex} from "test/util/lib/LibEtchRaindex.sol"; diff --git a/test/concrete/parser/RaindexV6SubParser.ierc165.t.sol b/test/concrete/parser/RaindexV6SubParser.ierc165.t.sol index 819c9d57c9..b30edef316 100644 --- a/test/concrete/parser/RaindexV6SubParser.ierc165.t.sol +++ b/test/concrete/parser/RaindexV6SubParser.ierc165.t.sol @@ -2,14 +2,14 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {IERC165} from "openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"; +import {IERC165} from "@openzeppelin-contracts-5.6.1/utils/introspection/IERC165.sol"; import {RaindexV6SubParser} from "../../../src/concrete/parser/RaindexV6SubParser.sol"; -import {ISubParserV4} from "rain.interpreter.interface/interface/ISubParserV4.sol"; -import {IDescribedByMetaV1} from "rain.metadata/interface/IDescribedByMetaV1.sol"; -import {IParserToolingV1} from "rain.sol.codegen/interface/IParserToolingV1.sol"; -import {ISubParserToolingV1} from "rain.sol.codegen/interface/ISubParserToolingV1.sol"; +import {ISubParserV4} from "rain-interpreter-interface-0.1.0/src/interface/ISubParserV4.sol"; +import {IDescribedByMetaV1} from "rain-metadata-0.1.0/src/interface/IDescribedByMetaV1.sol"; +import {IParserToolingV1} from "rain-sol-codegen-0.1.0/src/interface/IParserToolingV1.sol"; +import {ISubParserToolingV1} from "rain-sol-codegen-0.1.0/src/interface/ISubParserToolingV1.sol"; import {LibRaindexDeploy} from "../../../src/lib/deploy/LibRaindexDeploy.sol"; import {LibEtchRaindex} from "test/util/lib/LibEtchRaindex.sol"; diff --git a/test/concrete/parser/RaindexV6SubParser.pointers.t.sol b/test/concrete/parser/RaindexV6SubParser.pointers.t.sol index e292cda33f..e321f4a93d 100644 --- a/test/concrete/parser/RaindexV6SubParser.pointers.t.sol +++ b/test/concrete/parser/RaindexV6SubParser.pointers.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import { LibRaindexSubParser, AuthoringMetaV2, @@ -14,7 +14,7 @@ import { SUB_PARSER_OPERAND_HANDLERS, RaindexV6SubParser } from "../../../src/concrete/parser/RaindexV6SubParser.sol"; -import {LibGenParseMeta} from "rain.interpreter.interface/lib/codegen/LibGenParseMeta.sol"; +import {LibGenParseMeta} from "rain-interpreter-interface-0.1.0/src/lib/codegen/LibGenParseMeta.sol"; import {LibRaindexDeploy} from "../../../src/lib/deploy/LibRaindexDeploy.sol"; import {LibEtchRaindex} from "test/util/lib/LibEtchRaindex.sol"; diff --git a/test/concrete/parser/RaindexV6SubParser.signedContext.t.sol b/test/concrete/parser/RaindexV6SubParser.signedContext.t.sol index 8925821aa7..fe70cfa5ce 100644 --- a/test/concrete/parser/RaindexV6SubParser.signedContext.t.sol +++ b/test/concrete/parser/RaindexV6SubParser.signedContext.t.sol @@ -2,10 +2,10 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {StackAllocationMismatch} from "rain.interpreter/error/ErrIntegrity.sol"; -import {ExpectedOperand, UnexpectedOperandValue} from "rain.interpreter/error/ErrParse.sol"; -import {Strings} from "openzeppelin-contracts/contracts/utils/Strings.sol"; -import {OpTest, StackItem} from "rain.interpreter/../test/abstract/OpTest.sol"; +import {StackAllocationMismatch} from "rainlang-0.1.2/src/error/ErrIntegrity.sol"; +import {ExpectedOperand, UnexpectedOperandValue} from "rainlang-0.1.2/src/error/ErrParse.sol"; +import {Strings} from "@openzeppelin-contracts-5.6.1/utils/Strings.sol"; +import {OpTest, StackItem} from "rainlang-0.1.2/src/../test/abstract/OpTest.sol"; import {LibRaindexSubParserContextFixture} from "test/util/fixture/LibRaindexSubParserContextFixture.sol"; import {LibRaindexDeploy} from "../../../src/lib/deploy/LibRaindexDeploy.sol"; import {LibEtchRaindex} from "test/util/lib/LibEtchRaindex.sol"; diff --git a/test/concrete/parser/RaindexV6SubParser.signers.t.sol b/test/concrete/parser/RaindexV6SubParser.signers.t.sol index 6249ebb3d0..1b90ab5739 100644 --- a/test/concrete/parser/RaindexV6SubParser.signers.t.sol +++ b/test/concrete/parser/RaindexV6SubParser.signers.t.sol @@ -2,10 +2,10 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {StackAllocationMismatch} from "rain.interpreter/error/ErrIntegrity.sol"; -import {ExpectedOperand, UnexpectedOperandValue} from "rain.interpreter/error/ErrParse.sol"; -import {OpTest, StackItem} from "rain.interpreter/../test/abstract/OpTest.sol"; -import {Strings} from "openzeppelin-contracts/contracts/utils/Strings.sol"; +import {StackAllocationMismatch} from "rainlang-0.1.2/src/error/ErrIntegrity.sol"; +import {ExpectedOperand, UnexpectedOperandValue} from "rainlang-0.1.2/src/error/ErrParse.sol"; +import {OpTest, StackItem} from "rainlang-0.1.2/src/../test/abstract/OpTest.sol"; +import {Strings} from "@openzeppelin-contracts-5.6.1/utils/Strings.sol"; import {LibRaindexSubParserContextFixture} from "test/util/fixture/LibRaindexSubParserContextFixture.sol"; import {LibRaindexDeploy} from "../../../src/lib/deploy/LibRaindexDeploy.sol"; import {LibEtchRaindex} from "test/util/lib/LibEtchRaindex.sol"; diff --git a/test/concrete/raindex/RaindexV6.addOrder.entask.t.sol b/test/concrete/raindex/RaindexV6.addOrder.entask.t.sol index 29cccbb270..8bac05aa73 100644 --- a/test/concrete/raindex/RaindexV6.addOrder.entask.t.sol +++ b/test/concrete/raindex/RaindexV6.addOrder.entask.t.sol @@ -9,11 +9,11 @@ import { TaskV2, OrderV4, SignedContextV1 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; import {LibOrder} from "../../../src/lib/LibOrder.sol"; -import {Strings} from "openzeppelin-contracts/contracts/utils/Strings.sol"; +import {Strings} from "@openzeppelin-contracts-5.6.1/utils/Strings.sol"; contract RaindexV6AddOrderEnactTest is RaindexV6ExternalRealTest { using LibOrder for OrderV4; diff --git a/test/concrete/raindex/RaindexV6.addOrder.mock.t.sol b/test/concrete/raindex/RaindexV6.addOrder.mock.t.sol index c7a3014d28..72305201a8 100644 --- a/test/concrete/raindex/RaindexV6.addOrder.mock.t.sol +++ b/test/concrete/raindex/RaindexV6.addOrder.mock.t.sol @@ -3,11 +3,11 @@ pragma solidity =0.8.25; import {RaindexV6ExternalMockTest} from "test/util/abstract/RaindexV6ExternalMockTest.sol"; -import {OrderConfigV4, OrderV4, IOV2, EvaluableV4, TaskV2} from "rain.raindex.interface/interface/IRaindexV6.sol"; +import {OrderConfigV4, OrderV4, IOV2, EvaluableV4, TaskV2} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; -import {NotRainMetaV1, META_MAGIC_NUMBER_V1} from "rain.metadata/interface/unstable/IMetaV1_2.sol"; -import {LibMeta} from "rain.metadata/lib/LibMeta.sol"; -import {IExpressionDeployerV3} from "rain.interpreter.interface/interface/deprecated/v1/IExpressionDeployerV3.sol"; +import {NotRainMetaV1, META_MAGIC_NUMBER_V1} from "rain-metadata-0.1.0/src/interface/unstable/IMetaV1_2.sol"; +import {LibMeta} from "rain-metadata-0.1.0/src/lib/LibMeta.sol"; +import {IExpressionDeployerV3} from "rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IExpressionDeployerV3.sol"; /// @title RaindexV6AddOrderMockTest /// @notice Tests the addOrder function of the RaindexV6 contract. diff --git a/test/concrete/raindex/RaindexV6.addOrder.nonce.t.sol b/test/concrete/raindex/RaindexV6.addOrder.nonce.t.sol index f559896db3..54f4dfdb08 100644 --- a/test/concrete/raindex/RaindexV6.addOrder.nonce.t.sol +++ b/test/concrete/raindex/RaindexV6.addOrder.nonce.t.sol @@ -3,7 +3,7 @@ pragma solidity =0.8.25; import {RaindexV6ExternalRealTest} from "test/util/abstract/RaindexV6ExternalRealTest.sol"; -import {OrderConfigV4, OrderV4, EvaluableV4, TaskV2} from "rain.raindex.interface/interface/IRaindexV6.sol"; +import {OrderConfigV4, OrderV4, EvaluableV4, TaskV2} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; import {LibOrder} from "../../../src/lib/LibOrder.sol"; diff --git a/test/concrete/raindex/RaindexV6.addOrder.owner.t.sol b/test/concrete/raindex/RaindexV6.addOrder.owner.t.sol index cbd12f1d90..da0257f7aa 100644 --- a/test/concrete/raindex/RaindexV6.addOrder.owner.t.sol +++ b/test/concrete/raindex/RaindexV6.addOrder.owner.t.sol @@ -3,7 +3,7 @@ pragma solidity =0.8.25; import {RaindexV6ExternalRealTest} from "test/util/abstract/RaindexV6ExternalRealTest.sol"; -import {OrderConfigV4, OrderV4, EvaluableV4, TaskV2} from "rain.raindex.interface/interface/IRaindexV6.sol"; +import {OrderConfigV4, OrderV4, EvaluableV4, TaskV2} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; import {LibOrder} from "../../../src/lib/LibOrder.sol"; diff --git a/test/concrete/raindex/RaindexV6.addOrder.t.sol b/test/concrete/raindex/RaindexV6.addOrder.t.sol index 05f32c5b01..e4fa357866 100644 --- a/test/concrete/raindex/RaindexV6.addOrder.t.sol +++ b/test/concrete/raindex/RaindexV6.addOrder.t.sol @@ -4,8 +4,8 @@ pragma solidity =0.8.25; import {RaindexV6ExternalRealTest} from "test/util/abstract/RaindexV6ExternalRealTest.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; -import {OrderConfigV4, EvaluableV4, TaskV2} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IParserV2} from "rain.interpreter.interface/interface/IParserV2.sol"; +import {OrderConfigV4, EvaluableV4, TaskV2} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IParserV2} from "rain-interpreter-interface-0.1.0/src/interface/IParserV2.sol"; import {UnsupportedCalculateOutputs} from "../../../src/concrete/raindex/RaindexV6.sol"; /// @title RaindexV6AddOrderTest diff --git a/test/concrete/raindex/RaindexV6.clear.badStack.t.sol b/test/concrete/raindex/RaindexV6.clear.badStack.t.sol index 02fe1f2156..328949d627 100644 --- a/test/concrete/raindex/RaindexV6.clear.badStack.t.sol +++ b/test/concrete/raindex/RaindexV6.clear.badStack.t.sol @@ -11,9 +11,9 @@ import { ClearConfigV2, SignedContextV1, TaskV2 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import {UnsupportedCalculateOutputs} from "../../../src/concrete/raindex/RaindexV6.sol"; -import {IERC20Metadata} from "openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol"; +import {IERC20Metadata} from "@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol"; contract RaindexV6ClearOrderBadStackTest is RaindexV6ExternalRealTest { function checkBadStack( diff --git a/test/concrete/raindex/RaindexV6.clear.context.t.sol b/test/concrete/raindex/RaindexV6.clear.context.t.sol index 5b5f4eed74..0e36e3f790 100644 --- a/test/concrete/raindex/RaindexV6.clear.context.t.sol +++ b/test/concrete/raindex/RaindexV6.clear.context.t.sol @@ -12,13 +12,13 @@ import { SignedContextV1, IOV2, EvaluableV4 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import {REVERTING_MOCK_BYTECODE} from "test/util/lib/LibTestConstants.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; -import {Strings} from "openzeppelin-contracts/contracts/utils/Strings.sol"; -import {LibDecimalFloat, Float} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {IERC20Metadata} from "openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol"; +import {Strings} from "@openzeppelin-contracts-5.6.1/utils/Strings.sol"; +import {LibDecimalFloat, Float} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {IERC20Metadata} from "@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol"; struct ClearContextVaultIds { bytes32 aliceInputVaultId; diff --git a/test/concrete/raindex/RaindexV6.clear.handleIO.revert.t.sol b/test/concrete/raindex/RaindexV6.clear.handleIO.revert.t.sol index 2e05b98edf..1e71861f90 100644 --- a/test/concrete/raindex/RaindexV6.clear.handleIO.revert.t.sol +++ b/test/concrete/raindex/RaindexV6.clear.handleIO.revert.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Vm} from "forge-std/Vm.sol"; +import {Vm} from "forge-std-1.16.1/src/Vm.sol"; import {RaindexV6ExternalRealTest} from "test/util/abstract/RaindexV6ExternalRealTest.sol"; import { ClearConfigV2, @@ -13,9 +13,9 @@ import { SignedContextV1, TaskV2, Float -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {SourceIndexOutOfBounds} from "rain.interpreter.interface/error/ErrBytecode.sol"; -import {LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {SourceIndexOutOfBounds} from "rain-interpreter-interface-0.1.0/src/error/ErrBytecode.sol"; +import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; import {LibTestTakeOrder} from "test/util/lib/LibTestTakeOrder.sol"; /// @title RaindexV6ClearHandleIORevertTest diff --git a/test/concrete/raindex/RaindexV6.clear.mock.t.sol b/test/concrete/raindex/RaindexV6.clear.mock.t.sol index 27830a9d40..6ecab7bfe8 100644 --- a/test/concrete/raindex/RaindexV6.clear.mock.t.sol +++ b/test/concrete/raindex/RaindexV6.clear.mock.t.sol @@ -2,9 +2,9 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test, stdError} from "forge-std/Test.sol"; +import {Test, stdError} from "forge-std-1.16.1/src/Test.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import {RaindexV6ExternalMockTest} from "test/util/abstract/RaindexV6ExternalMockTest.sol"; import { OrderConfigV4, @@ -16,19 +16,19 @@ import { IInterpreterV4, TaskV2, Float -} from "rain.raindex.interface/interface/IRaindexV6.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; import {NotOrderOwner, StackItem, NegativeBounty, ClearZeroAmount} from "../../../src/concrete/raindex/RaindexV6.sol"; -import {LibNamespace} from "rain.interpreter.interface/lib/ns/LibNamespace.sol"; -import {StateNamespace, EvalV4, SourceIndexV2} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; +import {LibNamespace} from "rain-interpreter-interface-0.1.0/src/lib/ns/LibNamespace.sol"; +import {StateNamespace, EvalV4, SourceIndexV2} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; import { LibFixedPointDecimalArithmeticOpenZeppelin -} from "rain.math.fixedpoint/lib/LibFixedPointDecimalArithmeticOpenZeppelin.sol"; -import {Math} from "openzeppelin-contracts/contracts/utils/math/Math.sol"; -import {LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; +} from "rain-math-fixedpoint-0.1.0/src/lib/LibFixedPointDecimalArithmeticOpenZeppelin.sol"; +import {Math} from "@openzeppelin-contracts-4.8.3/utils/math/Math.sol"; +import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; -import {LibFormatDecimalFloat} from "rain.math.float/lib/format/LibFormatDecimalFloat.sol"; -import {console2} from "forge-std/console2.sol"; +import {LibFormatDecimalFloat} from "rain-math-float-0.1.1/src/lib/format/LibFormatDecimalFloat.sol"; +import {console2} from "forge-std-1.16.1/src/console2.sol"; contract MockInterpreter { StackItem[] internal sStack; @@ -789,7 +789,7 @@ contract RaindexV6ClearTest is RaindexV6ExternalMockTest { ) external { // 0 tested separately. aliceIORatio18 = bound(aliceIORatio18, 1, 1e18); - bobIORatio18 = bound(bobIORatio18, 1e18, uint256(1e18).fixedPointDiv(aliceIORatio18, Math.Rounding.Floor)); + bobIORatio18 = bound(bobIORatio18, 1e18, uint256(1e18).fixedPointDiv(aliceIORatio18, Math.Rounding.Down)); Float aliceIORatio = LibDecimalFloat.fromFixedDecimalLosslessPacked(aliceIORatio18, 18); Float bobIORatio = LibDecimalFloat.fromFixedDecimalLosslessPacked(bobIORatio18, 18); diff --git a/test/concrete/raindex/RaindexV6.clear.sameOwner.t.sol b/test/concrete/raindex/RaindexV6.clear.sameOwner.t.sol index 90d14be257..1d15a95058 100644 --- a/test/concrete/raindex/RaindexV6.clear.sameOwner.t.sol +++ b/test/concrete/raindex/RaindexV6.clear.sameOwner.t.sol @@ -5,8 +5,8 @@ pragma solidity =0.8.25; import {RaindexV6ExternalRealTest} from "test/util/abstract/RaindexV6ExternalRealTest.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; import {LibTestTakeOrder} from "test/util/lib/LibTestTakeOrder.sol"; -import {OrderConfigV4, OrderV4, ClearConfigV2, TaskV2} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {SignedContextV1} from "rain.interpreter.interface/interface/deprecated/v1/IInterpreterCallerV2.sol"; +import {OrderConfigV4, OrderV4, ClearConfigV2, TaskV2} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {SignedContextV1} from "rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterCallerV2.sol"; import {SameOwner} from "../../../src/concrete/raindex/RaindexV6.sol"; /// Clearing two orders with the same owner must revert with SameOwner. diff --git a/test/concrete/raindex/RaindexV6.clear.sameToken.t.sol b/test/concrete/raindex/RaindexV6.clear.sameToken.t.sol index 4521230c51..df59bdf890 100644 --- a/test/concrete/raindex/RaindexV6.clear.sameToken.t.sol +++ b/test/concrete/raindex/RaindexV6.clear.sameToken.t.sol @@ -10,7 +10,7 @@ import { ClearConfigV2, SignedContextV1, TaskV2 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; import {TokenSelfTrade} from "../../../src/concrete/raindex/RaindexV6.sol"; diff --git a/test/concrete/raindex/RaindexV6.clear.zeroAmount.t.sol b/test/concrete/raindex/RaindexV6.clear.zeroAmount.t.sol index 629c484a51..4f1920979d 100644 --- a/test/concrete/raindex/RaindexV6.clear.zeroAmount.t.sol +++ b/test/concrete/raindex/RaindexV6.clear.zeroAmount.t.sol @@ -9,7 +9,7 @@ import { TaskV2, SignedContextV1, ClearConfigV2 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; import {ClearZeroAmount} from "../../../src/concrete/raindex/RaindexV6.sol"; diff --git a/test/concrete/raindex/RaindexV6.deposit.entask.t.sol b/test/concrete/raindex/RaindexV6.deposit.entask.t.sol index ae7efa56ba..e076ee631a 100644 --- a/test/concrete/raindex/RaindexV6.deposit.entask.t.sol +++ b/test/concrete/raindex/RaindexV6.deposit.entask.t.sol @@ -3,12 +3,12 @@ pragma solidity =0.8.25; import {RaindexV6ExternalRealTest, LibDecimalFloat, Float} from "test/util/abstract/RaindexV6ExternalRealTest.sol"; -import {OrderConfigV4, EvaluableV4, TaskV2, SignedContextV1} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; -import {IERC20Metadata} from "openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol"; -import {LibFormatDecimalFloat} from "rain.math.float/lib/format/LibFormatDecimalFloat.sol"; +import {OrderConfigV4, EvaluableV4, TaskV2, SignedContextV1} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {IERC20Metadata} from "@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol"; +import {LibFormatDecimalFloat} from "rain-math-float-0.1.1/src/lib/format/LibFormatDecimalFloat.sol"; -import {Strings} from "openzeppelin-contracts/contracts/utils/Strings.sol"; +import {Strings} from "@openzeppelin-contracts-5.6.1/utils/Strings.sol"; contract RaindexV6DepositEnactTest is RaindexV6ExternalRealTest { using Strings for address; diff --git a/test/concrete/raindex/RaindexV6.deposit.t.sol b/test/concrete/raindex/RaindexV6.deposit.t.sol index 9c3edaaf75..5c82c5710a 100644 --- a/test/concrete/raindex/RaindexV6.deposit.t.sol +++ b/test/concrete/raindex/RaindexV6.deposit.t.sol @@ -2,16 +2,16 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {stdError} from "forge-std/Test.sol"; +import {stdError} from "forge-std-1.16.1/src/Test.sol"; import {REVERTING_MOCK_BYTECODE, CONSOLE_ADDRESS} from "test/util/lib/LibTestConstants.sol"; import {RaindexV6ExternalMockTest} from "test/util/abstract/RaindexV6ExternalMockTest.sol"; -import {TaskV2, EvaluableV4, IRaindexV6} from "rain.raindex.interface/interface/IRaindexV6.sol"; +import {TaskV2, EvaluableV4, IRaindexV6} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import {Reenteroor} from "test/util/concrete/Reenteroor.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; -import {LibDecimalFloat, Float} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {IERC20Metadata} from "openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol"; -import {ReentrancyGuard} from "openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol"; -import {SafeERC20} from "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {LibDecimalFloat, Float} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {IERC20Metadata} from "@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol"; +import {ReentrancyGuard} from "@openzeppelin-contracts-5.6.1/utils/ReentrancyGuard.sol"; +import {SafeERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol"; /// @title RaindexV6DepositTest /// Tests depositing to a raindex. diff --git a/test/concrete/raindex/RaindexV6.entask.t.sol b/test/concrete/raindex/RaindexV6.entask.t.sol index e8ef5bbff2..9401d2741b 100644 --- a/test/concrete/raindex/RaindexV6.entask.t.sol +++ b/test/concrete/raindex/RaindexV6.entask.t.sol @@ -3,7 +3,7 @@ pragma solidity =0.8.25; import {RaindexV6ExternalRealTest} from "test/util/abstract/RaindexV6ExternalRealTest.sol"; -import {OrderConfigV4, EvaluableV4, TaskV2, SignedContextV1} from "rain.raindex.interface/interface/IRaindexV6.sol"; +import {OrderConfigV4, EvaluableV4, TaskV2, SignedContextV1} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; contract RaindexV6EnactTest is RaindexV6ExternalRealTest { function checkReentrancyRW() internal view { diff --git a/test/concrete/raindex/RaindexV6.quote.sameToken.t.sol b/test/concrete/raindex/RaindexV6.quote.sameToken.t.sol index e0a1a0b975..b6dc3e684f 100644 --- a/test/concrete/raindex/RaindexV6.quote.sameToken.t.sol +++ b/test/concrete/raindex/RaindexV6.quote.sameToken.t.sol @@ -3,9 +3,9 @@ pragma solidity =0.8.25; import {RaindexV6ExternalRealTest} from "test/util/abstract/RaindexV6ExternalRealTest.sol"; -import {QuoteV2, OrderConfigV4, TaskV2} from "rain.raindex.interface/interface/IRaindexV6.sol"; +import {QuoteV2, OrderConfigV4, TaskV2} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import {TokenSelfTrade} from "../../../src/concrete/raindex/RaindexV6.sol"; -import {Float} from "rain.math.float/lib/LibDecimalFloat.sol"; +import {Float} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; /// @title RaindexV6QuoteSameTokenTest contract RaindexV6QuoteSameTokenTest is RaindexV6ExternalRealTest { diff --git a/test/concrete/raindex/RaindexV6.quote.t.sol b/test/concrete/raindex/RaindexV6.quote.t.sol index 4de0841a30..b4f10b852e 100644 --- a/test/concrete/raindex/RaindexV6.quote.t.sol +++ b/test/concrete/raindex/RaindexV6.quote.t.sol @@ -11,15 +11,15 @@ import { TaskV2, OrderV4, SignedContextV1 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; -import {IERC20Metadata} from "openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {IERC20Metadata} from "@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol"; import {TokenSelfTrade} from "../../../src/concrete/raindex/RaindexV6.sol"; -import {Float, LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {Strings} from "openzeppelin-contracts/contracts/utils/Strings.sol"; +import {Float, LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {Strings} from "@openzeppelin-contracts-5.6.1/utils/Strings.sol"; -import {LibFormatDecimalFloat} from "rain.math.float/lib/format/LibFormatDecimalFloat.sol"; +import {LibFormatDecimalFloat} from "rain-math-float-0.1.1/src/lib/format/LibFormatDecimalFloat.sol"; /// @title RaindexV6QuoteTest contract RaindexV6QuoteTest is RaindexV6ExternalRealTest { diff --git a/test/concrete/raindex/RaindexV6.removeOrder.entask.t.sol b/test/concrete/raindex/RaindexV6.removeOrder.entask.t.sol index 48840b31a5..73f0d9699d 100644 --- a/test/concrete/raindex/RaindexV6.removeOrder.entask.t.sol +++ b/test/concrete/raindex/RaindexV6.removeOrder.entask.t.sol @@ -9,11 +9,11 @@ import { OrderV4, TaskV2, SignedContextV1 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; import {LibOrder} from "../../../src/lib/LibOrder.sol"; -import {Strings} from "openzeppelin-contracts/contracts/utils/Strings.sol"; +import {Strings} from "@openzeppelin-contracts-5.6.1/utils/Strings.sol"; contract RaindexV6RemoveOrderEnactTest is RaindexV6ExternalRealTest { using LibOrder for OrderV4; diff --git a/test/concrete/raindex/RaindexV6.removeOrder.mock.t.sol b/test/concrete/raindex/RaindexV6.removeOrder.mock.t.sol index 62524a3a2e..74ab223a6d 100644 --- a/test/concrete/raindex/RaindexV6.removeOrder.mock.t.sol +++ b/test/concrete/raindex/RaindexV6.removeOrder.mock.t.sol @@ -3,7 +3,7 @@ pragma solidity =0.8.25; import {RaindexV6ExternalMockTest} from "test/util/abstract/RaindexV6ExternalMockTest.sol"; -import {OrderConfigV4, OrderV4, EvaluableV4, TaskV2} from "rain.raindex.interface/interface/IRaindexV6.sol"; +import {OrderConfigV4, OrderV4, EvaluableV4, TaskV2} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; import {NotOrderOwner} from "../../../src/concrete/raindex/RaindexV6.sol"; diff --git a/test/concrete/raindex/RaindexV6.removeOrder.owner.t.sol b/test/concrete/raindex/RaindexV6.removeOrder.owner.t.sol index a45243d060..ee801705ba 100644 --- a/test/concrete/raindex/RaindexV6.removeOrder.owner.t.sol +++ b/test/concrete/raindex/RaindexV6.removeOrder.owner.t.sol @@ -3,7 +3,7 @@ pragma solidity =0.8.25; import {RaindexV6ExternalRealTest} from "test/util/abstract/RaindexV6ExternalRealTest.sol"; -import {OrderConfigV4, OrderV4, EvaluableV4, TaskV2} from "rain.raindex.interface/interface/IRaindexV6.sol"; +import {OrderConfigV4, OrderV4, EvaluableV4, TaskV2} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; import {LibOrder} from "../../../src/lib/LibOrder.sol"; import {NotOrderOwner} from "../../../src/concrete/raindex/RaindexV6.sol"; diff --git a/test/concrete/raindex/RaindexV6.takeOrder.badStack.t.sol b/test/concrete/raindex/RaindexV6.takeOrder.badStack.t.sol index fe8a067366..c009319168 100644 --- a/test/concrete/raindex/RaindexV6.takeOrder.badStack.t.sol +++ b/test/concrete/raindex/RaindexV6.takeOrder.badStack.t.sol @@ -5,7 +5,7 @@ pragma solidity =0.8.25; import {RaindexV6ExternalRealTest} from "test/util/abstract/RaindexV6ExternalRealTest.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; import {LibTestTakeOrder} from "test/util/lib/LibTestTakeOrder.sol"; -import {OrderConfigV4, OrderV4, TaskV2, TakeOrdersConfigV5} from "rain.raindex.interface/interface/IRaindexV6.sol"; +import {OrderConfigV4, OrderV4, TaskV2, TakeOrdersConfigV5} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import {UnsupportedCalculateOutputs} from "../../../src/concrete/raindex/RaindexV6.sol"; contract RaindexV6TakeOrderBadStackTest is RaindexV6ExternalRealTest { diff --git a/test/concrete/raindex/RaindexV6.takeOrder.exceedsMaxRatio.t.sol b/test/concrete/raindex/RaindexV6.takeOrder.exceedsMaxRatio.t.sol index 2e3c6a9572..637e0eb6a6 100644 --- a/test/concrete/raindex/RaindexV6.takeOrder.exceedsMaxRatio.t.sol +++ b/test/concrete/raindex/RaindexV6.takeOrder.exceedsMaxRatio.t.sol @@ -2,11 +2,11 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import {RaindexV6ExternalRealTest} from "test/util/abstract/RaindexV6ExternalRealTest.sol"; import {LibTestTakeOrder} from "test/util/lib/LibTestTakeOrder.sol"; -import {OrderV4, TakeOrdersConfigV5, TaskV2, IRaindexV6} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {Float, LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; +import {OrderV4, TakeOrdersConfigV5, TaskV2, IRaindexV6} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {Float, LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; import {LibOrder} from "../../../src/lib/LibOrder.sol"; /// When an order's IORatio exceeds the taker's maximumIORatio, the order diff --git a/test/concrete/raindex/RaindexV6.takeOrder.handleIO.revert.t.sol b/test/concrete/raindex/RaindexV6.takeOrder.handleIO.revert.t.sol index aef659267f..4eb6bf15df 100644 --- a/test/concrete/raindex/RaindexV6.takeOrder.handleIO.revert.t.sol +++ b/test/concrete/raindex/RaindexV6.takeOrder.handleIO.revert.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Vm} from "forge-std/Vm.sol"; +import {Vm} from "forge-std-1.16.1/src/Vm.sol"; import {RaindexV6ExternalRealTest, IERC20} from "test/util/abstract/RaindexV6ExternalRealTest.sol"; import { OrderV4, @@ -12,10 +12,10 @@ import { TakeOrdersConfigV5, EvaluableV4, TaskV2 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {SourceIndexOutOfBounds} from "rain.interpreter.interface/error/ErrBytecode.sol"; -import {Float, LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {IERC20Metadata} from "openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {SourceIndexOutOfBounds} from "rain-interpreter-interface-0.1.0/src/error/ErrBytecode.sol"; +import {Float, LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {IERC20Metadata} from "@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol"; import {LibTestTakeOrder} from "test/util/lib/LibTestTakeOrder.sol"; /// @title RaindexV6TakeOrderHandleIORevertTest diff --git a/test/concrete/raindex/RaindexV6.takeOrder.maximumInput.t.sol b/test/concrete/raindex/RaindexV6.takeOrder.maximumInput.t.sol index 62a3031de5..e5193bf570 100644 --- a/test/concrete/raindex/RaindexV6.takeOrder.maximumInput.t.sol +++ b/test/concrete/raindex/RaindexV6.takeOrder.maximumInput.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import {RaindexV6ExternalRealTest, Vm} from "test/util/abstract/RaindexV6ExternalRealTest.sol"; import { OrderV4, @@ -13,12 +13,12 @@ import { OrderConfigV4, TaskV2, IRaindexV6 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {SignedContextV1} from "rain.interpreter.interface/interface/deprecated/v1/IInterpreterCallerV2.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {SignedContextV1} from "rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterCallerV2.sol"; import {LibTestTakeOrder} from "test/util/lib/LibTestTakeOrder.sol"; -import {Float, LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {LibFormatDecimalFloat} from "rain.math.float/lib/format/LibFormatDecimalFloat.sol"; +import {Float, LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {LibFormatDecimalFloat} from "rain-math-float-0.1.1/src/lib/format/LibFormatDecimalFloat.sol"; contract RaindexV6TakeOrderMaximumInputTest is RaindexV6ExternalRealTest { using LibDecimalFloat for Float; diff --git a/test/concrete/raindex/RaindexV6.takeOrder.maximumOutput.t.sol b/test/concrete/raindex/RaindexV6.takeOrder.maximumOutput.t.sol index 849679c663..bce96c5124 100644 --- a/test/concrete/raindex/RaindexV6.takeOrder.maximumOutput.t.sol +++ b/test/concrete/raindex/RaindexV6.takeOrder.maximumOutput.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import {RaindexV6ExternalRealTest, Vm} from "test/util/abstract/RaindexV6ExternalRealTest.sol"; import { OrderV4, @@ -14,9 +14,9 @@ import { IOV2, EvaluableV4, TaskV2 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import {LibTestTakeOrder} from "test/util/lib/LibTestTakeOrder.sol"; -import {LibDecimalFloat, Float} from "rain.math.float/lib/LibDecimalFloat.sol"; +import {LibDecimalFloat, Float} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; contract RaindexV6TakeOrderMaximumOutputTest is RaindexV6ExternalRealTest { using LibDecimalFloat for Float; diff --git a/test/concrete/raindex/RaindexV6.takeOrder.minimumIO.t.sol b/test/concrete/raindex/RaindexV6.takeOrder.minimumIO.t.sol index d1c1fbd9da..79d713fb79 100644 --- a/test/concrete/raindex/RaindexV6.takeOrder.minimumIO.t.sol +++ b/test/concrete/raindex/RaindexV6.takeOrder.minimumIO.t.sol @@ -2,11 +2,11 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import {RaindexV6ExternalRealTest} from "test/util/abstract/RaindexV6ExternalRealTest.sol"; import {LibTestTakeOrder} from "test/util/lib/LibTestTakeOrder.sol"; -import {OrderV4, TakeOrdersConfigV5, TaskV2} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {Float, LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; +import {OrderV4, TakeOrdersConfigV5, TaskV2} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {Float, LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; import {MinimumIO} from "../../../src/concrete/raindex/RaindexV6.sol"; /// When the total taker IO is less than the configured minimumIO, diff --git a/test/concrete/raindex/RaindexV6.takeOrder.noop.t.sol b/test/concrete/raindex/RaindexV6.takeOrder.noop.t.sol index 2d3a375364..6cae97d72f 100644 --- a/test/concrete/raindex/RaindexV6.takeOrder.noop.t.sol +++ b/test/concrete/raindex/RaindexV6.takeOrder.noop.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Vm} from "forge-std/Test.sol"; +import {Vm} from "forge-std-1.16.1/src/Test.sol"; import {LibOrder} from "../../../src/lib/LibOrder.sol"; import {LibTestTakeOrder} from "test/util/lib/LibTestTakeOrder.sol"; @@ -12,9 +12,9 @@ import { TakeOrdersConfigV5, TakeOrderConfigV4, SignedContextV1 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {Float, LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {IERC20Metadata} from "openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {Float, LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {IERC20Metadata} from "@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol"; /// @title RaindexV6TakeOrderNoopTest /// @notice A test harness for testing the Raindex takeOrder function. Focuses diff --git a/test/concrete/raindex/RaindexV6.takeOrder.precision.t.sol b/test/concrete/raindex/RaindexV6.takeOrder.precision.t.sol index d0bf1346bd..19b3f543b2 100644 --- a/test/concrete/raindex/RaindexV6.takeOrder.precision.t.sol +++ b/test/concrete/raindex/RaindexV6.takeOrder.precision.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Vm} from "forge-std/Test.sol"; +import {Vm} from "forge-std-1.16.1/src/Test.sol"; import {RaindexV6ExternalRealTest, IERC20} from "test/util/abstract/RaindexV6ExternalRealTest.sol"; import { OrderV4, @@ -12,9 +12,9 @@ import { OrderConfigV4, EvaluableV4, TaskV2 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {Float, LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {IERC20Metadata} from "openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {Float, LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {IERC20Metadata} from "@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol"; import {LibTestTakeOrder} from "test/util/lib/LibTestTakeOrder.sol"; /// @title RaindexV6TakeOrderPrecisionTest diff --git a/test/concrete/raindex/RaindexV6.takeOrder.sameToken.t.sol b/test/concrete/raindex/RaindexV6.takeOrder.sameToken.t.sol index 59d666a9cd..1a91ef9cea 100644 --- a/test/concrete/raindex/RaindexV6.takeOrder.sameToken.t.sol +++ b/test/concrete/raindex/RaindexV6.takeOrder.sameToken.t.sol @@ -10,10 +10,10 @@ import { TakeOrderConfigV4, SignedContextV1, TakeOrdersConfigV5 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; import {TokenSelfTrade} from "../../../src/concrete/raindex/RaindexV6.sol"; -import {Float, LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; +import {Float, LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; contract RaindexV6TakeOrderSameTokenTest is RaindexV6ExternalRealTest { /// forge-config: default.fuzz.runs = 10 diff --git a/test/concrete/raindex/RaindexV6.takeOrder.tokenMismatch.t.sol b/test/concrete/raindex/RaindexV6.takeOrder.tokenMismatch.t.sol index 9795eb73bf..0c144c626f 100644 --- a/test/concrete/raindex/RaindexV6.takeOrder.tokenMismatch.t.sol +++ b/test/concrete/raindex/RaindexV6.takeOrder.tokenMismatch.t.sol @@ -10,9 +10,9 @@ import { TakeOrdersConfigV5, EvaluableV4, SignedContextV1 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import {TokenMismatch} from "../../../src/concrete/raindex/RaindexV6.sol"; -import {Float, LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; +import {Float, LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; /// @title RaindexV6TakeOrderTokenMismatchTest /// @notice A test harness for testing the RaindexV6 takeOrder function. diff --git a/test/concrete/raindex/RaindexV6.vaultBalance.t.sol b/test/concrete/raindex/RaindexV6.vaultBalance.t.sol index fed27c63c1..9eda5a22f0 100644 --- a/test/concrete/raindex/RaindexV6.vaultBalance.t.sol +++ b/test/concrete/raindex/RaindexV6.vaultBalance.t.sol @@ -3,8 +3,8 @@ pragma solidity =0.8.25; import {RaindexV6ExternalMockTest} from "test/util/abstract/RaindexV6ExternalMockTest.sol"; -import {LibDecimalFloat, Float} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {IRaindexV6} from "rain.raindex.interface/interface/IRaindexV6.sol"; +import {LibDecimalFloat, Float} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {IRaindexV6} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; /// @title RaindexV6VaultBalanceTest /// Tests the basic functionality of reading from the vault balance. diff --git a/test/concrete/raindex/RaindexV6.withdraw.entask.t.sol b/test/concrete/raindex/RaindexV6.withdraw.entask.t.sol index e9ca0c4499..60c7148f84 100644 --- a/test/concrete/raindex/RaindexV6.withdraw.entask.t.sol +++ b/test/concrete/raindex/RaindexV6.withdraw.entask.t.sol @@ -3,16 +3,16 @@ pragma solidity =0.8.25; import {RaindexV6ExternalRealTest} from "test/util/abstract/RaindexV6ExternalRealTest.sol"; -import {OrderConfigV4, EvaluableV4, TaskV2, SignedContextV1} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; -import {IERC20Metadata} from "openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol"; +import {OrderConfigV4, EvaluableV4, TaskV2, SignedContextV1} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {IERC20Metadata} from "@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol"; -import {Strings} from "openzeppelin-contracts/contracts/utils/Strings.sol"; -import {LibDecimalFloat, Float} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {LibFormatDecimalFloat} from "rain.math.float/lib/format/LibFormatDecimalFloat.sol"; -import {ReentrancyGuard} from "openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol"; +import {Strings} from "@openzeppelin-contracts-5.6.1/utils/Strings.sol"; +import {LibDecimalFloat, Float} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {LibFormatDecimalFloat} from "rain-math-float-0.1.1/src/lib/format/LibFormatDecimalFloat.sol"; +import {ReentrancyGuard} from "@openzeppelin-contracts-5.6.1/utils/ReentrancyGuard.sol"; -import {console2} from "forge-std/Test.sol"; +import {console2} from "forge-std-1.16.1/src/Test.sol"; contract RaindexV6WithdrawEvalTest is RaindexV6ExternalRealTest { using Strings for address; diff --git a/test/concrete/raindex/RaindexV6.withdraw.t.sol b/test/concrete/raindex/RaindexV6.withdraw.t.sol index 5e62d7fdc3..e6a6898c02 100644 --- a/test/concrete/raindex/RaindexV6.withdraw.t.sol +++ b/test/concrete/raindex/RaindexV6.withdraw.t.sol @@ -2,18 +2,18 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {Math} from "openzeppelin-contracts/contracts/utils/math/Math.sol"; +import {Math} from "@openzeppelin-contracts-5.6.1/utils/math/Math.sol"; import {RaindexV6ExternalMockTest, REVERTING_MOCK_BYTECODE} from "test/util/abstract/RaindexV6ExternalMockTest.sol"; import {Reenteroor, IERC20} from "test/util/concrete/Reenteroor.sol"; -import {TaskV2, IRaindexV6} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IERC20Metadata} from "openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol"; +import {TaskV2, IRaindexV6} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IERC20Metadata} from "@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol"; -import {Float, LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {LibDecimalFloatImplementation} from "rain.math.float/lib/implementation/LibDecimalFloatImplementation.sol"; -import {SafeERC20} from "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; +import {Float, LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {LibDecimalFloatImplementation} from "rain-math-float-0.1.1/src/lib/implementation/LibDecimalFloatImplementation.sol"; +import {SafeERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol"; /// @title RaindexV6WithdrawTest /// Tests withdrawing from the raindex. diff --git a/test/lib/LibOrder.t.sol b/test/lib/LibOrder.t.sol index 52cd33c199..47ed1fc265 100644 --- a/test/lib/LibOrder.t.sol +++ b/test/lib/LibOrder.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {LibOrder, OrderV4} from "../../src/lib/LibOrder.sol"; diff --git a/test/lib/LibRaindexArb.finalizeArbNativeGas.t.sol b/test/lib/LibRaindexArb.finalizeArbNativeGas.t.sol index 4164191a42..19109a6dc7 100644 --- a/test/lib/LibRaindexArb.finalizeArbNativeGas.t.sol +++ b/test/lib/LibRaindexArb.finalizeArbNativeGas.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {LibTestArb, ArbResult} from "test/util/lib/LibTestArb.sol"; contract LibRaindexArbFinalizeArbNativeGasTest is Test { diff --git a/test/lib/LibRaindexArb.finalizeArbOutputTokenProfit.t.sol b/test/lib/LibRaindexArb.finalizeArbOutputTokenProfit.t.sol index c647d065c6..55790f933f 100644 --- a/test/lib/LibRaindexArb.finalizeArbOutputTokenProfit.t.sol +++ b/test/lib/LibRaindexArb.finalizeArbOutputTokenProfit.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {LibTestArb, ArbResult} from "test/util/lib/LibTestArb.sol"; contract LibRaindexArbFinalizeArbOutputTokenProfitTest is Test { diff --git a/test/lib/LibRaindexArb.finalizeArbTaskContext.t.sol b/test/lib/LibRaindexArb.finalizeArbTaskContext.t.sol index 041c8c3ee7..94bcef8ac0 100644 --- a/test/lib/LibRaindexArb.finalizeArbTaskContext.t.sol +++ b/test/lib/LibRaindexArb.finalizeArbTaskContext.t.sol @@ -2,12 +2,12 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; -import {EvaluableV4, SignedContextV1, TaskV2} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IInterpreterV4} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; -import {IParserV2} from "rain.interpreter.interface/interface/IParserV2.sol"; -import {LibInterpreterDeploy} from "rain.interpreter/lib/deploy/LibInterpreterDeploy.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; +import {EvaluableV4, SignedContextV1, TaskV2} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IInterpreterV4} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; +import {IParserV2} from "rain-interpreter-interface-0.1.0/src/interface/IParserV2.sol"; +import {LibInterpreterDeploy} from "rainlang-0.1.2/src/lib/deploy/LibInterpreterDeploy.sol"; import {LibTestArb, ArbResult} from "test/util/lib/LibTestArb.sol"; /// @title LibRaindexArbFinalizeArbTaskContextTest diff --git a/test/lib/LibRaindexArb.finalizeArbTokenTransfers.t.sol b/test/lib/LibRaindexArb.finalizeArbTokenTransfers.t.sol index b175424882..c09a9bddf3 100644 --- a/test/lib/LibRaindexArb.finalizeArbTokenTransfers.t.sol +++ b/test/lib/LibRaindexArb.finalizeArbTokenTransfers.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {LibTestArb, ArbResult} from "test/util/lib/LibTestArb.sol"; contract LibRaindexArbFinalizeArbTokenTransfersTest is Test { diff --git a/test/lib/deploy/LibRaindexDeploy.t.sol b/test/lib/deploy/LibRaindexDeploy.t.sol index 3e84ce7643..19a6e390fb 100644 --- a/test/lib/deploy/LibRaindexDeploy.t.sol +++ b/test/lib/deploy/LibRaindexDeploy.t.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; import {LibRaindexDeploy} from "../../../src/lib/deploy/LibRaindexDeploy.sol"; import {LibEtchRaindex} from "test/util/lib/LibEtchRaindex.sol"; import {RaindexV6} from "../../../src/concrete/raindex/RaindexV6.sol"; diff --git a/test/lib/deploy/LibRaindexDeployIsStartBlockArbitrum.t.sol b/test/lib/deploy/LibRaindexDeployIsStartBlockArbitrum.t.sol index baec111528..96a55ee562 100644 --- a/test/lib/deploy/LibRaindexDeployIsStartBlockArbitrum.t.sol +++ b/test/lib/deploy/LibRaindexDeployIsStartBlockArbitrum.t.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; import {LibRaindexDeploy} from "src/lib/deploy/LibRaindexDeploy.sol"; /// @title LibRaindexDeployIsStartBlockArbitrumTest diff --git a/test/lib/deploy/LibRaindexDeployIsStartBlockBase.t.sol b/test/lib/deploy/LibRaindexDeployIsStartBlockBase.t.sol index 41eeaa2914..c5977eded1 100644 --- a/test/lib/deploy/LibRaindexDeployIsStartBlockBase.t.sol +++ b/test/lib/deploy/LibRaindexDeployIsStartBlockBase.t.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; import {LibRaindexDeploy} from "src/lib/deploy/LibRaindexDeploy.sol"; /// @title LibRaindexDeployIsStartBlockBaseTest diff --git a/test/lib/deploy/LibRaindexDeployIsStartBlockFlare.t.sol b/test/lib/deploy/LibRaindexDeployIsStartBlockFlare.t.sol index 1d9fc39844..92b3f0b19c 100644 --- a/test/lib/deploy/LibRaindexDeployIsStartBlockFlare.t.sol +++ b/test/lib/deploy/LibRaindexDeployIsStartBlockFlare.t.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; import {LibRaindexDeploy} from "src/lib/deploy/LibRaindexDeploy.sol"; /// @title LibRaindexDeployIsStartBlockFlareTest diff --git a/test/lib/deploy/LibRaindexDeployIsStartBlockPolygon.t.sol b/test/lib/deploy/LibRaindexDeployIsStartBlockPolygon.t.sol index 62dc2b5437..4ef3f9efd3 100644 --- a/test/lib/deploy/LibRaindexDeployIsStartBlockPolygon.t.sol +++ b/test/lib/deploy/LibRaindexDeployIsStartBlockPolygon.t.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; import {LibRaindexDeploy} from "src/lib/deploy/LibRaindexDeploy.sol"; /// @title LibRaindexDeployIsStartBlockPolygonTest diff --git a/test/lib/deploy/LibRaindexDeployNetworksJsonAddresses.t.sol b/test/lib/deploy/LibRaindexDeployNetworksJsonAddresses.t.sol index e46e29effe..0c98a134c6 100644 --- a/test/lib/deploy/LibRaindexDeployNetworksJsonAddresses.t.sol +++ b/test/lib/deploy/LibRaindexDeployNetworksJsonAddresses.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {LibRaindexDeploy} from "src/lib/deploy/LibRaindexDeploy.sol"; /// @title LibRaindexDeployNetworksJsonAddressesTest diff --git a/test/lib/deploy/LibRaindexDeployNetworksJsonStartBlockArbitrum.t.sol b/test/lib/deploy/LibRaindexDeployNetworksJsonStartBlockArbitrum.t.sol index 81fc963ae7..b664449402 100644 --- a/test/lib/deploy/LibRaindexDeployNetworksJsonStartBlockArbitrum.t.sol +++ b/test/lib/deploy/LibRaindexDeployNetworksJsonStartBlockArbitrum.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {LibRaindexDeploy} from "src/lib/deploy/LibRaindexDeploy.sol"; /// @title LibRaindexDeployNetworksJsonStartBlockArbitrumTest diff --git a/test/lib/deploy/LibRaindexDeployNetworksJsonStartBlockBase.t.sol b/test/lib/deploy/LibRaindexDeployNetworksJsonStartBlockBase.t.sol index 87993b7e93..0c03b8f961 100644 --- a/test/lib/deploy/LibRaindexDeployNetworksJsonStartBlockBase.t.sol +++ b/test/lib/deploy/LibRaindexDeployNetworksJsonStartBlockBase.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {LibRaindexDeploy} from "src/lib/deploy/LibRaindexDeploy.sol"; /// @title LibRaindexDeployNetworksJsonStartBlockBaseTest diff --git a/test/lib/deploy/LibRaindexDeployNetworksJsonStartBlockFlare.t.sol b/test/lib/deploy/LibRaindexDeployNetworksJsonStartBlockFlare.t.sol index a0041760fd..1ea94abc8c 100644 --- a/test/lib/deploy/LibRaindexDeployNetworksJsonStartBlockFlare.t.sol +++ b/test/lib/deploy/LibRaindexDeployNetworksJsonStartBlockFlare.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {LibRaindexDeploy} from "src/lib/deploy/LibRaindexDeploy.sol"; /// @title LibRaindexDeployNetworksJsonStartBlockFlareTest diff --git a/test/lib/deploy/LibRaindexDeployNetworksJsonStartBlockPolygon.t.sol b/test/lib/deploy/LibRaindexDeployNetworksJsonStartBlockPolygon.t.sol index b65cc15131..ab59198dad 100644 --- a/test/lib/deploy/LibRaindexDeployNetworksJsonStartBlockPolygon.t.sol +++ b/test/lib/deploy/LibRaindexDeployNetworksJsonStartBlockPolygon.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {LibRaindexDeploy} from "src/lib/deploy/LibRaindexDeploy.sol"; /// @title LibRaindexDeployNetworksJsonStartBlockPolygonTest diff --git a/test/lib/deploy/LibRaindexDeployProd.t.sol b/test/lib/deploy/LibRaindexDeployProd.t.sol index 9a549f6383..d343231b83 100644 --- a/test/lib/deploy/LibRaindexDeployProd.t.sol +++ b/test/lib/deploy/LibRaindexDeployProd.t.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; import {LibRaindexDeploy} from "../../../src/lib/deploy/LibRaindexDeploy.sol"; /// @title LibRaindexDeployProdTest diff --git a/test/lib/deploy/LibRaindexDeployStartBlockArbitrum.t.sol b/test/lib/deploy/LibRaindexDeployStartBlockArbitrum.t.sol index fa26dc23fe..83c204f584 100644 --- a/test/lib/deploy/LibRaindexDeployStartBlockArbitrum.t.sol +++ b/test/lib/deploy/LibRaindexDeployStartBlockArbitrum.t.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; import {LibRaindexDeploy} from "src/lib/deploy/LibRaindexDeploy.sol"; /// @title LibRaindexDeployStartBlockArbitrumTest diff --git a/test/lib/deploy/LibRaindexDeployStartBlockBase.t.sol b/test/lib/deploy/LibRaindexDeployStartBlockBase.t.sol index f56ad4e7e1..1fccf7fb25 100644 --- a/test/lib/deploy/LibRaindexDeployStartBlockBase.t.sol +++ b/test/lib/deploy/LibRaindexDeployStartBlockBase.t.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; import {LibRaindexDeploy} from "src/lib/deploy/LibRaindexDeploy.sol"; /// @title LibRaindexDeployStartBlockBaseTest diff --git a/test/lib/deploy/LibRaindexDeployStartBlockFlare.t.sol b/test/lib/deploy/LibRaindexDeployStartBlockFlare.t.sol index 55673d3f7b..cbc40207e9 100644 --- a/test/lib/deploy/LibRaindexDeployStartBlockFlare.t.sol +++ b/test/lib/deploy/LibRaindexDeployStartBlockFlare.t.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; import {LibRaindexDeploy} from "src/lib/deploy/LibRaindexDeploy.sol"; /// @title LibRaindexDeployStartBlockFlareTest diff --git a/test/lib/deploy/LibRaindexDeployStartBlockPolygon.t.sol b/test/lib/deploy/LibRaindexDeployStartBlockPolygon.t.sol index 1ddbb0e80b..c23b905b17 100644 --- a/test/lib/deploy/LibRaindexDeployStartBlockPolygon.t.sol +++ b/test/lib/deploy/LibRaindexDeployStartBlockPolygon.t.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; import {LibRaindexDeploy} from "src/lib/deploy/LibRaindexDeploy.sol"; /// @title LibRaindexDeployStartBlockPolygonTest diff --git a/test/lib/deploy/LibRaindexDeploySubgraphYamlAddress.t.sol b/test/lib/deploy/LibRaindexDeploySubgraphYamlAddress.t.sol index 123640064e..dc58b7a884 100644 --- a/test/lib/deploy/LibRaindexDeploySubgraphYamlAddress.t.sol +++ b/test/lib/deploy/LibRaindexDeploySubgraphYamlAddress.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {LibRaindexDeploy} from "src/lib/deploy/LibRaindexDeploy.sol"; /// @title LibRaindexDeploySubgraphYamlAddressTest diff --git a/test/lib/deploy/LibRouteProcessor4CreationCode.t.sol b/test/lib/deploy/LibRouteProcessor4CreationCode.t.sol index 1f0be4c191..223aab8dc2 100644 --- a/test/lib/deploy/LibRouteProcessor4CreationCode.t.sol +++ b/test/lib/deploy/LibRouteProcessor4CreationCode.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {ROUTE_PROCESSOR_4_CREATION_CODE} from "../../../src/lib/deploy/LibRouteProcessor4CreationCode.sol"; /// @dev Known codehash of the RouteProcessor4 runtime bytecode, verified diff --git a/test/util/abstract/ArbTest.sol b/test/util/abstract/ArbTest.sol index a5632532f6..0e54e3a24f 100644 --- a/test/util/abstract/ArbTest.sol +++ b/test/util/abstract/ArbTest.sol @@ -2,9 +2,9 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {ERC20} from "openzeppelin-contracts/contracts/token/ERC20/ERC20.sol"; +import {ERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/ERC20.sol"; import {Refundoor} from "test/util/concrete/Refundoor.sol"; import { FlashLendingMockRaindex, @@ -14,8 +14,8 @@ import { SignedContextV1, EvaluableV4 } from "test/util/concrete/FlashLendingMockRaindex.sol"; -import {LibTOFUTokenDecimals} from "rain.tofu.erc20-decimals/lib/LibTOFUTokenDecimals.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; +import {LibTOFUTokenDecimals} from "rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; import {LibRaindexDeploy} from "../../../src/lib/deploy/LibRaindexDeploy.sol"; contract Token is ERC20 { diff --git a/test/util/abstract/IRaindexV6Stub.sol b/test/util/abstract/IRaindexV6Stub.sol index 040cefa158..472353660a 100644 --- a/test/util/abstract/IRaindexV6Stub.sol +++ b/test/util/abstract/IRaindexV6Stub.sol @@ -13,9 +13,9 @@ import { TaskV2, QuoteV2, Float -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IERC3156FlashLender} from "rain.raindex.interface/interface/ierc3156/IERC3156FlashLender.sol"; -import {IERC3156FlashBorrower} from "rain.raindex.interface/interface/ierc3156/IERC3156FlashBorrower.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IERC3156FlashLender} from "raindex-interface-0.1.1/src/interface/ierc3156/IERC3156FlashLender.sol"; +import {IERC3156FlashBorrower} from "raindex-interface-0.1.1/src/interface/ierc3156/IERC3156FlashBorrower.sol"; abstract contract IRaindexV6Stub is IRaindexV6 { /// @inheritdoc IRaindexV6 diff --git a/test/util/abstract/MockRaindexBase.sol b/test/util/abstract/MockRaindexBase.sol index d8e0a76328..46a4e85f2e 100644 --- a/test/util/abstract/MockRaindexBase.sol +++ b/test/util/abstract/MockRaindexBase.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; -import {SafeERC20} from "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {SafeERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol"; import { IRaindexV6, TakeOrdersConfigV5, @@ -14,8 +14,8 @@ import { TaskV2, QuoteV2, Float -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IERC3156FlashBorrower} from "rain.raindex.interface/interface/ierc3156/IERC3156FlashBorrower.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IERC3156FlashBorrower} from "raindex-interface-0.1.1/src/interface/ierc3156/IERC3156FlashBorrower.sol"; /// @dev Base for mock raindex contracts that stub all IRaindexV6 functions. /// Inheritors override flashLoan and/or takeOrders4 with real token transfers. diff --git a/test/util/abstract/RaindexV6ExternalMockTest.sol b/test/util/abstract/RaindexV6ExternalMockTest.sol index e7b4a54379..2abec798fc 100644 --- a/test/util/abstract/RaindexV6ExternalMockTest.sol +++ b/test/util/abstract/RaindexV6ExternalMockTest.sol @@ -2,24 +2,24 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {IMetaV1_2} from "rain.metadata/lib/LibMeta.sol"; +import {IMetaV1_2} from "rain-metadata-0.1.0/src/lib/LibMeta.sol"; import {REVERTING_MOCK_BYTECODE} from "test/util/lib/LibTestConstants.sol"; import {IRaindexV6Stub} from "test/util/abstract/IRaindexV6Stub.sol"; import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; -import {IInterpreterV4} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; -import {IRaindexV6, OrderConfigV4, OrderV4, TaskV2} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import {IInterpreterV4} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; +import {IRaindexV6, OrderConfigV4, OrderV4, TaskV2} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import {LibOrder} from "../../../src/lib/LibOrder.sol"; import {LibRaindexDeploy} from "../../../src/lib/deploy/LibRaindexDeploy.sol"; import {LibEtchRaindex} from "test/util/lib/LibEtchRaindex.sol"; -import {EvaluableV4} from "rain.interpreter.interface/interface/IInterpreterCallerV4.sol"; -import {IERC20Metadata} from "openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol"; -import {LibTOFUTokenDecimals} from "rain.tofu.erc20-decimals/lib/LibTOFUTokenDecimals.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; +import {EvaluableV4} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterCallerV4.sol"; +import {IERC20Metadata} from "@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol"; +import {LibTOFUTokenDecimals} from "rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; /// @title RaindexV6ExternalTest /// Abstract contract that performs common setup needed for testing a raindex diff --git a/test/util/abstract/RaindexV6ExternalRealTest.sol b/test/util/abstract/RaindexV6ExternalRealTest.sol index 6cb81b5d27..72d57a2cb1 100644 --- a/test/util/abstract/RaindexV6ExternalRealTest.sol +++ b/test/util/abstract/RaindexV6ExternalRealTest.sol @@ -2,25 +2,25 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test, Vm, console2} from "forge-std/Test.sol"; +import {Test, Vm, console2} from "forge-std-1.16.1/src/Test.sol"; import {REVERTING_MOCK_BYTECODE} from "test/util/lib/LibTestConstants.sol"; import {IRaindexV6Stub} from "test/util/abstract/IRaindexV6Stub.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; -import {IParserV2} from "rain.interpreter.interface/interface/IParserV2.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; +import {IParserV2} from "rain-interpreter-interface-0.1.0/src/interface/IParserV2.sol"; import { IRaindexV6, IInterpreterV4, TaskV2, EvaluableV4, SignedContextV1 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import {RaindexV6SubParser} from "../../../src/concrete/parser/RaindexV6SubParser.sol"; -import {IERC20Metadata} from "openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol"; -import {LibDecimalFloat, Float} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {LibTOFUTokenDecimals} from "rain.tofu.erc20-decimals/lib/LibTOFUTokenDecimals.sol"; -import {LibInterpreterDeploy} from "rain.interpreter/lib/deploy/LibInterpreterDeploy.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; +import {IERC20Metadata} from "@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol"; +import {LibDecimalFloat, Float} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {LibTOFUTokenDecimals} from "rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol"; +import {LibInterpreterDeploy} from "rainlang-0.1.2/src/lib/deploy/LibInterpreterDeploy.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; import {LibRaindexDeploy} from "../../../src/lib/deploy/LibRaindexDeploy.sol"; import {LibEtchRaindex} from "test/util/lib/LibEtchRaindex.sol"; diff --git a/test/util/abstract/RaindexV6SelfTest.sol b/test/util/abstract/RaindexV6SelfTest.sol index 12d4f096b4..c7b6525d69 100644 --- a/test/util/abstract/RaindexV6SelfTest.sol +++ b/test/util/abstract/RaindexV6SelfTest.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test} from "forge-std-1.16.1/src/Test.sol"; import {REVERTING_MOCK_BYTECODE} from "test/util/lib/LibTestConstants.sol"; diff --git a/test/util/abstract/RaindexV6SubParserContextTest.sol b/test/util/abstract/RaindexV6SubParserContextTest.sol index 0cb7768997..bda2062939 100644 --- a/test/util/abstract/RaindexV6SubParserContextTest.sol +++ b/test/util/abstract/RaindexV6SubParserContextTest.sol @@ -2,9 +2,9 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {StackAllocationMismatch} from "rain.interpreter/error/ErrIntegrity.sol"; -import {OpTest, StackItem} from "rain.interpreter/../test/abstract/OpTest.sol"; -import {Strings} from "openzeppelin-contracts/contracts/utils/Strings.sol"; +import {StackAllocationMismatch} from "rainlang-0.1.2/src/error/ErrIntegrity.sol"; +import {OpTest, StackItem} from "rainlang-0.1.2/src/../test/abstract/OpTest.sol"; +import {Strings} from "@openzeppelin-contracts-5.6.1/utils/Strings.sol"; import {LibRaindexSubParserContextFixture} from "test/util/fixture/LibRaindexSubParserContextFixture.sol"; import {LibRaindexDeploy} from "../../../src/lib/deploy/LibRaindexDeploy.sol"; import {LibEtchRaindex} from "test/util/lib/LibEtchRaindex.sol"; diff --git a/test/util/concrete/AllowanceCheckingExchange.sol b/test/util/concrete/AllowanceCheckingExchange.sol index 5d5a42e6f3..65d0fddf57 100644 --- a/test/util/concrete/AllowanceCheckingExchange.sol +++ b/test/util/concrete/AllowanceCheckingExchange.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; -import {SafeERC20} from "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {SafeERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol"; /// @dev Exchange that records the allowance it sees from its caller at call time. contract AllowanceCheckingExchange { diff --git a/test/util/concrete/ChildRaindexV6ArbTaskGated.sol b/test/util/concrete/ChildRaindexV6ArbTaskGated.sol index e4af8af415..0d5dd0679d 100644 --- a/test/util/concrete/ChildRaindexV6ArbTaskGated.sol +++ b/test/util/concrete/ChildRaindexV6ArbTaskGated.sol @@ -3,7 +3,7 @@ pragma solidity =0.8.25; import {RaindexV6ArbTaskGated, RaindexV6ArbConfig} from "../../../src/abstract/RaindexV6ArbTaskGated.sol"; -import {TaskV2} from "rain.raindex.interface/interface/IRaindexV6.sol"; +import {TaskV2} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; /// @dev We need a contract that is deployable in order to test the abstract /// base contract. Exposes `_checkTaskHash` as an external function. diff --git a/test/util/concrete/FlashLendingMockRaindex.sol b/test/util/concrete/FlashLendingMockRaindex.sol index 4697b3b2d8..b9c659dbd5 100644 --- a/test/util/concrete/FlashLendingMockRaindex.sol +++ b/test/util/concrete/FlashLendingMockRaindex.sol @@ -15,8 +15,8 @@ import { TaskV2, QuoteV2, Float -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IERC3156FlashBorrower} from "rain.raindex.interface/interface/ierc3156/IERC3156FlashBorrower.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IERC3156FlashBorrower} from "raindex-interface-0.1.1/src/interface/ierc3156/IERC3156FlashBorrower.sol"; contract FlashLendingMockRaindex is IRaindexV6 { function flashLoan(IERC3156FlashBorrower receiver, address token, uint256 amount, bytes calldata data) diff --git a/test/util/concrete/MaliciousLender.sol b/test/util/concrete/MaliciousLender.sol index 23531167db..c262c619e7 100644 --- a/test/util/concrete/MaliciousLender.sol +++ b/test/util/concrete/MaliciousLender.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; -import {SafeERC20} from "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {SafeERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol"; import {GenericPoolRaindexV6FlashBorrower} from "../../../src/concrete/arb/GenericPoolRaindexV6FlashBorrower.sol"; /// @dev Malicious lender that calls onFlashLoan directly, pretending to be a diff --git a/test/util/concrete/MaliciousRaindex.sol b/test/util/concrete/MaliciousRaindex.sol index f48ceffb55..d75d43942f 100644 --- a/test/util/concrete/MaliciousRaindex.sol +++ b/test/util/concrete/MaliciousRaindex.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; -import {IERC3156FlashBorrower} from "rain.raindex.interface/interface/ierc3156/IERC3156FlashBorrower.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {IERC3156FlashBorrower} from "raindex-interface-0.1.1/src/interface/ierc3156/IERC3156FlashBorrower.sol"; import {MockRaindexBase} from "test/util/abstract/MockRaindexBase.sol"; /// @dev Malicious raindex that records the token allowances it has from the diff --git a/test/util/concrete/MockExchange.sol b/test/util/concrete/MockExchange.sol index 97f5a8e5c6..fba45d667e 100644 --- a/test/util/concrete/MockExchange.sol +++ b/test/util/concrete/MockExchange.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; -import {SafeERC20} from "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {SafeERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol"; contract MockExchange { using SafeERC20 for IERC20; diff --git a/test/util/concrete/MockRouteProcessor.sol b/test/util/concrete/MockRouteProcessor.sol index 4b532aa1a5..625ed18cbf 100644 --- a/test/util/concrete/MockRouteProcessor.sol +++ b/test/util/concrete/MockRouteProcessor.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; -import {SafeERC20} from "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {SafeERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol"; import {IRouteProcessor} from "sushixswap-v2/src/interfaces/IRouteProcessor.sol"; /// @dev Mock route processor that pulls inputToken from sender and sends diff --git a/test/util/concrete/MockToken.sol b/test/util/concrete/MockToken.sol index 4ae3801a44..15b0aee4c0 100644 --- a/test/util/concrete/MockToken.sol +++ b/test/util/concrete/MockToken.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {ERC20} from "openzeppelin-contracts/contracts/token/ERC20/ERC20.sol"; +import {ERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/ERC20.sol"; contract MockToken is ERC20 { uint8 internal immutable iDecimals; diff --git a/test/util/concrete/RealisticFlashLendingMockRaindex.sol b/test/util/concrete/RealisticFlashLendingMockRaindex.sol index 60abc6d723..c04c8f716f 100644 --- a/test/util/concrete/RealisticFlashLendingMockRaindex.sol +++ b/test/util/concrete/RealisticFlashLendingMockRaindex.sol @@ -2,13 +2,13 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; -import {SafeERC20} from "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; -import {TakeOrdersConfigV5, Float} from "rain.raindex.interface/interface/IRaindexV6.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {SafeERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol"; +import {TakeOrdersConfigV5, Float} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import { IERC3156FlashBorrower, ON_FLASH_LOAN_CALLBACK_SUCCESS -} from "rain.raindex.interface/interface/ierc3156/IERC3156FlashBorrower.sol"; +} from "raindex-interface-0.1.1/src/interface/ierc3156/IERC3156FlashBorrower.sol"; import {MockRaindexBase} from "test/util/abstract/MockRaindexBase.sol"; /// @dev Mock raindex with real ERC3156 flash loan transfers and real diff --git a/test/util/concrete/RealisticOrderTakerMockRaindex.sol b/test/util/concrete/RealisticOrderTakerMockRaindex.sol index 94d28ccf4f..93259d2efd 100644 --- a/test/util/concrete/RealisticOrderTakerMockRaindex.sol +++ b/test/util/concrete/RealisticOrderTakerMockRaindex.sol @@ -2,10 +2,10 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; -import {SafeERC20} from "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; -import {TakeOrdersConfigV5, Float} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IRaindexV6OrderTaker} from "rain.raindex.interface/interface/IRaindexV6OrderTaker.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {SafeERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol"; +import {TakeOrdersConfigV5, Float} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IRaindexV6OrderTaker} from "raindex-interface-0.1.1/src/interface/IRaindexV6OrderTaker.sol"; import {MockRaindexBase} from "test/util/abstract/MockRaindexBase.sol"; /// @dev Mock raindex with real takeOrders4 transfers and onTakeOrders2 diff --git a/test/util/concrete/Reenteroor.sol b/test/util/concrete/Reenteroor.sol index d0f0324b99..3c05b4ea4d 100644 --- a/test/util/concrete/Reenteroor.sol +++ b/test/util/concrete/Reenteroor.sol @@ -2,12 +2,12 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Address} from "openzeppelin-contracts/contracts/utils/Address.sol"; +import {Address} from "@openzeppelin-contracts-5.6.1/utils/Address.sol"; import { IERC3156FlashBorrower, ON_FLASH_LOAN_CALLBACK_SUCCESS -} from "rain.raindex.interface/interface/ierc3156/IERC3156FlashBorrower.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +} from "raindex-interface-0.1.1/src/interface/ierc3156/IERC3156FlashBorrower.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; /// @title Reenteroor /// A contract that reenters the caller with a configurable call. diff --git a/test/util/concrete/ReentrantExchange.sol b/test/util/concrete/ReentrantExchange.sol index 2a5a5227f3..79685114f5 100644 --- a/test/util/concrete/ReentrantExchange.sol +++ b/test/util/concrete/ReentrantExchange.sol @@ -12,10 +12,10 @@ import { EvaluableV4, SignedContextV1, TaskV2 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IInterpreterV4} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; -import {LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IInterpreterV4} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; +import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; /// @dev Exchange that re-enters arb4 when called during _exchange. contract ReentrantExchange { diff --git a/test/util/concrete/ReentrantMockRaindex.sol b/test/util/concrete/ReentrantMockRaindex.sol index c50bb6b0c4..ab9d2e3754 100644 --- a/test/util/concrete/ReentrantMockRaindex.sol +++ b/test/util/concrete/ReentrantMockRaindex.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; -import {SafeERC20} from "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {SafeERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol"; import {GenericPoolRaindexV6ArbOrderTaker} from "../../../src/concrete/arb/GenericPoolRaindexV6ArbOrderTaker.sol"; import { IRaindexV6, @@ -12,9 +12,9 @@ import { EvaluableV4, SignedContextV1, Float -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IInterpreterV4} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IInterpreterV4} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; import {MockRaindexBase} from "test/util/abstract/MockRaindexBase.sol"; /// @dev Mock Raindex whose takeOrders4 callback re-enters arb5 on the taker. diff --git a/test/util/concrete/RevertingExchange.sol b/test/util/concrete/RevertingExchange.sol index 34cba0019d..c055752d68 100644 --- a/test/util/concrete/RevertingExchange.sol +++ b/test/util/concrete/RevertingExchange.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; /// @dev Exchange that always reverts. contract RevertingExchange { diff --git a/test/util/lib/LibEtchRaindex.sol b/test/util/lib/LibEtchRaindex.sol index a8f59f78cf..b075545b8e 100644 --- a/test/util/lib/LibEtchRaindex.sol +++ b/test/util/lib/LibEtchRaindex.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Vm} from "forge-std/Vm.sol"; +import {Vm} from "forge-std-1.16.1/src/Vm.sol"; import {LibRaindexDeploy} from "../../../src/lib/deploy/LibRaindexDeploy.sol"; import {RUNTIME_CODE as RAINDEX_RUNTIME_CODE} from "../../../src/generated/RaindexV6.pointers.sol"; import {RUNTIME_CODE as SUB_PARSER_RUNTIME_CODE} from "../../../src/generated/RaindexV6SubParser.pointers.sol"; diff --git a/test/util/lib/LibTestAddOrder.sol b/test/util/lib/LibTestAddOrder.sol index e4c0edc569..80383f7386 100644 --- a/test/util/lib/LibTestAddOrder.sol +++ b/test/util/lib/LibTestAddOrder.sol @@ -2,14 +2,14 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.19; -import {META_MAGIC_NUMBER_V1} from "rain.metadata/lib/LibMeta.sol"; +import {META_MAGIC_NUMBER_V1} from "rain-metadata-0.1.0/src/lib/LibMeta.sol"; import {LibOrder} from "../../../src/lib/LibOrder.sol"; -import {OrderConfigV4, OrderV4, IOV2} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IInterpreterV4, SourceIndexV2} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; -import {EvaluableV4} from "rain.interpreter.interface/interface/IInterpreterCallerV4.sol"; +import {OrderConfigV4, OrderV4, IOV2} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IInterpreterV4, SourceIndexV2} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; +import {EvaluableV4} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterCallerV4.sol"; import {HANDLE_IO_ENTRYPOINT} from "../../../src/concrete/raindex/RaindexV6.sol"; -import {LibBytecode} from "rain.interpreter.interface/lib/bytecode/LibBytecode.sol"; +import {LibBytecode} from "rain-interpreter-interface-0.1.0/src/lib/bytecode/LibBytecode.sol"; library LibTestAddOrder { /// A little boilerplate to make it easier to build the order that we expect diff --git a/test/util/lib/LibTestArb.sol b/test/util/lib/LibTestArb.sol index 769abfa41d..0d9de592cc 100644 --- a/test/util/lib/LibTestArb.sol +++ b/test/util/lib/LibTestArb.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.19; -import {Vm} from "forge-std/Vm.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import {Vm} from "forge-std-1.16.1/src/Vm.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import { IRaindexV6, TakeOrdersConfigV5, @@ -13,13 +13,13 @@ import { EvaluableV4, SignedContextV1, TaskV2 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IInterpreterV4} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; -import {LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; -import {LibInterpreterDeploy} from "rain.interpreter/lib/deploy/LibInterpreterDeploy.sol"; -import {LibTOFUTokenDecimals} from "rain.tofu.erc20-decimals/lib/LibTOFUTokenDecimals.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IInterpreterV4} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; +import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; +import {LibInterpreterDeploy} from "rainlang-0.1.2/src/lib/deploy/LibInterpreterDeploy.sol"; +import {LibTOFUTokenDecimals} from "rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol"; import {GenericPoolRaindexV6ArbOrderTaker} from "../../../src/concrete/arb/GenericPoolRaindexV6ArbOrderTaker.sol"; import {MockToken} from "test/util/concrete/MockToken.sol"; import {MockExchange} from "test/util/concrete/MockExchange.sol"; diff --git a/test/util/lib/LibTestFlashBorrowerArb.sol b/test/util/lib/LibTestFlashBorrowerArb.sol index 210a5a987d..46fbaf1c7e 100644 --- a/test/util/lib/LibTestFlashBorrowerArb.sol +++ b/test/util/lib/LibTestFlashBorrowerArb.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.19; -import {Vm} from "forge-std/Vm.sol"; -import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import {Vm} from "forge-std-1.16.1/src/Vm.sol"; +import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import { IRaindexV6, TakeOrdersConfigV5, @@ -12,13 +12,13 @@ import { IOV2, EvaluableV4, SignedContextV1 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IInterpreterV4} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; -import {LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; -import {LibTOFUTokenDecimals} from "rain.tofu.erc20-decimals/lib/LibTOFUTokenDecimals.sol"; -import {LibInterpreterDeploy} from "rain.interpreter/lib/deploy/LibInterpreterDeploy.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IInterpreterV4} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; +import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {LibRainDeploy} from "rain-deploy-0.1.2/src/lib/LibRainDeploy.sol"; +import {LibTOFUTokenDecimals} from "rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol"; +import {LibInterpreterDeploy} from "rainlang-0.1.2/src/lib/deploy/LibInterpreterDeploy.sol"; import {LibRaindexDeploy} from "../../../src/lib/deploy/LibRaindexDeploy.sol"; import {GenericPoolRaindexV6FlashBorrower} from "../../../src/concrete/arb/GenericPoolRaindexV6FlashBorrower.sol"; import {MockToken} from "test/util/concrete/MockToken.sol"; diff --git a/test/util/lib/LibTestTakeOrder.sol b/test/util/lib/LibTestTakeOrder.sol index 3a0f8751d5..23320d0ca2 100644 --- a/test/util/lib/LibTestTakeOrder.sol +++ b/test/util/lib/LibTestTakeOrder.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.19; -import {Vm} from "forge-std/Vm.sol"; +import {Vm} from "forge-std-1.16.1/src/Vm.sol"; import { OrderV4, TakeOrderConfigV4, @@ -12,13 +12,13 @@ import { OrderConfigV4, TaskV2, IRaindexV6 -} from "rain.raindex.interface/interface/IRaindexV6.sol"; -import {IInterpreterV4} from "rain.interpreter.interface/interface/IInterpreterV4.sol"; -import {IInterpreterStoreV3} from "rain.interpreter.interface/interface/IInterpreterStoreV3.sol"; -import {IParserV2} from "rain.interpreter.interface/interface/IParserV2.sol"; -import {SignedContextV1} from "rain.interpreter.interface/interface/deprecated/v1/IInterpreterCallerV2.sol"; -import {Float, LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {LibInterpreterDeploy} from "rain.interpreter/lib/deploy/LibInterpreterDeploy.sol"; +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import {IInterpreterV4} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; +import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; +import {IParserV2} from "rain-interpreter-interface-0.1.0/src/interface/IParserV2.sol"; +import {SignedContextV1} from "rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterCallerV2.sol"; +import {Float, LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; +import {LibInterpreterDeploy} from "rainlang-0.1.2/src/lib/deploy/LibInterpreterDeploy.sol"; import {LibRaindexDeploy} from "../../../src/lib/deploy/LibRaindexDeploy.sol"; library LibTestTakeOrder { From bf51b1ff66e42965e86ef2adecb2b20d9f0b2f8a Mon Sep 17 00:00:00 2001 From: David Meister Date: Fri, 22 May 2026 10:35:40 +0000 Subject: [PATCH 02/27] chore: align prep-base.sh + fs_permissions with soldeer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replace `forge install` with `git submodule update --init --recursive` plus an explicit `forge soldeer install`. - Drop the `rainix-sol-prelude` runs inside each lib/rain.* submodule; Solidity resolves via published soldeer artifacts. Keep `rainix-rs-prelude` / `rainlang-prelude` since the Cargo workspace still consumes the submodules' Rust crates as path-deps. - Remove fs_permissions entries pointing at the rain.interpreter submodule's meta / deployments dirs — no raindex source references these paths after the soldeer migration. Co-Authored-By: Claude Opus 4.7 --- foundry.toml | 5 ----- prep-base.sh | 54 +++++++++++++--------------------------------------- 2 files changed, 13 insertions(+), 46 deletions(-) diff --git a/foundry.toml b/foundry.toml index 5f34ef9a79..383f0a0b5d 100644 --- a/foundry.toml +++ b/foundry.toml @@ -31,11 +31,6 @@ cbor_metadata = false # than expose ffi to forge. fs_permissions = [ { access = "read", path = "./meta" }, - { access = "read", path = "./lib/rain.interpreter/meta/RainterpreterExpressionDeployerNPE2.rain.meta" }, - { access = "read", path = "./lib/rain.interpreter/deployments/latest/RainterpreterParserNPE2" }, - { access = "read", path = "./lib/rain.interpreter/deployments/latest/RainterpreterStoreNPE2" }, - { access = "read", path = "./lib/rain.interpreter/deployments/latest/RainterpreterNPE2" }, - { access = "read", path = "./lib/rain.interpreter/deployments/latest/RainterpreterExpressionDeployerNPE2" }, { access = "read-write", path = "./meta/RaindexV6SubParserAuthoringMeta.rain.meta" }, { access = "read-write", path = "src/generated" }, { access = "read", path = "./subgraph" }, diff --git a/prep-base.sh b/prep-base.sh index e6c5469530..126fbf7628 100755 --- a/prep-base.sh +++ b/prep-base.sh @@ -1,20 +1,9 @@ #!/bin/bash -# Set strict error handling set -euxo pipefail echo "Starting project setup..." -# Environment variables that need to be set (commented out as reference) -# export CI_DEPLOY_SEPOLIA_RPC_URL="" -# export CI_FORK_SEPOLIA_DEPLOYER_ADDRESS="" -# export CI_FORK_SEPOLIA_BLOCK_NUMBER="" -# export CI_DEPLOY_POLYGON_RPC_URL="" -# export CI_SEPOLIA_METABOARD_URL="" -# export RPC_URL_ETHEREUM_FORK="" -# export COMMIT_SHA="" - -# Keep environment variables when using nix-develop keep=( -k CI_DEPLOY_SEPOLIA_RPC_URL -k CI_FORK_SEPOLIA_DEPLOYER_ADDRESS @@ -31,50 +20,33 @@ keep=( -k PUBLIC_WALLETCONNECT_PROJECT_ID ) -echo "Installing Forge dependencies..." -nix develop -c forge install +git submodule update --init --recursive -echo "Setting up rain.math.float..." -nix develop -i ${keep[@]} -c bash \ - -c '(cd lib/rain.interpreter/lib/rain.interpreter.interface/lib/rain.math.float && rainix-sol-prelude)' -nix develop -i ${keep[@]} -c bash \ - -c '(cd lib/rain.interpreter/lib/rain.interpreter.interface/lib/rain.math.float && rainix-rs-prelude)' +nix develop -c forge soldeer install -echo "Setting up rain.tofu.erc20-decimals..." -(cd lib/rain.interpreter/lib/rain.tofu.erc20-decimals && nix develop -c forge build) +nix develop -i "${keep[@]}" -c bash \ + -c '(cd lib/rain.interpreter/lib/rain.interpreter.interface/lib/rain.math.float && rainix-rs-prelude)' -echo "Setting up rain.interpreter..." -nix develop -i ${keep[@]} -c bash -c '(cd lib/rain.interpreter && rainix-sol-prelude)' -nix develop -i ${keep[@]} -c bash -c '(cd lib/rain.interpreter && rainix-rs-prelude)' -(cd lib/rain.interpreter && nix develop -i ${keep[@]} -c bash -c rainlang-prelude) +nix develop -i "${keep[@]}" -c bash -c '(cd lib/rain.interpreter && rainix-rs-prelude)' +(cd lib/rain.interpreter && nix develop -i "${keep[@]}" -c bash -c rainlang-prelude) -echo "Setting up rain.metadata..." -nix develop -i ${keep[@]} -c bash -c '(cd lib/rain.interpreter/lib/rain.metadata && rainix-sol-prelude)' -nix develop -i ${keep[@]} -c bash -c '(cd lib/rain.interpreter/lib/rain.metadata && rainix-rs-prelude)' +nix develop -i "${keep[@]}" -c bash -c '(cd lib/rain.interpreter/lib/rain.metadata && rainix-rs-prelude)' -echo "Setting up main project dependencies..." -nix develop -i ${keep[@]} -c rainix-sol-prelude -nix develop -i ${keep[@]} -c rainix-rs-prelude -nix develop -i ${keep[@]} -c raindex-prelude +nix develop -i "${keep[@]}" -c rainix-sol-prelude +nix develop -i "${keep[@]}" -c rainix-rs-prelude +nix develop -i "${keep[@]}" -c raindex-prelude -echo "Building Solidity contracts..." -nix develop -i ${keep[@]} -c forge build +nix develop -i "${keep[@]}" -c forge build -# Temporarily disable command echoing set +x export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 -GREEN='\033[0;32m' -NC='\033[0m' # No Color - -# Print the completion message -printf "\033[0;32m" # Set text to green +printf "\033[0;32m" printf "╔════════════════════════════════════════════════════════════════════════╗\n" printf "║ Base Setup Complete! ║\n" printf "╚════════════════════════════════════════════════════════════════════════╝\n" -printf "\033[0m" # Reset text color +printf "\033[0m" -# Re-enable command echoing set -x From b7639ef6db47f90c94dbc30429dcb27924eeffeb Mon Sep 17 00:00:00 2001 From: David Meister Date: Fri, 22 May 2026 10:51:37 +0000 Subject: [PATCH 03/27] fix(soldeer): drop rain-math-fixedpoint + OZ 4.8.3 transitive The single test usage of `fixedPointDiv` was a one-liner that resolves to `Math.mulDiv(a, 1e18, b, Math.Rounding.Floor)`. Inlining it lets us drop both `rain-math-fixedpoint-0.1.0` and the `@openzeppelin-contracts-4.8.3` side-by-side install it pulled in. This unblocks `forge soldeer install` in CI, which was failing because the lockfile only retained one OZ version while foundry.toml referenced both. Co-Authored-By: Claude Opus 4.7 --- foundry.toml | 1 - remappings.txt | 2 -- soldeer.lock | 15 ++++----------- test/concrete/raindex/RaindexV6.clear.mock.t.sol | 8 ++------ 4 files changed, 6 insertions(+), 20 deletions(-) diff --git a/foundry.toml b/foundry.toml index 383f0a0b5d..7c99dc4aa5 100644 --- a/foundry.toml +++ b/foundry.toml @@ -65,7 +65,6 @@ rain-lib-hash = "0.1.0" rain-math-binary = "0.1.1" rain-string = "0.2.0" rain-lib-memkv = "0.1.0" -rain-math-fixedpoint = "0.1.0" [soldeer] recursive_deps = false diff --git a/remappings.txt b/remappings.txt index 4afac64043..766d6e8e21 100644 --- a/remappings.txt +++ b/remappings.txt @@ -1,4 +1,3 @@ -@openzeppelin-contracts-4.8.3/=dependencies/@openzeppelin-contracts-4.8.3/ @openzeppelin-contracts-5.6.1/=dependencies/@openzeppelin-contracts-5.6.1/ forge-std-1.16.1/=dependencies/forge-std-1.16.1/ rain-deploy-0.1.2/=dependencies/rain-deploy-0.1.2/ @@ -8,7 +7,6 @@ rain-lib-hash-0.1.0/=dependencies/rain-lib-hash-0.1.0/ rain-lib-memkv-0.1.0/=dependencies/rain-lib-memkv-0.1.0/ rain-lib-typecast-0.1.0/=dependencies/rain-lib-typecast-0.1.0/ rain-math-binary-0.1.1/=dependencies/rain-math-binary-0.1.1/ -rain-math-fixedpoint-0.1.0/=dependencies/rain-math-fixedpoint-0.1.0/ rain-math-float-0.1.1/=dependencies/rain-math-float-0.1.1/ rain-metadata-0.1.0/=dependencies/rain-metadata-0.1.0/ rain-sol-codegen-0.1.0/=dependencies/rain-sol-codegen-0.1.0/ diff --git a/soldeer.lock b/soldeer.lock index b80a2d19ff..e89a75e5db 100644 --- a/soldeer.lock +++ b/soldeer.lock @@ -1,9 +1,9 @@ [[dependencies]] name = "@openzeppelin-contracts" -version = "4.8.3" -url = "https://soldeer-revisions.s3.amazonaws.com/@openzeppelin-contracts/4_8_3_22-01-2024_13:13:46_contracts.zip" -checksum = "c6c0f1d430120cf45a3531a2fe740a4dffa1434ebccac753a59c54bc1ce65db9" -integrity = "3ecc700e5d25af23c53959baf3cfd3cbadbc0013e80dfca40cee9e7ea34e141d" +version = "5.6.1" +url = "https://soldeer-revisions.s3.amazonaws.com/@openzeppelin-contracts/5_6_1_15-03-2026_09:19:50_contracts.zip" +checksum = "a3b6bc661be858c7c27f60a1708cbebe8c71034b4cc1e9fe270d0a05b069352f" +integrity = "bce03af7ada1eee21a7fff393f238bcd7cd75a022a4db55ffb6b0dbb32433d35" [[dependencies]] name = "forge-std" @@ -61,13 +61,6 @@ url = "https://soldeer-revisions.s3.amazonaws.com/rain-math-binary/0_1_1_09-05-2 checksum = "6f966e4f5f59103b62de2004005db508824622495b893a646d0e2a35511f0093" integrity = "4cfaa11c0e48ac46824a10fec2184863d114f09c171544b721d782386708dca7" -[[dependencies]] -name = "rain-math-fixedpoint" -version = "0.1.0" -url = "https://soldeer-revisions.s3.amazonaws.com/rain-math-fixedpoint/0_1_0_09-05-2026_20:41:06_rain.math.zip" -checksum = "3b19166f9f12ed84047f6570992d1bc445eed7705d5ba7e5a94de9f8cc51d572" -integrity = "8578d71cf511ea2ab2044821c733f06ad5d2a08afc4eb3ff7c14b1af809ab39c" - [[dependencies]] name = "rain-math-float" version = "0.1.1" diff --git a/test/concrete/raindex/RaindexV6.clear.mock.t.sol b/test/concrete/raindex/RaindexV6.clear.mock.t.sol index 6ecab7bfe8..a99180b6df 100644 --- a/test/concrete/raindex/RaindexV6.clear.mock.t.sol +++ b/test/concrete/raindex/RaindexV6.clear.mock.t.sol @@ -21,10 +21,7 @@ import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; import {NotOrderOwner, StackItem, NegativeBounty, ClearZeroAmount} from "../../../src/concrete/raindex/RaindexV6.sol"; import {LibNamespace} from "rain-interpreter-interface-0.1.0/src/lib/ns/LibNamespace.sol"; import {StateNamespace, EvalV4, SourceIndexV2} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; -import { - LibFixedPointDecimalArithmeticOpenZeppelin -} from "rain-math-fixedpoint-0.1.0/src/lib/LibFixedPointDecimalArithmeticOpenZeppelin.sol"; -import {Math} from "@openzeppelin-contracts-4.8.3/utils/math/Math.sol"; +import {Math} from "@openzeppelin-contracts-5.6.1/utils/math/Math.sol"; import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; import {LibFormatDecimalFloat} from "rain-math-float-0.1.1/src/lib/format/LibFormatDecimalFloat.sol"; @@ -45,7 +42,6 @@ contract MockInterpreter { /// @title RaindexV6ClearTest /// Tests clearing an order. contract RaindexV6ClearTest is RaindexV6ExternalMockTest { - using LibFixedPointDecimalArithmeticOpenZeppelin for uint256; using Math for uint256; using LibDecimalFloat for Float; @@ -789,7 +785,7 @@ contract RaindexV6ClearTest is RaindexV6ExternalMockTest { ) external { // 0 tested separately. aliceIORatio18 = bound(aliceIORatio18, 1, 1e18); - bobIORatio18 = bound(bobIORatio18, 1e18, uint256(1e18).fixedPointDiv(aliceIORatio18, Math.Rounding.Down)); + bobIORatio18 = bound(bobIORatio18, 1e18, Math.mulDiv(1e18, 1e18, aliceIORatio18, Math.Rounding.Floor)); Float aliceIORatio = LibDecimalFloat.fromFixedDecimalLosslessPacked(aliceIORatio18, 18); Float bobIORatio = LibDecimalFloat.fromFixedDecimalLosslessPacked(bobIORatio18, 18); From 06cc55a41e9696ca831c82758c335a3256912ca0 Mon Sep 17 00:00:00 2001 From: David Meister Date: Fri, 22 May 2026 12:17:27 +0000 Subject: [PATCH 04/27] fix(soldeer): strip submodule preludes from pointers.sh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The pointers.sh script ran rainix-sol-prelude inside each rain.* submodule, which invokes forge install — which now tries to git submodule update a dependencies/ pathspec that does not exist in raindex. The submodule preludes were generating pointer constants embedded in the libs Solidity, but those constants now ship inside the published soldeer artifacts. raindex only needs to soldeer-install + run its own preludes + execute BuildPointers.sol. Co-Authored-By: Claude Opus 4.7 --- pointers.sh | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/pointers.sh b/pointers.sh index 17325c5d0a..ba0f5e2ed9 100755 --- a/pointers.sh +++ b/pointers.sh @@ -2,14 +2,7 @@ set -euxo pipefail -(cd lib/rain.interpreter/lib/rain.interpreter.interface/lib/rain.math.float && nix develop -c rainix-sol-prelude) -(cd lib/rain.interpreter/lib/rain.interpreter.interface/lib/rain.math.float && nix develop -c rainix-rs-prelude) -(cd lib/rain.interpreter && nix develop -c rainix-sol-prelude) -(cd lib/rain.interpreter && nix develop -c rainix-rs-prelude) -(cd lib/rain.interpreter && nix develop -c rainlang-prelude) -(cd lib/rain.interpreter/lib/rain.metadata && nix develop -c rainix-sol-prelude) -(cd lib/rain.interpreter/lib/rain.metadata && nix develop -c rainix-rs-prelude) -(cd lib/rain.interpreter/lib/rain.tofu.erc20-decimals && nix develop -c forge build) +nix develop -c forge soldeer install nix develop -c rainix-sol-prelude nix develop -c rainix-rs-prelude From 45cabb5136fe98f45f46d4513bbc4bcdf978799e Mon Sep 17 00:00:00 2001 From: David Meister Date: Sat, 23 May 2026 05:59:29 +0000 Subject: [PATCH 05/27] fix: bump rainix pin + drop obsolete prelude calls The old rainix rev pinned in flake.lock predated soldeer support and its `rainix-sol-prelude` task ran `forge install`, which modern foundry treats as soldeer-aware and chokes on raindex's `dependencies/` directory pathspec. Bumps the rainix input to current HEAD (only exposes `rainix-sol-artifacts` and `rainix-rs-static`), and replaces the legacy `rainix-sol-prelude` / `rainix-rs-prelude` invocations in pointers.sh and prep-base.sh with explicit `forge soldeer install + forge build`. Co-Authored-By: Claude Opus 4.7 --- flake.lock | 65 +++++++++++++++++++--------------------------------- pointers.sh | 3 +-- prep-base.sh | 11 +-------- 3 files changed, 26 insertions(+), 53 deletions(-) diff --git a/flake.lock b/flake.lock index 2f38fe0b93..632f0b9982 100644 --- a/flake.lock +++ b/flake.lock @@ -198,11 +198,11 @@ "nixpkgs": "nixpkgs_5" }, "locked": { - "lastModified": 1773213477, - "narHash": "sha256-Pv1Z3QqGkSGEUV+9pM5vYIiI7VJo7Tfm6ZmR+JSp1zo=", + "lastModified": 1778486972, + "narHash": "sha256-iuy/TbK9AbghEld2VSFuxyAF30LkOGUUdtrvixLfE7M=", "owner": "shazow", "repo": "foundry.nix", - "rev": "3c73daa86c823d706824fd9bbcb85aa23fd0f668", + "rev": "db117ae95a77b9ead24137c3ccb28896ae4fa4ec", "type": "github" }, "original": { @@ -218,11 +218,11 @@ "nixpkgs": "nixpkgs_6" }, "locked": { - "lastModified": 1774104215, - "narHash": "sha256-EAtviqz0sEAxdHS4crqu7JGR5oI3BwaqG0mw7CmXkO8=", + "lastModified": 1778507602, + "narHash": "sha256-kTwur1wV+01SdqskVMSo6JMEpg71ps3HpbFY2GsflKs=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "f799ae951fde0627157f40aec28dec27b22076d0", + "rev": "61ab0e80d9c7ab14c256b5b453d8b3fb0189ba0a", "type": "github" }, "original": { @@ -267,22 +267,6 @@ "type": "indirect" } }, - "nixpkgs-old": { - "locked": { - "lastModified": 1749104371, - "narHash": "sha256-m2NmOPd6XgBiskmUq/BS9Xxuf3z0ebnGVfSKNAO5NEM=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48975d7f9b9960ed33c4e8561bcce20cc0c2de5b", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48975d7f9b9960ed33c4e8561bcce20cc0c2de5b", - "type": "github" - } - }, "nixpkgs_2": { "locked": { "lastModified": 1714764285, @@ -362,11 +346,11 @@ }, "nixpkgs_7": { "locked": { - "lastModified": 1776017067, - "narHash": "sha256-oEp8fqJweZd5doqvH/aBAtc6NzZh+fh0tOhR09gQXck=", + "lastModified": 1778656924, + "narHash": "sha256-lKVrom9wOmpC3i7m+uBoGaBdW0PfH3QbLRG1XmuC6YA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "a5a7cf16648d79134eb4da0e3354b08913917b2f", + "rev": "4ba039de0909446943c07e2b42bd2f0f4507072e", "type": "github" }, "original": { @@ -393,11 +377,11 @@ }, "nixpkgs_9": { "locked": { - "lastModified": 1771923393, - "narHash": "sha256-Fy0+UXELv9hOE8WjYhJt8fMDLYTU2Dqn3cX4BwoGBos=", + "lastModified": 1777641297, + "narHash": "sha256-WNGcmeOZ8Tr9dq6ztCspYbzWFswr2mPebM9LpsfGxPk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ea7f1f06811ce7fcc81d6c6fd4213150c23edcf2", + "rev": "c6d65881c5624c9cae5ea6cedef24699b0c0a4c0", "type": "github" }, "original": { @@ -454,16 +438,15 @@ "foundry": "foundry_2", "git-hooks-nix": "git-hooks-nix", "nixpkgs": "nixpkgs_7", - "nixpkgs-old": "nixpkgs-old", "rust-overlay": "rust-overlay_2", "solc": "solc_2" }, "locked": { - "lastModified": 1777887852, - "narHash": "sha256-1AXVZpY1okCogZKt0CslqP06FG5HldcY+RmjEfct1rc=", + "lastModified": 1779209879, + "narHash": "sha256-9x9V41PmF1RQlM5R6SV6xbgVnP+qgW9mUyRC50RQ9G8=", "owner": "rainlanguage", "repo": "rainix", - "rev": "620c4d3604ba7967004afce6ffacd2ae9ef2c1a1", + "rev": "d444279bc7346a6f4f7bd4a0b7f9900523b8f00e", "type": "github" }, "original": { @@ -503,11 +486,11 @@ "nixpkgs": "nixpkgs_8" }, "locked": { - "lastModified": 1773216618, - "narHash": "sha256-iZlowevS+xKLGOXtZwpIrz3SWe7PtoGUfEeVZNib+WE=", + "lastModified": 1778642276, + "narHash": "sha256-bhk4lawR4ZnFhPtamB5WkCyvfgyZmsEUbWfT/3FRxFY=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "07d7dc6fcc5eae76b4fb0e19d4afd939437bec97", + "rev": "77265d2dc1e61b2abfd3b1d6609dbb66fe75e0a5", "type": "github" }, "original": { @@ -538,13 +521,13 @@ "solc-macos-amd64-list-json": { "flake": false, "locked": { - "narHash": "sha256-oEiXc95EghuYCudzkPA9XBFOnMdgWFfTO2/4XUfSTpc=", + "narHash": "sha256-zzwwHA2qPotv7yp8mK7+y9BZhm7ytuFeCJVvKBBdBn4=", "type": "file", - "url": "https://github.com/argotorg/solc-bin/raw/83cb756/macosx-amd64/list.json" + "url": "https://github.com/argotorg/solc-bin/raw/902dfaf/macosx-amd64/list.json" }, "original": { "type": "file", - "url": "https://github.com/argotorg/solc-bin/raw/83cb756/macosx-amd64/list.json" + "url": "https://github.com/argotorg/solc-bin/raw/902dfaf/macosx-amd64/list.json" } }, "solc_2": { @@ -554,11 +537,11 @@ "solc-macos-amd64-list-json": "solc-macos-amd64-list-json" }, "locked": { - "lastModified": 1772085240, - "narHash": "sha256-+NEcuhT2A0QQumVx9Ze6g2iuNicyuW028Jq/HUJHGh4=", + "lastModified": 1777817996, + "narHash": "sha256-iI71iUhD7THLibl3w1JcQEhHmTwZMxChi70RTe33BAo=", "owner": "hellwolf", "repo": "solc.nix", - "rev": "d3cc119973e484ea366f4b997b404bb00d7829ca", + "rev": "e3cf898cb804d5c0e5474b378a300fe8942e67d6", "type": "github" }, "original": { diff --git a/pointers.sh b/pointers.sh index ba0f5e2ed9..df02b48358 100755 --- a/pointers.sh +++ b/pointers.sh @@ -3,9 +3,8 @@ set -euxo pipefail nix develop -c forge soldeer install +nix develop -c forge build -nix develop -c rainix-sol-prelude -nix develop -c rainix-rs-prelude nix develop -c raindex-prelude nix develop -c forge script script/BuildPointers.sol diff --git a/prep-base.sh b/prep-base.sh index 126fbf7628..fd0bd89847 100755 --- a/prep-base.sh +++ b/prep-base.sh @@ -23,17 +23,8 @@ keep=( git submodule update --init --recursive nix develop -c forge soldeer install +nix develop -c forge build -nix develop -i "${keep[@]}" -c bash \ - -c '(cd lib/rain.interpreter/lib/rain.interpreter.interface/lib/rain.math.float && rainix-rs-prelude)' - -nix develop -i "${keep[@]}" -c bash -c '(cd lib/rain.interpreter && rainix-rs-prelude)' -(cd lib/rain.interpreter && nix develop -i "${keep[@]}" -c bash -c rainlang-prelude) - -nix develop -i "${keep[@]}" -c bash -c '(cd lib/rain.interpreter/lib/rain.metadata && rainix-rs-prelude)' - -nix develop -i "${keep[@]}" -c rainix-sol-prelude -nix develop -i "${keep[@]}" -c rainix-rs-prelude nix develop -i "${keep[@]}" -c raindex-prelude nix develop -i "${keep[@]}" -c forge build From 6ffa7e7d11b99955b4abc641f4b02ba6434f180d Mon Sep 17 00:00:00 2001 From: David Meister Date: Sat, 23 May 2026 06:26:44 +0000 Subject: [PATCH 06/27] wip: drop alloy-ethers-typecast (foundation + bump rain.interpreter) Co-Authored-By: Claude Opus 4.7 --- Cargo.toml | 1 - crates/cli/Cargo.toml | 11 +- crates/common/Cargo.toml | 11 +- crates/common/src/deposit.rs | 182 +++-------------------- crates/common/src/lib.rs | 2 + crates/common/src/remove_order.rs | 114 +-------------- crates/common/src/transaction.rs | 236 +++++++----------------------- crates/common/src/withdraw.rs | 91 +----------- crates/common/src/write_tx.rs | 59 ++++++++ crates/js_api/Cargo.toml | 11 +- crates/quote/Cargo.toml | 1 - lib/rain.interpreter | 2 +- 12 files changed, 168 insertions(+), 553 deletions(-) create mode 100644 crates/common/src/write_tx.rs diff --git a/Cargo.toml b/Cargo.toml index 1016cf15af..e687a87858 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,6 @@ homepage = "https://github.com/rainlanguage/raindex" [workspace.dependencies] foundry-block-explorers = "0.2.6" alloy = { version = "1.0.9", features = ["sol-types", "json", "json-abi"] } -alloy-ethers-typecast = { git = "https://github.com/rainlanguage/alloy-ethers-typecast", rev = "bcc3a04394aefe191fef4ae8e6e94381a419c99a" } anyhow = "1.0.70" async-trait = "0.1.77" clap = { version = "4.2.5", features = ["cargo", "derive"] } diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index 75ce54d437..c4b6c30d3d 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -9,7 +9,6 @@ homepage.workspace = true # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -alloy-ethers-typecast = { workspace = true } alloy = { workspace = true } raindex_subgraph_client = { workspace = true } raindex_bindings = { workspace = true } @@ -40,11 +39,11 @@ tokio = { workspace = true, features = ["full"] } [target.'cfg(target_family = "wasm")'.dependencies] tokio = { workspace = true, features = [ - "sync", - "macros", - "io-util", - "rt", - "time", + "sync", + "macros", + "io-util", + "rt", + "time", ] } [dev-dependencies] diff --git a/crates/common/Cargo.toml b/crates/common/Cargo.toml index c547e6a6e4..f2d88b161f 100644 --- a/crates/common/Cargo.toml +++ b/crates/common/Cargo.toml @@ -21,7 +21,6 @@ raindex_subgraph_client = { workspace = true } raindex_app_settings = { workspace = true } raindex_quote = { workspace = true } alloy = { workspace = true, features = ["dyn-abi", "rand"] } -alloy-ethers-typecast = { workspace = true } url = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } @@ -67,11 +66,11 @@ rusqlite = { version = "0.32", features = ["functions"] } [target.'cfg(target_family = "wasm")'.dependencies] tokio = { workspace = true, features = [ - "sync", - "macros", - "io-util", - "rt", - "time", + "sync", + "macros", + "io-util", + "rt", + "time", ] } serde-wasm-bindgen = "0.4" getrandom = { workspace = true } diff --git a/crates/common/src/deposit.rs b/crates/common/src/deposit.rs index c4ab486e91..1c620490e4 100644 --- a/crates/common/src/deposit.rs +++ b/crates/common/src/deposit.rs @@ -1,11 +1,7 @@ -use crate::transaction::{TransactionArgs, TransactionArgsError, WritableTransactionExecuteError}; -use alloy::primitives::{Address, B256, U256}; -use alloy_ethers_typecast::{ - ReadContractParametersBuilder, ReadContractParametersBuilderError, ReadableClient, - ReadableClientError, WritableClientError, +use crate::transaction::{ + read_call, TransactionArgs, TransactionArgsError, WritableTransactionExecuteError, }; -#[cfg(not(target_family = "wasm"))] -use alloy_ethers_typecast::{WriteTransaction, WriteTransactionStatus}; +use alloy::primitives::{Address, B256, U256}; use rain_math_float::{Float, FloatError}; #[cfg(not(target_family = "wasm"))] use raindex_bindings::IERC20::approveCall; @@ -13,17 +9,11 @@ use raindex_bindings::{IRaindexV6::deposit4Call, IERC20::allowanceCall}; use serde::{Deserialize, Serialize}; use thiserror::Error; +#[cfg(not(target_family = "wasm"))] +use crate::write_tx::{execute_write_tx, WriteTransactionStatus}; + #[derive(Error, Debug)] pub enum DepositError { - #[error(transparent)] - ReadableClientError(#[from] ReadableClientError), - - #[error(transparent)] - ReadContractParametersBuilderError(#[from] ReadContractParametersBuilderError), - - #[error(transparent)] - WritableClientError(#[from] WritableClientError), - #[error(transparent)] WritableTransactionExecuteError(#[from] WritableTransactionExecuteError), @@ -46,72 +36,62 @@ impl TryFrom for deposit4Call { type Error = FloatError; fn try_from(val: DepositArgs) -> Result { - let call = deposit4Call { + Ok(deposit4Call { token: val.token, vaultId: val.vault_id, depositAmount: val.amount.get_inner(), tasks: vec![], - }; - - Ok(call) + }) } } impl DepositArgs { - /// Execute read IERC20 allowance call pub async fn read_allowance( &self, owner: Address, transaction_args: TransactionArgs, ) -> Result { - let readable_client = ReadableClient::new_from_http_urls(transaction_args.rpcs.clone())?; - let parameters = ReadContractParametersBuilder::::default() - .address(self.token) - .call(allowanceCall { + let res = read_call( + &transaction_args.rpcs, + self.token, + allowanceCall { owner, spender: transaction_args.raindex_address, - }) - .build()?; - let res = readable_client.read(parameters).await?; - + }, + ) + .await?; Ok(res) } - /// Execute IERC20 approve call #[cfg(not(target_family = "wasm"))] - pub async fn execute_approve)>( + pub async fn execute_approve( &self, transaction_args: TransactionArgs, transaction_status_changed: S, ) -> Result<(), DepositError> { let (ledger_client, address) = transaction_args.clone().try_into_ledger_client().await?; - // Check allowance already granted for this token and contract let current_allowance = self .read_allowance(address, transaction_args.clone()) .await?; let current_allowance_float = Float::from_fixed_decimal(current_allowance, self.decimals)?; - // If allowance differs from desired amount, overwrite it with the target value if !current_allowance_float.eq(self.amount)? { let approve_call = approveCall { spender: transaction_args.raindex_address, amount: self.amount.to_fixed_decimal(self.decimals)?, }; - let params = - transaction_args.try_into_write_contract_parameters(approve_call, self.token)?; + let tx_request = + transaction_args.try_into_transaction_request(approve_call, self.token)?; - WriteTransaction::new(ledger_client, params, 4, transaction_status_changed) - .execute() - .await?; + execute_write_tx(ledger_client, tx_request, 4, transaction_status_changed).await?; } Ok(()) } - /// Execute Raindex deposit call #[cfg(not(target_family = "wasm"))] - pub async fn execute_deposit)>( + pub async fn execute_deposit( &self, transaction_args: TransactionArgs, transaction_status_changed: S, @@ -119,127 +99,11 @@ impl DepositArgs { let (ledger_client, _) = transaction_args.clone().try_into_ledger_client().await?; let deposit_call: deposit4Call = self.clone().try_into()?; - let params = transaction_args - .try_into_write_contract_parameters(deposit_call, transaction_args.raindex_address)?; + let tx_request = transaction_args + .try_into_transaction_request(deposit_call, transaction_args.raindex_address)?; - WriteTransaction::new(ledger_client, params, 4, transaction_status_changed) - .execute() - .await?; + execute_write_tx(ledger_client, tx_request, 4, transaction_status_changed).await?; Ok(()) } } - -#[cfg(all(test, not(target_family = "wasm")))] -mod tests { - use super::*; - use alloy::primitives::{address, Address, B256}; - use httpmock::MockServer; - use serde_json::json; - use std::str::FromStr; - - #[test] - fn test_deposit_args_into() { - let args = DepositArgs { - token: address!("1234567890abcdef1234567890abcdef12345678"), - vault_id: B256::from(U256::from(42)), - amount: Float::from_fixed_decimal(U256::from(123), 6).unwrap(), - decimals: 6, - }; - - let deposit_call: deposit4Call = args.try_into().unwrap(); - - assert_eq!( - deposit_call.token, - address!("1234567890abcdef1234567890abcdef12345678") - ); - assert_eq!(deposit_call.vaultId, B256::from(U256::from(42))); - let amount = Float::parse("0.000123".to_string()).unwrap().get_inner(); - assert_eq!(deposit_call.depositAmount, amount); - } - - #[tokio::test] - async fn test_read_allowance() { - let rpc_server = MockServer::start_async().await; - - rpc_server.mock(|when, then| { - when.path("/rpc").body_contains("0xdd62ed3e"); - let value = B256::left_padding_from(&[200u8]).to_string(); - then.json_body(json!({ - "jsonrpc": "2.0", - "id": 1, - "result": value, - })); - }); - - let args = DepositArgs { - token: Address::from_str("0x1234567890abcdef1234567890abcdef12345678").unwrap(), - vault_id: B256::from(U256::from(42)), - amount: Float::from_fixed_decimal(U256::from(100), 18).unwrap(), - decimals: 18, - }; - - let res = args - .read_allowance( - Address::ZERO, - TransactionArgs { - rpcs: vec![rpc_server.url("/rpc")], - raindex_address: Address::ZERO, - ..Default::default() - }, - ) - .await - .unwrap(); - assert_eq!(res, U256::from(200)); - } - - #[test] - fn test_deposit_call_try_into_write_contract_parameters() { - let args = TransactionArgs { - rpcs: vec!["http://test.com".to_string()], - raindex_address: Address::ZERO, - derivation_index: Some(0_usize), - chain_id: Some(1), - max_priority_fee_per_gas: Some(200), - max_fee_per_gas: Some(100), - }; - - let amount = Float::parse("100".to_string()).unwrap().get_inner(); - let deposit_call = deposit4Call { - token: Address::ZERO, - vaultId: B256::from(U256::from(42)), - depositAmount: amount, - tasks: vec![], - }; - let params = args - .try_into_write_contract_parameters(deposit_call.clone(), Address::ZERO) - .unwrap(); - assert_eq!(params.address, Address::ZERO); - assert_eq!(params.call, deposit_call); - assert_eq!(params.max_priority_fee_per_gas, Some(200)); - assert_eq!(params.max_fee_per_gas, Some(100)); - } - - #[test] - fn test_approve_call_try_into_write_contract_parameters() { - let args = TransactionArgs { - rpcs: vec!["http://test.com".to_string()], - raindex_address: Address::ZERO, - derivation_index: Some(0_usize), - chain_id: Some(1), - max_priority_fee_per_gas: Some(200), - max_fee_per_gas: Some(100), - }; - let approve_call = approveCall { - spender: Address::ZERO, - amount: U256::from(100), - }; - let params = args - .try_into_write_contract_parameters(approve_call.clone(), Address::ZERO) - .unwrap(); - assert_eq!(params.address, Address::ZERO); - assert_eq!(params.call, approve_call); - assert_eq!(params.max_priority_fee_per_gas, Some(200)); - assert_eq!(params.max_fee_per_gas, Some(100)); - } -} diff --git a/crates/common/src/lib.rs b/crates/common/src/lib.rs index a2c3c1036f..672a8acab7 100644 --- a/crates/common/src/lib.rs +++ b/crates/common/src/lib.rs @@ -25,6 +25,8 @@ pub mod types; pub mod unit_tests; pub mod utils; pub mod withdraw; +#[cfg(not(target_family = "wasm"))] +pub mod write_tx; pub use dotrain; pub use dotrain_lsp; #[cfg(test)] diff --git a/crates/common/src/remove_order.rs b/crates/common/src/remove_order.rs index 12e334f318..fdb678a4d8 100644 --- a/crates/common/src/remove_order.rs +++ b/crates/common/src/remove_order.rs @@ -1,11 +1,10 @@ #[cfg(not(target_family = "wasm"))] use crate::transaction::TransactionArgs; use crate::transaction::TransactionArgsError; +#[cfg(not(target_family = "wasm"))] +use crate::write_tx::{execute_write_tx, WriteTransactionError, WriteTransactionStatus}; use alloy::primitives::hex::FromHexError; use alloy::sol_types::SolCall; -use alloy_ethers_typecast::WritableClientError; -#[cfg(not(target_family = "wasm"))] -use alloy_ethers_typecast::{WriteTransaction, WriteTransactionStatus}; use raindex_bindings::IRaindexV6::removeOrder3Call; use raindex_subgraph_client::types::{common::SgOrder, order_detail_traits::OrderDetailError}; use serde::{Deserialize, Serialize}; @@ -13,8 +12,9 @@ use thiserror::Error; #[derive(Error, Debug)] pub enum RemoveOrderArgsError { + #[cfg(not(target_family = "wasm"))] #[error(transparent)] - WritableClientError(#[from] WritableClientError), + WriteTransaction(#[from] WriteTransactionError), #[error(transparent)] TransactionArgs(#[from] TransactionArgsError), #[error(transparent)] @@ -47,7 +47,7 @@ impl TryInto for RemoveOrderArgs { impl RemoveOrderArgs { #[cfg(not(target_family = "wasm"))] - pub async fn execute)>( + pub async fn execute( self, transaction_args: TransactionArgs, transaction_status_changed: S, @@ -55,14 +55,10 @@ impl RemoveOrderArgs { let (ledger_client, _) = transaction_args.clone().try_into_ledger_client().await?; let remove_order_call: removeOrder3Call = self.try_into()?; - let params = transaction_args.try_into_write_contract_parameters( - remove_order_call, - transaction_args.raindex_address, - )?; + let tx_request = transaction_args + .try_into_transaction_request(remove_order_call, transaction_args.raindex_address)?; - WriteTransaction::new(ledger_client, params, 4, transaction_status_changed) - .execute() - .await?; + execute_write_tx(ledger_client, tx_request, 4, transaction_status_changed).await?; Ok(()) } @@ -72,97 +68,3 @@ impl RemoveOrderArgs { Ok(remove_order_call.abi_encode()) } } - -#[cfg(all(test, not(target_family = "wasm")))] -mod tests { - use super::*; - use alloy::primitives::Address; - use raindex_bindings::IRaindexV6::removeOrder3Call; - use raindex_subgraph_client::types::common::{SgBigInt, SgBytes, SgErc20, SgRaindex, SgVault}; - use raindex_subgraph_client::utils::float::*; - - fn get_order() -> SgOrder { - SgOrder { - id: SgBytes( - "0x99db88d9726c5dbcea240be8eba022d2fd6dd40f6d947dc28cda692a9ba8e6ae".to_string(), - ), - order_bytes: SgBytes( - "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000018a62a3ac2ca9f775a4a12380eda03245270b73e00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000002602d79fbdfab4699235b5e9d2144f3bab5e2d887c3f4df9d1a1a1bef1d9d5b81b20000000000000000000000005fb33d710f8b58de4c9fdec703b5c2487a5219d600000000000000000000000084c6e7f5a1e5dd89594cc25bef4722a1b8871ae6000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000ad00000000000000000000000000000000000000000000000000000000000000020000000000000000000000001d80c49bbbcd1c0911346656b529df9e5c2f783d0000000000000000000000000000000000000000000000000214e8348c4f0000000000000000000000000000000000000000000000000000000000000000002d0200000024080500021810000001100001361100000110000101100000031000041e12000022130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000b38e83b86d491735feaa0a791f65c2b995353960000000000000000000000000000000000000000000000000000000000000006d23be6b1eb755ac469bba083cade61d48f156fc531662469291dc04a0782964500000000000000000000000000000000000000000000000000000000000000010000000000000000000000001d80c49bbbcd1c0911346656b529df9e5c2f783d0000000000000000000000000000000000000000000000000000000000000012d23be6b1eb755ac469bba083cade61d48f156fc531662469291dc04a07829645".to_string(), - ), - order_hash: SgBytes( - "0x99db88d9726c5dbcea240be8eba022d2fd6dd40f6d947dc28cda692a9ba8e6ae".to_string(), - ), - owner: SgBytes("0x18a62a3ac2ca9f775a4a12380eda03245270b73e".to_string()), - outputs: vec![ - SgVault { - id: SgBytes("0xfd661f641ed6f13210fa83be991d7afc8e290202473f1fa9548a8e5654984575".to_string()), - owner: SgBytes("0x18a62a3ac2ca9f775a4a12380eda03245270b73e".to_string()), - vault_id: SgBytes("95091534377674853556918913044061641909871616138258204934350492514947914962501".to_string()), - balance: SgBytes(F50.as_hex()), - token: SgErc20 { - id: SgBytes("0x1d80c49bbbcd1c0911346656b529df9e5c2f783d".to_string()), - address: SgBytes("0x1d80c49bbbcd1c0911346656b529df9e5c2f783d".to_string()), - name: Some("Wrapped Flare".to_string()), - symbol: Some("WFLR".to_string()), - decimals: Some(SgBigInt("18".to_string())), - }, - raindex: SgRaindex { - id: SgBytes("0xcee8cd002f151a536394e564b84076c41bbbcd4d".to_string()), - }, - orders_as_output: vec![], - orders_as_input: vec![], - balance_changes: vec![], - }, - ], - inputs: vec![], - raindex: SgRaindex { - id: SgBytes("0xcee8cd002f151a536394e564b84076c41bbbcd4d".to_string()), - }, - active: true, - timestamp_added: SgBigInt("1745524403".to_string()), - meta: None, - add_events: vec![], - remove_events: vec![], - trades: vec![], - } - } - - #[tokio::test] - async fn test_remove_order_calldata() { - let remove_order_args = RemoveOrderArgs { order: get_order() }; - let calldata = remove_order_args.get_rm_order_calldata().await.unwrap(); - - let remove_order_call = removeOrder3Call { - order: get_order().try_into().unwrap(), - tasks: vec![], - }; - let expected_calldata = remove_order_call.abi_encode(); - - assert_eq!(calldata, expected_calldata); - } - - #[test] - fn test_try_into_remove_order_call() { - let remove_order_call = removeOrder3Call { - order: get_order().try_into().unwrap(), - tasks: vec![], - }; - - let args = TransactionArgs { - rpcs: vec!["http://test.com".to_string()], - raindex_address: Address::ZERO, - derivation_index: Some(0_usize), - chain_id: Some(1), - max_priority_fee_per_gas: Some(200), - max_fee_per_gas: Some(100), - }; - - let params = args - .try_into_write_contract_parameters(remove_order_call.clone(), args.raindex_address) - .unwrap(); - assert_eq!(params.address, args.raindex_address); - assert_eq!(params.call, remove_order_call); - assert_eq!(params.max_priority_fee_per_gas, Some(200)); - assert_eq!(params.max_fee_per_gas, Some(100)); - } -} diff --git a/crates/common/src/transaction.rs b/crates/common/src/transaction.rs index b28b95933a..db72f85494 100644 --- a/crates/common/src/transaction.rs +++ b/crates/common/src/transaction.rs @@ -1,24 +1,29 @@ use alloy::primitives::{ruint::FromUintError, Address}; +use alloy::providers::Provider; +use alloy::rpc::types::TransactionRequest; use alloy::sol_types::SolCall; +use alloy::transports::TransportError; use rain_math_float::FloatError; +use raindex_bindings::provider::{mk_read_provider, ReadProviderError}; use serde::{Deserialize, Serialize}; use thiserror::Error; +use url::Url; #[cfg(not(target_family = "wasm"))] use alloy::{ network::AnyNetwork, - providers::{Provider, ProviderBuilder, WalletProvider}, + providers::{ProviderBuilder, WalletProvider}, signers::ledger::{HDPath, LedgerError, LedgerSigner}, }; -use alloy_ethers_typecast::{ - ReadableClient, ReadableClientError, WritableClientError, WriteContractParameters, - WriteContractParametersBuilder, WriteContractParametersBuilderError, -}; + +#[cfg(not(target_family = "wasm"))] +use crate::write_tx::WriteTransactionError; #[derive(Error, Debug)] pub enum WritableTransactionExecuteError { + #[cfg(not(target_family = "wasm"))] #[error(transparent)] - WritableClient(#[from] WritableClientError), + WriteTransaction(#[from] WriteTransactionError), #[error(transparent)] TransactionArgs(#[from] TransactionArgsError), #[cfg(not(target_family = "wasm"))] @@ -32,22 +37,23 @@ pub enum WritableTransactionExecuteError { #[derive(Error, Debug)] pub enum TransactionArgsError { - #[error(transparent)] - BuildParameters(#[from] WriteContractParametersBuilderError), #[error(transparent)] ChainIdParse(#[from] FromUintError), #[error("Chain ID is required, but set to None")] ChainIdNone, #[error(transparent)] - ReadableClient(#[from] ReadableClientError), - #[cfg(not(target_family = "wasm"))] + Transport(#[from] TransportError), #[error(transparent)] - Ledger(#[from] LedgerError), - #[cfg(not(target_family = "wasm"))] + ReadProvider(#[from] ReadProviderError), #[error(transparent)] Url(#[from] url::ParseError), + #[cfg(not(target_family = "wasm"))] + #[error(transparent)] + Ledger(#[from] LedgerError), #[error("Invalid input args: {0}")] InvalidArgs(String), + #[error("ABI decode error: {0}")] + AbiDecode(String), } #[derive(Clone, Serialize, Deserialize, Default)] @@ -61,30 +67,27 @@ pub struct TransactionArgs { } impl TransactionArgs { - pub fn try_into_write_contract_parameters( + pub fn try_into_transaction_request( &self, call: T, contract: Address, - ) -> Result, TransactionArgsError> { - let params = WriteContractParametersBuilder::default() - .address(contract) - .call(call) - .max_priority_fee_per_gas(self.max_priority_fee_per_gas) - .max_fee_per_gas(self.max_fee_per_gas) - .build()?; - - Ok(params) + ) -> Result { + let mut tx = TransactionRequest::default() + .to(contract) + .input(call.abi_encode().into()); + if let Some(max_priority) = self.max_priority_fee_per_gas { + tx = tx.max_priority_fee_per_gas(max_priority); + } + if let Some(max_fee) = self.max_fee_per_gas { + tx = tx.max_fee_per_gas(max_fee); + } + Ok(tx) } pub async fn try_fill_chain_id(&mut self) -> Result<(), TransactionArgsError> { if self.chain_id.is_none() { - let chain_id = ReadableClient::new_from_http_urls(self.rpcs.clone())? - .get_chainid() - .await?; - - self.chain_id = Some(chain_id); + self.chain_id = Some(read_chain_id(&self.rpcs).await?); } - Ok(()) } @@ -128,163 +131,32 @@ impl TransactionArgs { } } - // if we are here, we have tried all rpcs and failed Err(err.unwrap()) } } -#[cfg(all(test, not(target_family = "wasm")))] -mod tests { - use alloy::primitives::{address, B256, U256}; - use httpmock::MockServer; - - use super::*; - use raindex_bindings::IRaindexV6::vaultBalance2Call; - - #[test] - fn test_try_into_write_contract_parameters_ok() { - let args = TransactionArgs { - raindex_address: Address::ZERO, - derivation_index: None, - chain_id: None, - rpcs: vec!["https://mainnet.infura.io/v3/your-api-key".to_string()], - max_priority_fee_per_gas: None, - max_fee_per_gas: None, - }; - - let call = vaultBalance2Call { - owner: Address::ZERO, - token: Address::ZERO, - vaultId: B256::ZERO, - }; - - let params = args - .try_into_write_contract_parameters(call.clone(), Address::ZERO) - .unwrap(); - - assert_eq!(params.address, Address::ZERO); - assert_eq!(params.call, call); - assert_eq!(params.max_priority_fee_per_gas, None); - assert_eq!(params.max_fee_per_gas, None); - - let args = TransactionArgs { - raindex_address: address!("123abcdef24Ca5003905aA834De7156C68b2E1d0"), - derivation_index: Some(0), - chain_id: Some(1), - rpcs: vec!["https://mainnet.infura.io/v3/your-api-key".to_string()], - max_priority_fee_per_gas: Some(100), - max_fee_per_gas: Some(200), - }; - - let call = vaultBalance2Call { - owner: address!("b20a608c624Ca5003905aA834De7156C68b2E1d0"), - token: address!("00000000219ab540356cBB839Cbe05303d7705Fa"), - vaultId: B256::from(U256::from(123456)), - }; - - let params = args - .try_into_write_contract_parameters( - call.clone(), - address!("0000000000000000000000000123456789abcdef"), - ) - .unwrap(); - - assert_eq!( - params.address, - address!("0000000000000000000000000123456789abcdef") - ); - assert_eq!(params.call, call); - assert_eq!(params.max_priority_fee_per_gas, Some(100)); - assert_eq!(params.max_fee_per_gas, Some(200)); - } - - #[tokio::test] - async fn test_try_fill_chain_id_ok() { - let server = MockServer::start(); - - server.mock(|when, then| { - when.path("/rpc").body_contains("eth_chainId"); - - then.status(200) - .header("content-type", "application/json") - .body(r#"{ "jsonrpc": "2.0", "id": 1, "result": "0x1" }"#); - }); - - let mut args = TransactionArgs { - raindex_address: Address::ZERO, - derivation_index: None, - chain_id: None, - rpcs: vec![server.url("/rpc")], - max_priority_fee_per_gas: None, - max_fee_per_gas: None, - }; - - args.try_fill_chain_id().await.unwrap(); - assert_eq!(args.chain_id, Some(1)); - - // the URL is invalid but it shouldn't be used now that chain ID is set - args.rpcs = vec!["".to_string()]; - args.try_fill_chain_id().await.unwrap(); - assert_eq!(args.chain_id, Some(1)); - } - - #[tokio::test] - async fn test_try_fill_chain_id_err() { - let server = MockServer::start(); - - server.mock(|when, then| { - when.path("/rpc").body_contains("eth_chainId"); - then.status(500); - }); - - let mut args = TransactionArgs { - raindex_address: Address::ZERO, - derivation_index: None, - chain_id: None, - rpcs: vec![server.url("/rpc")], - max_priority_fee_per_gas: None, - max_fee_per_gas: None, - }; - - let err = args.try_fill_chain_id().await.unwrap_err(); - assert!( - matches!( - &err, - TransactionArgsError::ReadableClient(ReadableClientError::AllProvidersFailed(ref msg)) - if msg.get(&args.rpcs[0]).is_some() - && matches!( - msg.get(&args.rpcs[0]).unwrap(), - ReadableClientError::ReadChainIdError(_) - ) - ), - "unexpected error variant: {err:?}" - ); - } - - #[tokio::test] - async fn test_try_into_ledger_client_err() { - let server = MockServer::start(); - - server.mock(|when, then| { - when.path("/rpc").body_contains("eth_chainId"); - then.status(200) - .body(r#"{ "jsonrpc": "2.0", "id": 1, "result": "0x1" }"#); - }); - - let args = TransactionArgs { - raindex_address: Address::ZERO, - derivation_index: None, - chain_id: None, - rpcs: vec![server.url("/rpc")], - max_priority_fee_per_gas: None, - max_fee_per_gas: None, - }; - - let result = args.clone().try_into_ledger_client().await; - assert!(result.is_err()); - } +pub async fn read_chain_id(rpcs: &[String]) -> Result { + let urls = rpcs + .iter() + .map(|s| s.parse::()) + .collect::, _>>()?; + let provider = mk_read_provider(&urls)?; + Ok(provider.get_chain_id().await?) +} - // NOTE: `alloy` ignores all ledger tests so it seems like there is no way - // to mock a device. hence there is only a test case for a scenario that - // should fail regardless of whether a ledger is connected or not +pub async fn read_call( + rpcs: &[String], + contract: Address, + call: C, +) -> Result { + let urls = rpcs + .iter() + .map(|s| s.parse::()) + .collect::, _>>()?; + let provider = mk_read_provider(&urls)?; + let tx = TransactionRequest::default() + .to(contract) + .input(call.abi_encode().into()); + let bytes = provider.call(tx).await?; + C::abi_decode_returns(&bytes).map_err(|e| TransactionArgsError::AbiDecode(e.to_string())) } diff --git a/crates/common/src/withdraw.rs b/crates/common/src/withdraw.rs index 8fe61c9c0f..822bdb94f1 100644 --- a/crates/common/src/withdraw.rs +++ b/crates/common/src/withdraw.rs @@ -1,10 +1,10 @@ #[cfg(not(target_family = "wasm"))] use crate::transaction::TransactionArgs; use crate::transaction::WritableTransactionExecuteError; +#[cfg(not(target_family = "wasm"))] +use crate::write_tx::{execute_write_tx, WriteTransactionStatus}; use alloy::primitives::{Address, B256}; use alloy::sol_types::SolCall; -#[cfg(not(target_family = "wasm"))] -use alloy_ethers_typecast::{WriteTransaction, WriteTransactionStatus}; use serde::{Deserialize, Serialize}; use rain_math_float::Float; @@ -29,9 +29,8 @@ impl From for withdraw4Call { } impl WithdrawArgs { - /// Execute Raindex withdraw call #[cfg(not(target_family = "wasm"))] - pub async fn execute)>( + pub async fn execute( &self, transaction_args: TransactionArgs, transaction_status_changed: S, @@ -39,12 +38,10 @@ impl WithdrawArgs { let (ledger_client, _) = transaction_args.clone().try_into_ledger_client().await?; let withdraw_call: withdraw4Call = self.clone().into(); - let params = transaction_args - .try_into_write_contract_parameters(withdraw_call, transaction_args.raindex_address)?; + let tx_request = transaction_args + .try_into_transaction_request(withdraw_call, transaction_args.raindex_address)?; - WriteTransaction::new(ledger_client, params, 4, transaction_status_changed) - .execute() - .await?; + execute_write_tx(ledger_client, tx_request, 4, transaction_status_changed).await?; Ok(()) } @@ -54,79 +51,3 @@ impl WithdrawArgs { Ok(withdraw_call.abi_encode()) } } - -#[cfg(all(test, not(target_family = "wasm")))] -mod tests { - use super::*; - use alloy::primitives::{address, U256}; - use std::str::FromStr; - - #[test] - fn test_withdraw_args_into() { - let amount = Float::parse("100".to_string()).unwrap(); - let args = WithdrawArgs { - token: "0x1234567890abcdef1234567890abcdef12345678" - .parse::
() - .unwrap(), - vault_id: B256::from(U256::from(42)), - target_amount: amount, - }; - - let withdraw_call: withdraw4Call = args.into(); - assert_eq!( - withdraw_call.token, - address!("1234567890abcdef1234567890abcdef12345678") - ); - assert_eq!(withdraw_call.vaultId, B256::from(U256::from(42))); - assert_eq!(withdraw_call.targetAmount, amount.get_inner()); - } - - #[tokio::test] - async fn test_get_withdraw_calldata() { - let amount = Float::parse("100".to_string()).unwrap(); - let args = WithdrawArgs { - token: Address::from_str("0x1234567890abcdef1234567890abcdef12345678").unwrap(), - vault_id: B256::from(U256::from(42)), - target_amount: amount, - }; - let calldata = args.get_withdraw_calldata().await.unwrap(); - - let expected_calldata = withdraw4Call { - token: Address::from_str("0x1234567890abcdef1234567890abcdef12345678").unwrap(), - vaultId: B256::from(U256::from(42)), - targetAmount: amount.get_inner(), - tasks: vec![], - } - .abi_encode(); - - assert_eq!(calldata, expected_calldata); - assert_eq!(calldata.len(), 164); - } - - #[test] - fn test_withdraw_call_try_into_write_contract_parameters() { - let args = TransactionArgs { - rpcs: vec!["http://test.com".to_string()], - raindex_address: Address::ZERO, - derivation_index: Some(0_usize), - chain_id: Some(1), - max_priority_fee_per_gas: Some(200), - max_fee_per_gas: Some(100), - }; - - let amount = Float::parse("456".to_string()).unwrap().get_inner(); - let withdraw_call = withdraw4Call { - token: Address::from_str("0x1234567890abcdef1234567890abcdef12345678").unwrap(), - vaultId: B256::from(U256::from(123)), - targetAmount: amount, - tasks: vec![], - }; - let params = args - .try_into_write_contract_parameters(withdraw_call.clone(), Address::ZERO) - .unwrap(); - assert_eq!(params.address, Address::ZERO); - assert_eq!(params.call, withdraw_call); - assert_eq!(params.max_priority_fee_per_gas, Some(200)); - assert_eq!(params.max_fee_per_gas, Some(100)); - } -} diff --git a/crates/common/src/write_tx.rs b/crates/common/src/write_tx.rs new file mode 100644 index 0000000000..07abad6092 --- /dev/null +++ b/crates/common/src/write_tx.rs @@ -0,0 +1,59 @@ +use alloy::network::{AnyNetwork, AnyReceiptEnvelope}; +use alloy::providers::{Provider, WalletProvider}; +use alloy::rpc::types::{Log, TransactionReceipt, TransactionRequest}; +use thiserror::Error; + +#[derive(Clone, Debug)] +pub enum WriteTransactionStatus { + PendingPrepare(Box), + PendingSign(Box), + Sending, + Confirmed(Box>>), +} + +#[derive(Debug, Error)] +pub enum WriteTransactionError { + #[error("Failed to send transaction: {0}")] + Send(String), + #[error("Failed to confirm transaction: {0}")] + Confirmation(String), + #[error("Transaction reverted")] + Reverted, +} + +pub async fn execute_write_tx< + P: Provider + WalletProvider + Clone, + F: Fn(WriteTransactionStatus), +>( + provider: P, + tx_request: TransactionRequest, + confirmations: u8, + status_changed: F, +) -> Result<(), WriteTransactionError> { + status_changed(WriteTransactionStatus::PendingPrepare(Box::new( + tx_request.clone(), + ))); + status_changed(WriteTransactionStatus::PendingSign(Box::new( + tx_request.clone(), + ))); + + let pending_tx = provider + .send_transaction(tx_request) + .await + .map_err(|e| WriteTransactionError::Send(e.to_string()))? + .with_required_confirmations(u64::from(confirmations)); + + status_changed(WriteTransactionStatus::Sending); + + let receipt = pending_tx + .get_receipt() + .await + .map_err(|e| WriteTransactionError::Confirmation(e.to_string()))?; + + if !receipt.inner.inner.status() { + return Err(WriteTransactionError::Reverted); + } + + status_changed(WriteTransactionStatus::Confirmed(Box::new(receipt.inner))); + Ok(()) +} diff --git a/crates/js_api/Cargo.toml b/crates/js_api/Cargo.toml index eee4356a65..275223c4dd 100644 --- a/crates/js_api/Cargo.toml +++ b/crates/js_api/Cargo.toml @@ -21,14 +21,13 @@ raindex_app_settings = { workspace = true } raindex_subgraph_client = { workspace = true } raindex_bindings = { workspace = true } raindex_quote = { workspace = true } -alloy-ethers-typecast = { workspace = true } wasm-bindgen-utils = { workspace = true } tokio = { workspace = true, features = [ - "sync", - "macros", - "io-util", - "rt", - "time", + "sync", + "macros", + "io-util", + "rt", + "time", ] } alloy = { workspace = true, features = ["dyn-abi"] } flate2 = "1.0.34" diff --git a/crates/quote/Cargo.toml b/crates/quote/Cargo.toml index 540f99f65f..418c74ef5c 100644 --- a/crates/quote/Cargo.toml +++ b/crates/quote/Cargo.toml @@ -19,7 +19,6 @@ raindex_subgraph_client = { workspace = true } futures = { workspace = true } rain-error-decoding = { workspace = true } alloy = { workspace = true, features = ["sol-types"] } -alloy-ethers-typecast = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } thiserror = { workspace = true } diff --git a/lib/rain.interpreter b/lib/rain.interpreter index 2c041df702..bbd39eaefb 160000 --- a/lib/rain.interpreter +++ b/lib/rain.interpreter @@ -1 +1 @@ -Subproject commit 2c041df70284be63edfdbec209ff17a318eee279 +Subproject commit bbd39eaefb0087f6c877d92cb53cdfd95f34452d From 86ec6e07260b6e4d71d2ca8fe23ae4de7f3a9c1d Mon Sep 17 00:00:00 2001 From: David Meister Date: Sat, 23 May 2026 06:40:35 +0000 Subject: [PATCH 07/27] ci: stop recursing submodules during checkout Co-Authored-By: Claude Opus 4.7 --- .github/workflows/copilot-setup-steps.yml | 8 +------- .github/workflows/deploy-subgraph.yaml | 7 +------ .github/workflows/git-clean.yaml | 10 +--------- .github/workflows/manual-rs-release.yml | 6 +----- .github/workflows/manual-sol-artifacts.yaml | 9 +-------- .github/workflows/rainix.yaml | 11 ++--------- .github/workflows/test-subgraph.yml | 11 +---------- .github/workflows/test-ui-components.yaml | 14 +------------- .github/workflows/test-webapp.yaml | 17 ++--------------- .github/workflows/vercel-docs-preview.yaml | 12 ++---------- .github/workflows/vercel-docs-prod.yaml | 8 +------- .github/workflows/vercel-preview.yaml | 2 +- .github/workflows/vercel-prod.yaml | 11 +---------- 13 files changed, 16 insertions(+), 110 deletions(-) diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml index f37dd2d13c..fbe1899776 100644 --- a/.github/workflows/copilot-setup-steps.yml +++ b/.github/workflows/copilot-setup-steps.yml @@ -1,5 +1,4 @@ name: Copilot Agent Setup - on: workflow_dispatch: push: @@ -17,35 +16,30 @@ jobs: steps: - uses: actions/checkout@v4 with: - submodules: recursive + submodules: true fetch-depth: 0 - - uses: nixbuild/nix-quick-install-action@v30 with: nix_conf: | keep-env-derivations = true keep-outputs = true - - name: Restore and save Nix store uses: nix-community/cache-nix-action@v6 with: primary-key: nix-${{ runner.os }}-${{ hashFiles('**/*.nix', '**/flake.lock') }} restore-prefixes-first-match: nix-${{ runner.os }}- gc-max-store-size-linux: 1G - - name: Prepare environment files run: | set -euxo pipefail cp -f .env.example .env cp -f packages/webapp/.env.example packages/webapp/.env cp -f .env.example crates/common/.env - - name: Prepare repository dependencies run: ./prep-all.sh env: PUBLIC_WALLETCONNECT_PROJECT_ID: ${{ secrets.WALLETCONNECT_PROJECT_ID || 'test' }} COMMIT_SHA: ${{ github.sha }} - # forwards status to telegram chat if this ci fails or gets canceled, only runs for default branch - name: Forward CI Status if: always() diff --git a/.github/workflows/deploy-subgraph.yaml b/.github/workflows/deploy-subgraph.yaml index c0e9e51f40..762d7ee18d 100644 --- a/.github/workflows/deploy-subgraph.yaml +++ b/.github/workflows/deploy-subgraph.yaml @@ -1,7 +1,6 @@ name: Deploy subgraph on: workflow_dispatch: - jobs: deploy: permissions: @@ -14,12 +13,10 @@ jobs: steps: - uses: actions/checkout@v4 with: - submodules: recursive + submodules: true fetch-depth: 0 - - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 - - uses: nixbuild/nix-quick-install-action@v30 with: nix_conf: | @@ -31,9 +28,7 @@ jobs: primary-key: nix-${{ runner.os }}-${{ hashFiles('**/*.nix', '**/flake.lock') }} restore-prefixes-first-match: nix-${{ runner.os }}- gc-max-store-size-linux: 1G - - run: nix develop -c subgraph-deploy - # forwards status to telegram chat if this ci fails or gets canceled, only runs for default branch - name: Forward CI Status if: always() diff --git a/.github/workflows/git-clean.yaml b/.github/workflows/git-clean.yaml index dde5610f0e..554700e9bf 100644 --- a/.github/workflows/git-clean.yaml +++ b/.github/workflows/git-clean.yaml @@ -4,11 +4,9 @@ on: branches: - main pull_request: - concurrency: group: ${{ github.ref }}-git-clean cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} - jobs: git-clean: permissions: @@ -18,12 +16,10 @@ jobs: steps: - uses: actions/checkout@v4 with: - submodules: recursive + submodules: true fetch-depth: 0 - - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 - - uses: nixbuild/nix-quick-install-action@v30 with: nix_conf: | @@ -40,17 +36,13 @@ jobs: # before trying to save a new cache # 1G = 1073741824 gc-max-store-size-linux: 1G - # Build metas etc. required to do a correct pointer build. - run: ./pointers.sh - # Format the repo after generating pointers so that the pointer files are # formatted too. - run: nix develop -c forge fmt - # Check if the repo is clean after generating pointers and formatting. - run: git diff --exit-code - # forwards status to telegram chat if this ci fails or gets canceled, only runs for default branch - name: Forward CI Status if: always() # This ensures it runs regardless of previous step outcomes diff --git a/.github/workflows/manual-rs-release.yml b/.github/workflows/manual-rs-release.yml index 52b6a94fed..3a8274883e 100644 --- a/.github/workflows/manual-rs-release.yml +++ b/.github/workflows/manual-rs-release.yml @@ -1,6 +1,5 @@ name: Manual rs release on: [workflow_dispatch] - jobs: release: runs-on: ubuntu-latest @@ -11,8 +10,7 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 - submodules: recursive - + submodules: true - uses: nixbuild/nix-quick-install-action@v30 with: nix_conf: | @@ -29,9 +27,7 @@ jobs: # before trying to save a new cache # 1G = 1073741824 gc-max-store-size-linux: 1G - - run: nix develop --command cargo release --workspace - # forwards status to telegram chat if this ci fails or gets canceled, only runs for default branch - name: Forward CI Status if: always() diff --git a/.github/workflows/manual-sol-artifacts.yaml b/.github/workflows/manual-sol-artifacts.yaml index f50e495e56..c621345397 100644 --- a/.github/workflows/manual-sol-artifacts.yaml +++ b/.github/workflows/manual-sol-artifacts.yaml @@ -13,7 +13,6 @@ on: - arb-generic-pool-order-taker - arb-route-processor-order-taker - arb-generic-pool-flash-borrower - jobs: deploy: runs-on: ubuntu-latest @@ -23,9 +22,8 @@ jobs: steps: - uses: actions/checkout@v4 with: - submodules: recursive + submodules: true fetch-depth: 0 - - uses: nixbuild/nix-quick-install-action@v30 with: nix_conf: | @@ -42,11 +40,9 @@ jobs: # before trying to save a new cache # 1G = 1073741824 gc-max-store-size-linux: 1G - - run: nix develop -c rainix-sol-prelude - run: nix develop -c rainix-rs-prelude - run: nix develop -c raindex-prelude - - name: deploy to all supported networks run: nix develop -c rainix-sol-artifacts env: @@ -54,19 +50,16 @@ jobs: DEPLOY_BROADCAST: "1" DEPLOYMENT_KEY: ${{ secrets.PRIVATE_KEY }} ETH_RPC_URL: ${{ secrets.CI_DEPLOY_BASE_RPC_URL || vars.CI_DEPLOY_BASE_RPC_URL || '' }} - CI_DEPLOY_ARBITRUM_RPC_URL: ${{ secrets.CI_DEPLOY_ARBITRUM_RPC_URL || vars.CI_DEPLOY_ARBITRUM_RPC_URL || '' }} CI_DEPLOY_BASE_RPC_URL: ${{ secrets.CI_DEPLOY_BASE_RPC_URL || vars.CI_DEPLOY_BASE_RPC_URL || '' }} CI_DEPLOY_BASE_SEPOLIA_RPC_URL: ${{ secrets.CI_DEPLOY_BASE_SEPOLIA_RPC_URL || vars.CI_DEPLOY_BASE_SEPOLIA_RPC_URL || '' }} CI_DEPLOY_FLARE_RPC_URL: ${{ secrets.CI_DEPLOY_FLARE_RPC_URL || vars.CI_DEPLOY_FLARE_RPC_URL || '' }} CI_DEPLOY_POLYGON_RPC_URL: ${{ secrets.CI_DEPLOY_POLYGON_RPC_URL || vars.CI_DEPLOY_POLYGON_RPC_URL || '' }} - CI_DEPLOY_ARBITRUM_ETHERSCAN_API_KEY: ${{ secrets.CI_DEPLOY_ARBITRUM_ETHERSCAN_API_KEY || vars.CI_DEPLOY_ARBITRUM_ETHERSCAN_API_KEY || '' }} CI_DEPLOY_BASE_ETHERSCAN_API_KEY: ${{ secrets.CI_DEPLOY_BASE_ETHERSCAN_API_KEY || vars.CI_DEPLOY_BASE_ETHERSCAN_API_KEY || '' }} CI_DEPLOY_BASE_SEPOLIA_ETHERSCAN_API_KEY: ${{ secrets.CI_DEPLOY_BASE_SEPOLIA_ETHERSCAN_API_KEY || vars.CI_DEPLOY_BASE_SEPOLIA_ETHERSCAN_API_KEY || '' }} CI_DEPLOY_FLARE_ETHERSCAN_API_KEY: ${{ secrets.CI_DEPLOY_FLARE_ETHERSCAN_API_KEY || vars.CI_DEPLOY_FLARE_ETHERSCAN_API_KEY || '' }} CI_DEPLOY_POLYGON_ETHERSCAN_API_KEY: ${{ secrets.CI_DEPLOY_POLYGON_ETHERSCAN_API_KEY || vars.CI_DEPLOY_POLYGON_ETHERSCAN_API_KEY || '' }} - # forwards status to telegram chat if this ci fails or gets canceled, only runs for default branch - name: Forward CI Status if: always() diff --git a/.github/workflows/rainix.yaml b/.github/workflows/rainix.yaml index 782ffc87e9..cca0c41962 100644 --- a/.github/workflows/rainix.yaml +++ b/.github/workflows/rainix.yaml @@ -4,11 +4,9 @@ on: branches: - main pull_request: - concurrency: group: ${{ github.ref }}-rainix cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} - jobs: standard-tests: permissions: @@ -52,15 +50,13 @@ jobs: steps: - uses: actions/checkout@v4 with: - submodules: recursive + submodules: true fetch-depth: 0 - - name: Free disk space if: matrix.os == 'ubuntu-latest' uses: jlumbroso/free-disk-space@v1.3.1 with: large-packages: ${{ matrix.task != 'rainix-wasm-browser-test' }} - - uses: nixbuild/nix-quick-install-action@v30 with: nix_conf: | @@ -76,9 +72,7 @@ jobs: # collect garbage until the Nix store size is at most this number # before trying to save a new cache gc-max-store-size-linux: 10G - - run: ./pointers.sh - - name: Run ${{ matrix.task }} env: ETH_RPC_URL: ${{ secrets.CI_DEPLOY_BASE_RPC_URL || vars.CI_DEPLOY_BASE_RPC_URL || '' }} @@ -88,10 +82,9 @@ jobs: CI_DEPLOY_FLARE_RPC_URL: ${{ secrets.CI_DEPLOY_FLARE_RPC_URL || vars.CI_DEPLOY_FLARE_RPC_URL || '' }} CI_DEPLOY_POLYGON_RPC_URL: ${{ secrets.CI_DEPLOY_POLYGON_RPC_URL || vars.CI_DEPLOY_POLYGON_RPC_URL || '' }} run: nix develop -c ${{ matrix.task }} - # forwards status to telegram chat if this ci fails or gets canceled, only runs for default branch - name: Forward CI Status - if: always() + if: always() uses: rainlanguage/github-chore/.github/actions/telegram-status-report@main with: status: ${{ job.status }} diff --git a/.github/workflows/test-subgraph.yml b/.github/workflows/test-subgraph.yml index 3fd9f45595..127feab56e 100644 --- a/.github/workflows/test-subgraph.yml +++ b/.github/workflows/test-subgraph.yml @@ -4,28 +4,23 @@ on: branches: - main pull_request: - concurrency: group: ${{ github.ref }}-subgraph cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} - jobs: test: permissions: id-token: write contents: read runs-on: ubuntu-latest - steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 0 - submodules: recursive - + submodules: true - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 - - uses: nixbuild/nix-quick-install-action@v30 with: nix_conf: | @@ -42,16 +37,12 @@ jobs: # before trying to save a new cache # 1G = 1073741824 gc-max-store-size-linux: 1G - - run: | (cd lib/rain.interpreter/lib/rain.interpreter.interface/lib/rain.math.float && nix develop -c rainix-sol-prelude) - - name: Build subgraph run: nix develop -c subgraph-build - - name: Matchstick tests run: nix develop -c subgraph-test - # forwards status to telegram chat if this ci fails or gets canceled, only runs for default branch - name: Forward CI Status if: always() diff --git a/.github/workflows/test-ui-components.yaml b/.github/workflows/test-ui-components.yaml index be5049c380..b59c8eda42 100644 --- a/.github/workflows/test-ui-components.yaml +++ b/.github/workflows/test-ui-components.yaml @@ -4,11 +4,9 @@ on: branches: - main pull_request: - concurrency: group: ${{ github.ref }}-ui-components cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} - jobs: test: permissions: @@ -20,12 +18,10 @@ jobs: steps: - uses: actions/checkout@v2 with: - submodules: recursive + submodules: true fetch-depth: 0 - - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 - - uses: nixbuild/nix-quick-install-action@v30 with: nix_conf: | @@ -42,32 +38,24 @@ jobs: # before trying to save a new cache # 1G = 1073741824 gc-max-store-size-linux: 10G - - run: ./prep-webapp.sh env: PUBLIC_WALLETCONNECT_PROJECT_ID: ${{ secrets.WALLETCONNECT_PROJECT_ID || 'test' }} COMMIT_SHA: ${{ github.sha }} CARGO_HOME: ${{ github.workspace }}/.cargo CARGO_TARGET_DIR: ${{ github.workspace }}/.cargo/target - - name: Cleanup Rust artifacts after prep run: rm -rf target || true - - run: nix develop -c npm run svelte-lint-format-check -w @rainlanguage/ui-components - - run: nix develop -c npm run test -w @rainlanguage/ui-components - # check for npm package blacklists pkgs across all packages - uses: rainlanguage/github-chore/.github/actions/npm-blacklist@main - - uses: rainlanguage/github-chore/.github/actions/npm-blacklist@main with: working-directory: packages/raindex - - uses: rainlanguage/github-chore/.github/actions/npm-blacklist@main with: working-directory: packages/ui-components - # forwards status to telegram chat if this ci fails or gets canceled, only runs for default branch - name: Forward CI Status if: always() diff --git a/.github/workflows/test-webapp.yaml b/.github/workflows/test-webapp.yaml index c1ba4971ad..7607c68446 100644 --- a/.github/workflows/test-webapp.yaml +++ b/.github/workflows/test-webapp.yaml @@ -4,11 +4,9 @@ on: branches: - main pull_request: - concurrency: group: ${{ github.ref }}-webapp cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} - jobs: test: permissions: @@ -20,12 +18,10 @@ jobs: steps: - uses: actions/checkout@v2 with: - submodules: recursive + submodules: true fetch-depth: 0 - - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 - - uses: nixbuild/nix-quick-install-action@v30 with: nix_conf: | @@ -42,40 +38,31 @@ jobs: # before trying to save a new cache # 1G = 1073741824 gc-max-store-size-linux: 10G - - run: ./prep-webapp.sh env: PUBLIC_WALLETCONNECT_PROJECT_ID: ${{ secrets.WALLETCONNECT_PROJECT_ID || 'test' }} COMMIT_SHA: ${{ github.sha }} CARGO_HOME: ${{ github.workspace }}/.cargo CARGO_TARGET_DIR: ${{ github.workspace }}/.cargo/target - - name: Cleanup Rust artifacts after prep run: rm -rf target || true - - run: nix develop -c npm run svelte-lint-format-check -w @rainlanguage/webapp env: PUBLIC_WALLETCONNECT_PROJECT_ID: ${{ secrets.WALLETCONNECT_PROJECT_ID || 'test' }} - - run: nix develop -c npm run test -w @rainlanguage/webapp env: PUBLIC_WALLETCONNECT_PROJECT_ID: ${{ secrets.WALLETCONNECT_PROJECT_ID || 'test' }} - # check for npm package blacklists pkgs across all packages - uses: rainlanguage/github-chore/.github/actions/npm-blacklist@main - - uses: rainlanguage/github-chore/.github/actions/npm-blacklist@main with: working-directory: packages/raindex - - uses: rainlanguage/github-chore/.github/actions/npm-blacklist@main with: working-directory: packages/ui-components - - uses: rainlanguage/github-chore/.github/actions/npm-blacklist@main with: working-directory: packages/webapp - # forwards status to telegram chat if this ci fails or gets canceled, only runs for default branch - name: Forward CI Status if: always() @@ -83,4 +70,4 @@ jobs: with: status: ${{ job.status }} telegram-bot-token: ${{ secrets.TELEGRAM_BOT_TOKEN }} - telegram-chat-id: ${{ secrets.TELEGRAM_CHAT_ID }} \ No newline at end of file + telegram-chat-id: ${{ secrets.TELEGRAM_CHAT_ID }} diff --git a/.github/workflows/vercel-docs-preview.yaml b/.github/workflows/vercel-docs-preview.yaml index 6ff5c97bfc..6dc49d3bb0 100644 --- a/.github/workflows/vercel-docs-preview.yaml +++ b/.github/workflows/vercel-docs-preview.yaml @@ -9,7 +9,6 @@ on: concurrency: group: ${{ github.ref }}-vercel-docs-preview cancel-in-progress: true - jobs: Deploy-Docs-Preview: runs-on: ubuntu-latest @@ -21,38 +20,31 @@ jobs: steps: - uses: actions/checkout@v4 with: - submodules: recursive + submodules: true fetch-depth: 0 - - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 - - uses: DeterminateSystems/nix-installer-action@main with: determinate: true - uses: DeterminateSystems/flakehub-cache-action@main - - run: ./prep-all.sh env: PUBLIC_WALLETCONNECT_PROJECT_ID: ${{ secrets.WALLETCONNECT_PROJECT_ID }} - - run: nix develop .#webapp-shell -c npm run docs working-directory: packages/raindex - - name: Prepare Vercel build output run: | OUTPUT_DIR="packages/raindex/.vercel/output" mkdir -p "${OUTPUT_DIR}/static" cp -r packages/raindex/docs/* "${OUTPUT_DIR}/static/" echo '{ "version": 3 }' > "${OUTPUT_DIR}/config.json" - - name: Install Vercel CLI run: npm install --global vercel@canary - name: Pull Vercel Environment Information run: vercel pull --yes --environment=preview --token=${{ secrets.VERCEL_TOKEN }} - name: Deploy Project Artifacts to Vercel run: vercel deploy --prebuilt --token=${{ secrets.VERCEL_TOKEN }} packages/raindex - # forwards status to telegram chat if this ci fails or gets canceled, only runs for default branch - name: Forward CI Status if: always() @@ -60,4 +52,4 @@ jobs: with: status: ${{ job.status }} telegram-bot-token: ${{ secrets.TELEGRAM_BOT_TOKEN }} - telegram-chat-id: ${{ secrets.TELEGRAM_CHAT_ID }} \ No newline at end of file + telegram-chat-id: ${{ secrets.TELEGRAM_CHAT_ID }} diff --git a/.github/workflows/vercel-docs-prod.yaml b/.github/workflows/vercel-docs-prod.yaml index ff1ea4add5..5536e0460f 100644 --- a/.github/workflows/vercel-docs-prod.yaml +++ b/.github/workflows/vercel-docs-prod.yaml @@ -17,35 +17,29 @@ jobs: steps: - uses: actions/checkout@v4 with: - submodules: recursive + submodules: true fetch-depth: 0 - - uses: DeterminateSystems/nix-installer-action@main with: determinate: true - uses: DeterminateSystems/flakehub-cache-action@main - - run: ./prep-all.sh env: PUBLIC_WALLETCONNECT_PROJECT_ID: ${{ secrets.WALLETCONNECT_PROJECT_ID }} - - run: nix develop .#webapp-shell -c npm run docs working-directory: packages/raindex - - name: Prepare Vercel build output run: | OUTPUT_DIR="packages/raindex/.vercel/output" mkdir -p "${OUTPUT_DIR}/static" cp -r packages/raindex/docs/* "${OUTPUT_DIR}/static/" echo '{ "version": 3 }' > "${OUTPUT_DIR}/config.json" - - name: Install Vercel CLI run: npm install --global vercel@canary - name: Pull Vercel Environment Information run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }} - name: Deploy Project Artifacts to Vercel run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }} packages/raindex - # forwards status to telegram chat if this ci fails or gets canceled, only runs for default branch - name: Forward CI Status if: always() diff --git a/.github/workflows/vercel-preview.yaml b/.github/workflows/vercel-preview.yaml index c1330ae441..9b6deedb66 100644 --- a/.github/workflows/vercel-preview.yaml +++ b/.github/workflows/vercel-preview.yaml @@ -34,7 +34,7 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 with: - submodules: recursive + submodules: true fetch-depth: 0 - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 diff --git a/.github/workflows/vercel-prod.yaml b/.github/workflows/vercel-prod.yaml index b278b11e75..9652752e3b 100644 --- a/.github/workflows/vercel-prod.yaml +++ b/.github/workflows/vercel-prod.yaml @@ -17,12 +17,10 @@ jobs: steps: - uses: actions/checkout@v2 with: - submodules: recursive + submodules: true fetch-depth: 0 - - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 - - uses: nixbuild/nix-quick-install-action@v30 with: nix_conf: | @@ -39,34 +37,27 @@ jobs: # before trying to save a new cache # 1G = 1073741824 gc-max-store-size-linux: 1G - - run: ./prep-webapp.sh env: PUBLIC_WALLETCONNECT_PROJECT_ID: ${{ secrets.WALLETCONNECT_PROJECT_ID }} - - run: nix develop .#webapp-shell -c npm run build working-directory: packages/webapp env: PUBLIC_WALLETCONNECT_PROJECT_ID: ${{ secrets.WALLETCONNECT_PROJECT_ID }} - # check for npm package blacklists pkgs across all packages - uses: rainlanguage/github-chore/.github/actions/npm-blacklist@main - - uses: rainlanguage/github-chore/.github/actions/npm-blacklist@main with: working-directory: packages/raindex - - uses: rainlanguage/github-chore/.github/actions/npm-blacklist@main with: working-directory: packages/ui-components - - name: Install Vercel CLI run: npm install --global vercel@canary - name: Pull Vercel Environment Information run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }} - name: Deploy Project Artifacts to Vercel run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }} packages/webapp - # forwards status to telegram chat if this ci fails or gets canceled, only runs for default branch - name: Forward CI Status if: always() From 1a8feea936c21956bc72f52ef59931ae398ee339 Mon Sep 17 00:00:00 2001 From: David Meister Date: Wed, 27 May 2026 18:32:28 +0000 Subject: [PATCH 08/27] =?UTF-8?q?feat:=20drop=20alloy-ethers-typecast=20?= =?UTF-8?q?=E2=80=94=20use=20alloy=20Provider=20directly?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace ReadableClient/ReadContractParameters/WriteContractParameters with alloy Provider eth_call (TransactionRequest + provider.call + abi_decode_returns) and the alloy write path, across common, cli/status, and quote. Removes the last alloy-ethers-typecast usage. --- crates/cli/src/status.rs | 6 +- crates/common/src/add_order.rs | 128 ++++++------------ crates/common/src/dotrain_order.rs | 24 ++-- crates/common/src/erc20.rs | 7 - crates/common/src/fuzz/impls.rs | 25 +--- .../common/src/raindex_order_builder/mod.rs | 11 -- crates/common/src/rainlang.rs | 19 +-- crates/common/src/transaction.rs | 9 ++ crates/common/src/unit_tests.rs | 8 +- crates/quote/src/error.rs | 3 +- crates/quote/src/order_quotes.rs | 18 ++- 11 files changed, 97 insertions(+), 161 deletions(-) diff --git a/crates/cli/src/status.rs b/crates/cli/src/status.rs index 57caaf9153..b4882f1ff0 100644 --- a/crates/cli/src/status.rs +++ b/crates/cli/src/status.rs @@ -1,9 +1,7 @@ -use alloy::sol_types::SolCall; -use alloy_ethers_typecast::WriteTransactionStatus; -use std::fmt::Debug; +use raindex_common::write_tx::WriteTransactionStatus; use tracing::info; -pub fn display_write_transaction_status(status: WriteTransactionStatus) { +pub fn display_write_transaction_status(status: WriteTransactionStatus) { match status { WriteTransactionStatus::PendingPrepare(_) => { info!("⏳ Preparing transaction. Please wait."); diff --git a/crates/common/src/add_order.rs b/crates/common/src/add_order.rs index c085f704a1..373a1bb642 100644 --- a/crates/common/src/add_order.rs +++ b/crates/common/src/add_order.rs @@ -1,3 +1,6 @@ +use crate::transaction::read_call; +#[cfg(not(target_family = "wasm"))] +use crate::write_tx::{execute_write_tx, WriteTransactionStatus}; use crate::{ dotrain_order::DotrainOrderError, rainlang::compose_to_rainlang, @@ -6,14 +9,8 @@ use crate::{ use alloy::primitives::{hex::FromHexError, Address, Bytes, B256}; #[cfg(not(target_family = "wasm"))] use alloy::primitives::{FixedBytes, U256}; +use alloy::rpc::types::TransactionRequest; use alloy::sol_types::SolCall; -use alloy_ethers_typecast::ReadContractParametersBuilder; -use alloy_ethers_typecast::{ - ReadContractParametersBuilderError, ReadableClient, ReadableClientError, WritableClientError, - WriteContractParameters, -}; -#[cfg(not(target_family = "wasm"))] -use alloy_ethers_typecast::{WriteTransaction, WriteTransactionStatus}; use dotrain::error::ComposeError; use rain_interpreter_bindings::IParserV2::parse2Return; use rain_interpreter_bindings::Rainlang::{ @@ -33,11 +30,13 @@ use rain_metadata::{ }; use rain_metadata_bindings::MetaBoard::emitMetaCall; use raindex_app_settings::deployment::DeploymentCfg; +use raindex_bindings::provider::{mk_read_provider, ReadProviderError}; use raindex_bindings::IRaindexV6::{addOrder4Call, EvaluableV4, OrderConfigV4, TaskV2, IOV2}; use serde::{Deserialize, Serialize}; use serde_bytes::ByteBuf; use std::collections::HashMap; use thiserror::Error; +use url::Url; pub static RAINDEX_ORDER_ENTRYPOINTS: [&str; 2] = ["calculate-io", "handle-io"]; pub static RAINDEX_ADDORDER_POST_TASK_ENTRYPOINTS: [&str; 1] = ["handle-add-order"]; @@ -47,16 +46,12 @@ pub enum AddOrderArgsError { #[error("Empty Front Matter")] EmptyFrontmatter, #[error(transparent)] - ReadableClientError(#[from] ReadableClientError), - #[error(transparent)] - ReadContractParametersBuilderError(#[from] ReadContractParametersBuilderError), + ReadProviderError(#[from] ReadProviderError), #[error(transparent)] ParserError(#[from] ParserError), #[error(transparent)] FromHexError(#[from] FromHexError), #[error(transparent)] - WritableClientError(#[from] WritableClientError), - #[error(transparent)] TransactionArgs(#[from] TransactionArgsError), #[error(transparent)] RainMetaError(#[from] RainMetaError), @@ -169,39 +164,13 @@ impl AddOrderArgs { } /// Read DISPaiR addresses from the rainlang contract. - async fn read_dispair(&self, client: &ReadableClient) -> Result { - let deployer: Address = client - .read( - ReadContractParametersBuilder::default() - .address(self.rainlang) - .call(expressionDeployerAddressCall {}) - .build()?, - ) - .await?; - let interpreter: Address = client - .read( - ReadContractParametersBuilder::default() - .address(self.rainlang) - .call(interpreterAddressCall {}) - .build()?, - ) - .await?; - let store: Address = client - .read( - ReadContractParametersBuilder::default() - .address(self.rainlang) - .call(storeAddressCall {}) - .build()?, - ) - .await?; - let parser: Address = client - .read( - ReadContractParametersBuilder::default() - .address(self.rainlang) - .call(parserAddressCall {}) - .build()?, - ) - .await?; + async fn read_dispair(&self, rpcs: &[String]) -> Result { + let deployer: Address = + read_call(rpcs, self.rainlang, expressionDeployerAddressCall {}).await?; + let interpreter: Address = + read_call(rpcs, self.rainlang, interpreterAddressCall {}).await?; + let store: Address = read_call(rpcs, self.rainlang, storeAddressCall {}).await?; + let parser: Address = read_call(rpcs, self.rainlang, parserAddressCall {}).await?; Ok(DISPaiR::new(deployer, interpreter, store, parser)) } @@ -211,13 +180,17 @@ impl AddOrderArgs { rpcs: Vec, rainlang: String, ) -> Result, AddOrderArgsError> { - let client = ReadableClient::new_from_http_urls(rpcs.clone())?; - let dispair = self.read_dispair(&client).await?; + let dispair = self.read_dispair(&rpcs).await?; - let client = ReadableClient::new_from_http_urls(rpcs)?; + let urls = rpcs + .iter() + .map(|rpc| rpc.parse::()) + .collect::, _>>() + .map_err(TransactionArgsError::Url)?; + let provider = mk_read_provider(&urls)?; let parser: ParserV2 = dispair.into(); let rainlang_parsed: parse2Return = parser - .parse_text(rainlang.as_str(), client) + .parse_text(rainlang.as_str(), &provider) .await .map_err(AddOrderArgsError::ParserError)?; @@ -283,8 +256,7 @@ impl AddOrderArgs { let meta = self.try_generate_meta(rainlang)?; - let client = ReadableClient::new_from_http_urls(rpcs.clone())?; - let dispair = self.read_dispair(&client).await?; + let dispair = self.read_dispair(&rpcs).await?; // get the evaluable for the post action let post_rainlang = self.compose_addorder_post_task()?; @@ -356,26 +328,24 @@ impl AddOrderArgs { pub async fn get_add_order_call_parameters( &self, transaction_args: TransactionArgs, - ) -> Result, AddOrderArgsError> { + ) -> Result { let add_order_call = self.try_into_call(transaction_args.clone().rpcs).await?; - let params = transaction_args - .try_into_write_contract_parameters(add_order_call, transaction_args.raindex_address)?; - Ok(params) + let tx_request = transaction_args + .try_into_transaction_request(add_order_call, transaction_args.raindex_address)?; + Ok(tx_request) } #[cfg(not(target_family = "wasm"))] - pub async fn execute)>( + pub async fn execute( &self, transaction_args: TransactionArgs, transaction_status_changed: S, ) -> Result<(), AddOrderArgsError> { let (ledger_client, _) = transaction_args.clone().try_into_ledger_client().await?; - let params = self.get_add_order_call_parameters(transaction_args).await?; + let tx_request = self.get_add_order_call_parameters(transaction_args).await?; - WriteTransaction::new(ledger_client, params, 4, transaction_status_changed) - .execute() - .await?; + execute_write_tx(ledger_client, tx_request, 4, transaction_status_changed).await?; Ok(()) } @@ -1457,7 +1427,10 @@ _ _: 0 0; .try_parse_rainlang(vec!["invalid-url".to_string()], rainlang) .await .unwrap_err(); - assert!(matches!(err, AddOrderArgsError::ReadableClientError(_))); + assert!(matches!( + err, + AddOrderArgsError::TransactionArgs(TransactionArgsError::Url(_)) + )); } #[tokio::test] @@ -1489,14 +1462,7 @@ _ _: 0 0; assert!( matches!( &err, - AddOrderArgsError::ReadableClientError( - ReadableClientError::AllProvidersFailed(ref msg) - ) - if msg.get(&rpc_url).is_some() - && matches!( - msg.get(&rpc_url).unwrap(), - ReadableClientError::RpcTransportKindError(_) - ) + AddOrderArgsError::TransactionArgs(TransactionArgsError::Transport(_)) ), "unexpected error variant: {err:?}" ); @@ -1732,18 +1698,21 @@ _ _: 0 0; .await .unwrap(); - assert_eq!(res.call.config.evaluable, add_order_call.config.evaluable); + let input = res.input.input.expect("tx request has no input"); + let decoded = addOrder4Call::abi_decode(&input).unwrap(); + + assert_eq!(decoded.config.evaluable, add_order_call.config.evaluable); assert_eq!( - res.call.config.validInputs, + decoded.config.validInputs, add_order_call.config.validInputs ); assert_eq!( - res.call.config.validOutputs, + decoded.config.validOutputs, add_order_call.config.validOutputs ); - assert_eq!(res.call.config.meta, add_order_call.config.meta); - assert_eq!(res.call.tasks, add_order_call.tasks); - assert_eq!(res.address, *local_evm.raindex.address()); + assert_eq!(decoded.config.meta, add_order_call.config.meta); + assert_eq!(decoded.tasks, add_order_call.tasks); + assert_eq!(res.to, Some((*local_evm.raindex.address()).into())); assert_eq!(res.max_priority_fee_per_gas, Some(100)); assert_eq!(res.max_fee_per_gas, Some(200)); } @@ -1851,14 +1820,7 @@ _ _: 0 0; assert!( matches!( &err, - AddOrderArgsError::ReadableClientError( - ReadableClientError::AllProvidersFailed(msg) - ) - if msg.get(&rpc_url).is_some() - && matches!( - msg.get(&rpc_url).unwrap(), - ReadableClientError::RpcTransportKindError(_) - ) + AddOrderArgsError::TransactionArgs(TransactionArgsError::Transport(_)) ), "unexpected error variant: {err:?}" ); diff --git a/crates/common/src/dotrain_order.rs b/crates/common/src/dotrain_order.rs index 3a29171b46..40f56bd146 100644 --- a/crates/common/src/dotrain_order.rs +++ b/crates/common/src/dotrain_order.rs @@ -1,9 +1,9 @@ +use crate::transaction::TransactionArgsError; use crate::{ add_order::{RAINDEX_ADDORDER_POST_TASK_ENTRYPOINTS, RAINDEX_ORDER_ENTRYPOINTS}, rainlang::compose_to_rainlang, }; use alloy::primitives::Address; -use alloy_ethers_typecast::{ReadableClient, ReadableClientError}; use dotrain::{error::ComposeError, types::patterns::FRONTMATTER_SEPARATOR, RainDocument}; use futures::future::join_all; use rain_interpreter_parser::{Parser2, ParserError, ParserV2}; @@ -18,6 +18,7 @@ use raindex_app_settings::{ yaml::{dotrain::DotrainYamlValidation, raindex::RaindexYamlValidation}, }; use raindex_app_settings::{scenario::ScenarioCfg, spec_version::SpecVersion}; +use raindex_bindings::provider::{mk_read_provider, ReadProviderError}; use serde::{Deserialize, Serialize}; use std::sync::{Arc, RwLock}; use strict_yaml_rust::{strict_yaml::Hash as StrictYamlHash, StrictYaml, StrictYamlLoader}; @@ -89,7 +90,10 @@ pub enum DotrainOrderError { FetchAuthoringMetaV2WordError(#[from] Box), #[error(transparent)] - ReadableClientError(#[from] ReadableClientError), + ReadProviderError(#[from] ReadProviderError), + + #[error(transparent)] + TransactionArgsError(#[from] TransactionArgsError), #[error(transparent)] ParserError(#[from] ParserError), @@ -151,7 +155,10 @@ impl DotrainOrderError { DotrainOrderError::FetchAuthoringMetaV2WordError(e) => { format!("Error fetching words from contract authoring metadata: {e}") } - DotrainOrderError::ReadableClientError(e) => { + DotrainOrderError::ReadProviderError(e) => { + format!("Problem communicating with the rpc: {e}") + } + DotrainOrderError::TransactionArgsError(e) => { format!("Problem communicating with the rpc: {e}") } DotrainOrderError::ParserError(e) => { @@ -495,14 +502,9 @@ impl DotrainOrder { .compose_scenario_to_rainlang(scenario.to_string()) .await?; - let rpcs = rainlang_cfg - .network - .rpcs - .iter() - .map(|rpc| rpc.to_string()) - .collect(); - let client = ReadableClient::new_from_http_urls(rpcs)?; - let pragmas = parser.parse_pragma_text(&rainlang, client).await?; + let urls = rainlang_cfg.network.rpcs.clone(); + let provider = mk_read_provider(&urls)?; + let pragmas = parser.parse_pragma_text(&rainlang, &provider).await?; Ok(pragmas) } diff --git a/crates/common/src/erc20.rs b/crates/common/src/erc20.rs index 1444e85f97..01ada0ad00 100644 --- a/crates/common/src/erc20.rs +++ b/crates/common/src/erc20.rs @@ -1,7 +1,6 @@ use alloy::network::AnyNetwork; use alloy::primitives::{Address, U256}; use alloy::providers::{MulticallError, Provider}; -use alloy_ethers_typecast::ReadContractParametersBuilderError; use rain_error_decoding::{AbiDecodeFailedErrors, AbiDecodedErrorType}; use raindex_app_settings::token::TokenCfg; use raindex_bindings::provider::{mk_read_provider, ReadProvider, ReadProviderError}; @@ -188,12 +187,6 @@ const ERROR_MESSAGE: &str = "Failed to get token information: "; #[derive(Debug, Error)] pub enum Error { - #[error("{ERROR_MESSAGE} {msg} - {source}")] - ReadContractError { - msg: String, - #[source] - source: ReadContractParametersBuilderError, - }, #[error("{ERROR_MESSAGE} {msg} - {source}")] AbiDecodedErrorType { msg: String, diff --git a/crates/common/src/fuzz/impls.rs b/crates/common/src/fuzz/impls.rs index 3209decb47..514872d38d 100644 --- a/crates/common/src/fuzz/impls.rs +++ b/crates/common/src/fuzz/impls.rs @@ -1,11 +1,11 @@ use super::*; use crate::add_order::RAINDEX_ORDER_ENTRYPOINTS; +use crate::transaction::{read_block_number, TransactionArgsError}; use alloy::primitives::private::rand; use alloy::primitives::Address; use alloy::primitives::B256; use alloy::primitives::U256; use alloy::sol_types::SolCall; -use alloy_ethers_typecast::{ReadableClient, ReadableClientError}; use dotrain::{error::ComposeError, RainDocument, Rebind}; use futures::TryFutureExt; use proptest::prelude::RngCore; @@ -84,7 +84,7 @@ pub enum FuzzRunnerError { #[error(transparent)] JoinError(#[from] tokio::task::JoinError), #[error(transparent)] - ReadableClientHttpError(#[from] ReadableClientError), + TransactionArgsError(#[from] TransactionArgsError), #[error(transparent)] BlockError(#[from] BlockError), #[error(transparent)] @@ -217,9 +217,7 @@ impl FuzzRunner { .map(|rpc| rpc.to_string()) .collect::>(); - let block_number = ReadableClient::new_from_http_urls(rpcs.clone())? - .get_block_number() - .await?; + let block_number = read_block_number(&rpcs).await?; let blocks = scenario .blocks @@ -613,21 +611,8 @@ impl FuzzRunner { .map(|rpc| rpc.to_string()) .collect::>(); - match ReadableClient::new_from_http_urls(rpcs) { - Ok(v) => match v.get_block_number().await { - Ok(bn) => bn, - Err(e) => { - result.pairs_data.push(DeploymentDebugPairData { - order: deployment.order.key.clone(), - scenario: scenario.key.clone(), - pair: "".to_string(), - result: None, - error: Some(e.to_string()), - }); - data_map.insert(deployment_key.clone(), result); - continue; - } - }, + match read_block_number(&rpcs).await { + Ok(bn) => bn, Err(e) => { result.pairs_data.push(DeploymentDebugPairData { order: deployment.order.key.clone(), diff --git a/crates/common/src/raindex_order_builder/mod.rs b/crates/common/src/raindex_order_builder/mod.rs index 49bb3c26e2..573fcd8d59 100644 --- a/crates/common/src/raindex_order_builder/mod.rs +++ b/crates/common/src/raindex_order_builder/mod.rs @@ -6,7 +6,6 @@ use crate::{ utils::amount_formatter::AmountFormatterError, }; use alloy::primitives::Address; -use alloy_ethers_typecast::ReadableClientError; use base64::{engine::general_purpose::URL_SAFE, Engine}; use flate2::{read::GzDecoder, write::GzEncoder, Compression}; use rain_math_float::FloatError; @@ -315,16 +314,10 @@ pub enum RaindexOrderBuilderError { #[error(transparent)] FromHexError(#[from] alloy::hex::FromHexError), #[error(transparent)] - ReadableClientError(#[from] ReadableClientError), - #[error(transparent)] DepositError(#[from] crate::deposit::DepositError), #[error(transparent)] ParseError(#[from] alloy::primitives::ruint::ParseError), #[error(transparent)] - ReadContractParametersBuilderError( - #[from] alloy_ethers_typecast::ReadContractParametersBuilderError, - ), - #[error(transparent)] UnitsError(#[from] alloy::primitives::utils::UnitsError), #[error(transparent)] WritableTransactionExecuteError(#[from] crate::transaction::WritableTransactionExecuteError), @@ -407,14 +400,10 @@ impl RaindexOrderBuilderError { format!("Base64 encoding/decoding error: {}", err), Self::FromHexError(err) => format!("Invalid hexadecimal value: {}", err), - Self::ReadableClientError(err) => - format!("Network client error: {}", err), Self::DepositError(err) => format!("Deposit error: {}", err), Self::ParseError(err) => format!("Number parsing error: {}", err), - Self::ReadContractParametersBuilderError(err) => - format!("Contract parameter error: {}", err), Self::UnitsError(err) => format!("Unit conversion error: {}", err), Self::WritableTransactionExecuteError(err) => diff --git a/crates/common/src/rainlang.rs b/crates/common/src/rainlang.rs index b2a0fceb4d..2a490b93aa 100644 --- a/crates/common/src/rainlang.rs +++ b/crates/common/src/rainlang.rs @@ -163,8 +163,8 @@ pub use fork_parse::*; #[cfg(not(target_family = "wasm"))] mod fork_parse { + use crate::transaction::{read_block_number, TransactionArgsError}; use alloy::primitives::{bytes::Bytes, Address}; - use alloy_ethers_typecast::{ReadableClient, ReadableClientError}; use once_cell::sync::OnceCell; use rain_error_decoding::AbiDecodedErrorType; use rain_interpreter_eval::error::ForkCallError; @@ -191,7 +191,7 @@ mod fork_parse { #[error("Fork Call Reverted: {0}")] ForkCallReverted(#[from] AbiDecodedErrorType), #[error(transparent)] - ReadableClientError(#[from] ReadableClientError), + TransactionArgsError(#[from] TransactionArgsError), #[error("Failed to read Parser address from rainlang")] ReadParserAddressFailed, #[error("Invalid input args: {0}")] @@ -219,10 +219,7 @@ mod fork_parse { // Prepare evm fork let block_number_val = match block_number { Some(b) => b, - None => { - let client = ReadableClient::new_from_http_urls(rpcs.clone())?; - client.get_block_number().await? - } + None => read_block_number(rpcs).await?, }; // Lazily initialize the global `FORKER` (if required) and obtain a lock. @@ -382,13 +379,9 @@ _ _: 1 2; .unwrap_err(); assert!( - matches!(&err, - ForkParseError::ReadableClientError(ReadableClientError::AllProvidersFailed(ref msg)) - if msg.get(&rpc_url).is_some() - && matches!( - msg.get(&rpc_url).unwrap(), - ReadableClientError::ReadBlockNumberError(_) - ) + matches!( + &err, + ForkParseError::TransactionArgsError(TransactionArgsError::Transport(_)) ), "unexpected error variant: {err:?}" ); diff --git a/crates/common/src/transaction.rs b/crates/common/src/transaction.rs index db72f85494..cf60b1812f 100644 --- a/crates/common/src/transaction.rs +++ b/crates/common/src/transaction.rs @@ -144,6 +144,15 @@ pub async fn read_chain_id(rpcs: &[String]) -> Result Ok(provider.get_chain_id().await?) } +pub async fn read_block_number(rpcs: &[String]) -> Result { + let urls = rpcs + .iter() + .map(|s| s.parse::()) + .collect::, _>>()?; + let provider = mk_read_provider(&urls)?; + Ok(provider.get_block_number().await?) +} + pub async fn read_call( rpcs: &[String], contract: Address, diff --git a/crates/common/src/unit_tests.rs b/crates/common/src/unit_tests.rs index 22d54e14bc..da369e8587 100644 --- a/crates/common/src/unit_tests.rs +++ b/crates/common/src/unit_tests.rs @@ -1,5 +1,5 @@ use alloy::primitives::U256; -use alloy_ethers_typecast::{ReadableClient, ReadableClientError}; +use alloy::providers::Provider; use dotrain::{error::ComposeError, RainDocument, Rebind}; use futures::TryFutureExt; use proptest::{ @@ -59,7 +59,7 @@ pub enum TestRunnerError { #[error("Scenario not found")] ScenarioNotFound(String), #[error(transparent)] - ReadableClientHttpError(#[from] ReadableClientError), + TransactionArgsError(#[from] crate::transaction::TransactionArgsError), #[error(transparent)] BlockError(#[from] BlockError), #[error(transparent)] @@ -408,9 +408,7 @@ impl TestRunner { .map(|rpc| rpc.to_string()) .collect::>(); - let block_number = ReadableClient::new_from_http_urls(rpcs.clone())? - .get_block_number() - .await?; + let block_number = crate::transaction::read_block_number(&rpcs).await?; let blocks = self .test_config diff --git a/crates/quote/src/error.rs b/crates/quote/src/error.rs index 13d96a9af2..ced1a3e432 100644 --- a/crates/quote/src/error.rs +++ b/crates/quote/src/error.rs @@ -2,7 +2,6 @@ use alloy::{ primitives::{hex::FromHexError, U256}, providers::MulticallError, }; -use alloy_ethers_typecast::ReadableClientError; use rain_error_decoding::{AbiDecodeFailedErrors, AbiDecodedErrorType}; use raindex_bindings::provider::ReadProviderError; use raindex_subgraph_client::{ @@ -31,7 +30,7 @@ pub enum FailedQuote { #[derive(Debug, Error)] pub enum Error { #[error(transparent)] - RpcCallError(#[from] ReadableClientError), + TransactionArgsError(#[from] raindex_common::transaction::TransactionArgsError), #[error(transparent)] UrlParseError(#[from] ParseError), #[error(transparent)] diff --git a/crates/quote/src/order_quotes.rs b/crates/quote/src/order_quotes.rs index 6a05ad2308..eccaaf7aa9 100644 --- a/crates/quote/src/order_quotes.rs +++ b/crates/quote/src/order_quotes.rs @@ -7,8 +7,10 @@ use crate::{ OrderQuoteValue, }; use alloy::primitives::{Address, U256}; -use alloy_ethers_typecast::ReadableClient; +use alloy::providers::Provider; +use raindex_bindings::provider::mk_read_provider; use raindex_bindings::IRaindexV6::{OrderV4, QuoteV2, SignedContextV1}; +use raindex_common::transaction::TransactionArgsError; use raindex_subgraph_client::types::common::SgOrder; use serde::{Deserialize, Serialize}; use std::str::FromStr; @@ -70,9 +72,16 @@ pub async fn get_order_quotes( let req_block_number = match block_number { Some(block) => block, None => { - ReadableClient::new_from_http_urls(rpcs.clone())? + let urls = rpcs + .iter() + .map(|rpc| rpc.parse()) + .collect::, _>>() + .map_err(TransactionArgsError::Url)?; + let provider = mk_read_provider(&urls).map_err(TransactionArgsError::ReadProvider)?; + provider .get_block_number() - .await? + .await + .map_err(TransactionArgsError::Transport)? } }; @@ -264,7 +273,6 @@ mod tests { providers::Provider, sol_types::{SolCall, SolValue}, }; - use alloy_ethers_typecast::ReadableClientError; use rain_math_float::Float; use raindex_app_settings::spec_version::SpecVersion; use raindex_common::{add_order::AddOrderArgs, dotrain_order::DotrainOrder}; @@ -623,7 +631,7 @@ amount price: 2 3; assert!(matches!( err, - Error::RpcCallError(ReadableClientError::CreateReadableClientHttpError(_)) + Error::TransactionArgsError(TransactionArgsError::Url(_)) )); } } From 7aa455bdc49f8b35173b47e34bafe7af61935aac Mon Sep 17 00:00:00 2001 From: David Meister Date: Thu, 28 May 2026 13:35:25 +0000 Subject: [PATCH 09/27] Cut Rust crates over to crates.io; drop the foundry-evm git dep Move the rainlang-family deps onto crates.io: rainlang-eval 0.1.2 (its forking executor now comes from the published rain-forker crate, replacing foundry-evm), bindings 0.1.15 / dispair 0.1.10 / parser 0.1.3. This eliminates the foundry-evm git dependency (15 unpublishable crates) and resolves the FullyQualifiedNamespace / AbiDecodedErrorType duplicate-crate conflicts, since eval and raindex now share a single crates.io rainlang_bindings. Also: rain-metaboard-subgraph 0.1.3 get_metabytes_by_subject takes &Bytes (was &BigInt); fork_eval/fork_parse moved to the ForkEvalExt extension trait; GH_COMMIT_SHA derived via build.rs for local builds; getrandom 0.4 wasm_js feature for the wasm build. Workspace alloy bumps to 1.8.3. Compiles native + wasm. The only remaining git dep is rainlang_test_fixtures (publish=false). Builds on the in-progress soldeer migration on this branch. Co-Authored-By: Claude Opus 4.7 --- Cargo.lock | 3610 ++++++----------- Cargo.toml | 26 +- crates/common/Cargo.toml | 1 + crates/common/build.rs | 23 + crates/common/src/add_order.rs | 3 + crates/common/src/deposit.rs | 4 + crates/common/src/fuzz/impls.rs | 5 +- crates/common/src/raindex_client/orders.rs | 4 +- .../raindex_order_builder/order_operations.rs | 4 +- crates/common/src/rainlang.rs | 2 +- crates/common/src/transaction.rs | 2 +- crates/common/src/unit_tests.rs | 2 +- crates/common/src/write_tx.rs | 2 +- crates/js_api/Cargo.toml | 8 + crates/quote/src/error.rs | 2 - crates/quote/src/order_quotes.rs | 12 +- crates/test_fixtures/Cargo.toml | 18 +- crates/test_fixtures/src/lib.rs | 4 +- flake.lock | 6 +- foundry.toml | 7 +- .../RouteProcessorRaindexV6ArbOrderTaker.sol | 2 +- src/interface/IRouteProcessor.sol | 35 + ...RaindexV6ArbOrderTaker.lossyRounding.t.sol | 2 +- test/util/concrete/MockRouteProcessor.sol | 2 +- test/util/concrete/Refundoor.sol | 2 +- .../concrete/TOFUTokenDecimalsArtifact.sol | 16 + 26 files changed, 1369 insertions(+), 2435 deletions(-) create mode 100644 crates/common/build.rs create mode 100644 src/interface/IRouteProcessor.sol create mode 100644 test/util/concrete/TOFUTokenDecimalsArtifact.sol diff --git a/Cargo.lock b/Cargo.lock index 3979c629e5..f4bcf2bd43 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -34,17 +34,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" -[[package]] -name = "aes" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures", -] - [[package]] name = "ahash" version = "0.7.8" @@ -63,7 +52,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", - "getrandom 0.3.3", "once_cell", "version_check", "zerocopy", @@ -92,9 +80,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a66e45d962abb2e1e8a505d97af34d92137b82f6cabbfb373406a9220dc7dca" +checksum = "50ab0cd8afe573d1f7dc2353698a51b1f93aec362c8211e28cfd3948c6adba39" dependencies = [ "alloy-consensus", "alloy-contract", @@ -116,6 +104,7 @@ dependencies = [ "alloy-transport-http", "alloy-transport-ipc", "alloy-transport-ws", + "alloy-trie", ] [[package]] @@ -124,7 +113,7 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19a9cc9d81ace3da457883b0bdf76776e55f1b84219a9e9d55c27ad308548d3f" dependencies = [ - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "num_enum", "serde", "strum 0.27.1", @@ -132,38 +121,40 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bcb57295c4b632b6b3941a089ee82d00ff31ff9eb3eac801bf605ffddc81041" +checksum = "7f16daaf7e1f95f62c6c3bf8a3fc3d78b08ae9777810c0bb5e94966c7cd57ef0" dependencies = [ "alloy-eips", - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-serde", "alloy-trie", "alloy-tx-macros", "auto_impl", + "borsh", "c-kzg", "derive_more 2.0.1", "either", "k256", "once_cell", "rand 0.8.5", - "secp256k1", + "secp256k1 0.30.0", "serde", + "serde_json", "serde_with", "thiserror 2.0.12", ] [[package]] name = "alloy-consensus-any" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab669be40024565acb719daf1b2a050e6dc065fc0bec6050d97a81cdb860bd7" +checksum = "118998d9015332ab1b4720ae1f1e3009491966a0349938a1f43ff45a8a4c6299" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-serde", "serde", @@ -171,58 +162,55 @@ dependencies = [ [[package]] name = "alloy-contract" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ba5d28e15c14226f243d6e329611840135e1b0fa31feaea57c461e0b03b4c7b" +checksum = "7ac9e0c34dc6bce643b182049cdfcca1b8ce7d9c260cbdd561f511873b7e26cd" dependencies = [ "alloy-consensus", "alloy-dyn-abi", - "alloy-json-abi 1.2.1", + "alloy-json-abi 1.6.0", "alloy-network", "alloy-network-primitives", - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "alloy-provider", "alloy-pubsub", "alloy-rpc-types-eth", - "alloy-sol-types 1.2.1", + "alloy-sol-types 1.6.0", "alloy-transport", "futures", "futures-util", "serde_json", "thiserror 2.0.12", + "tracing", ] [[package]] name = "alloy-core" -version = "1.2.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad31216895d27d307369daa1393f5850b50bbbd372478a9fa951c095c210627e" +checksum = "62ddde5968de6044d67af107ad835bc0069a7ca245870b94c5958a7d8712b184" dependencies = [ "alloy-dyn-abi", - "alloy-json-abi 1.2.1", - "alloy-primitives 1.2.1", + "alloy-json-abi 1.6.0", + "alloy-primitives 1.6.0", "alloy-rlp", - "alloy-sol-types 1.2.1", + "alloy-sol-types 1.6.0", ] [[package]] name = "alloy-dyn-abi" -version = "1.2.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b95b3deca680efc7e9cba781f1a1db352fa1ea50e6384a514944dcf4419e652" +checksum = "a475bb02d9cef2dbb99065c1664ab3fe1f9352e21d6d5ed3f02cdbfc06ed1abc" dependencies = [ - "alloy-json-abi 1.2.1", - "alloy-primitives 1.2.1", - "alloy-sol-type-parser 1.2.1", - "alloy-sol-types 1.2.1", - "arbitrary", - "derive_arbitrary", - "derive_more 2.0.1", + "alloy-json-abi 1.6.0", + "alloy-primitives 1.6.0", + "alloy-sol-type-parser 1.6.0", + "alloy-sol-types 1.6.0", "itoa", - "proptest", "serde", "serde_json", - "winnow 0.7.11", + "winnow 1.0.3", ] [[package]] @@ -231,7 +219,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" dependencies = [ - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "alloy-rlp", "crc", "serde", @@ -240,127 +228,80 @@ dependencies = [ [[package]] name = "alloy-eip2930" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b82752a889170df67bbb36d42ca63c531eb16274f0d7299ae2a680facba17bd" +checksum = "9441120fa82df73e8959ae0e4ab8ade03de2aaae61be313fbf5746277847ce25" dependencies = [ - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "alloy-rlp", + "borsh", "serde", ] [[package]] name = "alloy-eip7702" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d4769c6ffddca380b0070d71c8b7f30bed375543fe76bb2f74ec0acf4b7cd16" +checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" dependencies = [ - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "alloy-rlp", + "borsh", "k256", "serde", "thiserror 2.0.12", ] +[[package]] +name = "alloy-eip7928" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b827a6d7784fe3eb3489d40699407a4cdcce74271421a01bdffe60cf573bb16" +dependencies = [ + "alloy-primitives 1.6.0", + "alloy-rlp", + "borsh", + "once_cell", + "serde", + "thiserror 2.0.12", +] + [[package]] name = "alloy-eips" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f853de9ca1819f54de80de5d03bfc1bb7c9fafcf092b480a654447141bc354d" +checksum = "e6ef28c9fdad22d4eec52d894f5f2673a0895f1e5ef196734568e68c0f6caca8" dependencies = [ "alloy-eip2124", "alloy-eip2930", "alloy-eip7702", - "alloy-primitives 1.2.1", + "alloy-eip7928", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-serde", "auto_impl", + "borsh", "c-kzg", "derive_more 2.0.1", "either", "serde", + "serde_with", "sha2 0.10.9", ] -[[package]] -name = "alloy-ens" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cba413e1baa2a5a765f48d30cb0244d0c6b3cf911c5e66105361744b277da8d" -dependencies = [ - "alloy-primitives 1.2.1", -] - -[[package]] -name = "alloy-ethers-typecast" -version = "0.2.0" -source = "git+https://github.com/rainlanguage/alloy-ethers-typecast?rev=bcc3a04394aefe191fef4ae8e6e94381a419c99a#bcc3a04394aefe191fef4ae8e6e94381a419c99a" -dependencies = [ - "alloy", - "async-trait", - "derive_builder 0.12.0", - "getrandom 0.3.3", - "once_cell", - "rain-error-decoding 0.1.0 (git+https://github.com/rainlanguage/rain.error?rev=bf08b5ab305287fc49408a441d6375f35dc280db)", - "reqwest 0.11.27", - "serde", - "serde_json", - "thiserror 1.0.69", - "tracing", - "tracing-subscriber 0.3.19", - "url", -] - -[[package]] -name = "alloy-ethers-typecast" -version = "0.2.0" -source = "git+https://github.com/rainlanguage/alloy-ethers-typecast?rev=f7b5bfd0687f16c77dbfdd4905b2434793fa7885#f7b5bfd0687f16c77dbfdd4905b2434793fa7885" -dependencies = [ - "alloy", - "async-trait", - "derive_builder 0.12.0", - "getrandom 0.3.3", - "once_cell", - "rain-error-decoding 0.1.0 (git+https://github.com/rainlanguage/rain.error?rev=bf08b5ab305287fc49408a441d6375f35dc280db)", - "reqwest 0.11.27", - "serde", - "serde_json", - "thiserror 1.0.69", - "tracing", - "tracing-subscriber 0.3.19", - "url", -] - -[[package]] -name = "alloy-evm" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "394b09cf3a32773eedf11828987f9c72dfa74545040be0422e3f5f09a2a3fab9" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-hardforks", - "alloy-primitives 1.2.1", - "alloy-sol-types 1.2.1", - "auto_impl", - "derive_more 2.0.1", - "op-alloy-consensus", - "op-revm", - "revm 24.0.1", - "thiserror 2.0.12", -] - [[package]] name = "alloy-genesis" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8500bcc1037901953771c25cb77e0d4ec0bffd938d93a04715390230d21a612d" +checksum = "bbf9480307b09d22876efb67d30cadd9013134c21f3a17ec9f93fd7536d38024" dependencies = [ "alloy-eips", - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "alloy-serde", "alloy-trie", + "borsh", "serde", + "serde_with", ] [[package]] @@ -371,7 +312,20 @@ checksum = "977d2492ce210e34baf7b36afaacea272c96fbe6774c47e23f97d14033c0e94f" dependencies = [ "alloy-chains", "alloy-eip2124", - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", + "auto_impl", + "dyn-clone", +] + +[[package]] +name = "alloy-hardforks" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83ba208044232d14d4adbfa77e57d6329f51bc1acc21f5667bb7db72d88a0831" +dependencies = [ + "alloy-chains", + "alloy-eip2124", + "alloy-primitives 1.6.0", "auto_impl", "dyn-clone", ] @@ -390,24 +344,24 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "1.2.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15516116086325c157c18261d768a20677f0f699348000ed391d4ad0dcb82530" +checksum = "7c36c9d7f9021601b04bfef14a4b64849f6d73116a4e91e071d7fbfe10247901" dependencies = [ - "alloy-primitives 1.2.1", - "alloy-sol-type-parser 1.2.1", + "alloy-primitives 1.6.0", + "alloy-sol-type-parser 1.6.0", "serde", "serde_json", ] [[package]] name = "alloy-json-rpc" -version = "1.0.22" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12c454fcfcd5d26ed3b8cae5933cbee9da5f0b05df19b46d4bd4446d1f082565" +checksum = "422d110f1c40f1f8d0e5562b0b649c35f345fccb7093d9f02729943dcd1eef71" dependencies = [ - "alloy-primitives 1.2.1", - "alloy-sol-types 1.2.1", + "alloy-primitives 1.6.0", + "alloy-sol-types 1.6.0", "http 1.3.1", "serde", "serde_json", @@ -417,21 +371,21 @@ dependencies = [ [[package]] name = "alloy-network" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0306e8d148b7b94d988615d367443c1b9d6d2e9fecd2e1f187ac5153dce56f5" +checksum = "7197a66d94c4de1591cdc16a9bcea5f8cccd0da81b865b49aef97b1b4016e0fa" dependencies = [ "alloy-consensus", "alloy-consensus-any", "alloy-eips", "alloy-json-rpc", "alloy-network-primitives", - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-any", "alloy-rpc-types-eth", "alloy-serde", "alloy-signer", - "alloy-sol-types 1.2.1", + "alloy-sol-types 1.6.0", "async-trait", "auto_impl", "derive_more 2.0.1", @@ -443,30 +397,31 @@ dependencies = [ [[package]] name = "alloy-network-primitives" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eef189583f4c53d231dd1297b28a675ff842b551fb34715f562868a1937431a" +checksum = "eb82711d59a43fdfd79727c99f270b974c784ec4eb5728a0d0d22f26716c87ef" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "alloy-serde", "serde", ] [[package]] name = "alloy-node-bindings" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e712c068ebe9f690d7d06610ed2e52639cb9570c81420d7a5fb0c9780625086" +checksum = "a9b2fda91b56bb08907cd44c5068130360e027e46a8c17612d386869fa7940be" dependencies = [ "alloy-genesis", - "alloy-hardforks", + "alloy-hardforks 0.2.7", "alloy-network", - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "alloy-signer", "alloy-signer-local", "k256", + "libc", "rand 0.8.5", "serde_json", "tempfile", @@ -475,33 +430,6 @@ dependencies = [ "url", ] -[[package]] -name = "alloy-op-evm" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f32538cc243ec5d4603da9845cc2f5254c6a3a78e82475beb1a2a1de6c0d36c" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-evm", - "alloy-op-hardforks", - "alloy-primitives 1.2.1", - "auto_impl", - "op-alloy-consensus", - "op-revm", - "revm 24.0.1", -] - -[[package]] -name = "alloy-op-hardforks" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08b147547aff595aa3d4c2fc2c8146263e18d3372909def423619ed631ecbcfa" -dependencies = [ - "alloy-hardforks", - "auto_impl", -] - [[package]] name = "alloy-primitives" version = "0.5.4" @@ -547,20 +475,19 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "1.2.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6177ed26655d4e84e00b65cb494d4e0b8830e7cae7ef5d63087d445a2600fb55" +checksum = "4885c1409b6936c4898e646ef58baf6ec54edaf6d8179f79df805a7b85b7cf3e" dependencies = [ "alloy-rlp", "arbitrary", "bytes", "cfg-if", "const-hex", - "derive_arbitrary", "derive_more 2.0.1", - "foldhash", - "getrandom 0.3.3", - "hashbrown 0.15.4", + "foldhash 0.2.0", + "getrandom 0.4.2", + "hashbrown 0.17.1", "indexmap 2.9.0", "itoa", "k256", @@ -569,18 +496,19 @@ dependencies = [ "proptest", "proptest-derive", "rand 0.9.1", + "rapidhash", "ruint", "rustc-hash", + "secp256k1 0.31.1", "serde", "sha3", - "tiny-keccak", ] [[package]] name = "alloy-provider" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea624ddcdad357c33652b86aa7df9bd21afd2080973389d3facf1a221c573948" +checksum = "bf6b18b929ef1d078b834c3631e9c925177f3b23ddc6fa08a722d13047205876" dependencies = [ "alloy-chains", "alloy-consensus", @@ -589,7 +517,7 @@ dependencies = [ "alloy-network", "alloy-network-primitives", "alloy-node-bindings", - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "alloy-pubsub", "alloy-rpc-client", "alloy-rpc-types-anvil", @@ -598,7 +526,7 @@ dependencies = [ "alloy-rpc-types-trace", "alloy-rpc-types-txpool", "alloy-signer", - "alloy-sol-types 1.2.1", + "alloy-sol-types 1.6.0", "alloy-transport", "alloy-transport-http", "alloy-transport-ipc", @@ -610,11 +538,10 @@ dependencies = [ "either", "futures", "futures-utils-wasm", - "http 1.3.1", "lru", "parking_lot", "pin-project", - "reqwest 0.12.20", + "reqwest 0.13.4", "serde", "serde_json", "thiserror 2.0.12", @@ -626,13 +553,14 @@ dependencies = [ [[package]] name = "alloy-pubsub" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ea3227fa5f627d22b7781e88bc2fe79ba1792d5535b4161bc8fc99cdcd8bedd" +checksum = "5ad54073131e7292d4e03e1aa2287730f737280eb160d8b579fb31939f558c11" dependencies = [ "alloy-json-rpc", - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "alloy-transport", + "auto_impl", "bimap", "futures", "parking_lot", @@ -664,45 +592,44 @@ checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] name = "alloy-rpc-client" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e43d00b4de38432304c4e4b01ae6a3601490fd9824c852329d158763ec18663c" +checksum = "94fcc9604042ca80bd37aa5e232ea1cd851f337e31e2babbbb345bc0b1c30de3" dependencies = [ "alloy-json-rpc", - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "alloy-pubsub", "alloy-transport", "alloy-transport-http", "alloy-transport-ipc", "alloy-transport-ws", - "async-stream", "futures", "pin-project", - "reqwest 0.12.20", + "reqwest 0.13.4", "serde", "serde_json", "tokio", "tokio-stream", "tower", "tracing", - "tracing-futures", "url", "wasmtimer", ] [[package]] name = "alloy-rpc-types" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bf22ddb69a436f28bbdda7daf34fe011ee9926fa13bfce89fa023aca9ce2b2f" +checksum = "4faad925d3a669ffc15f43b3deec7fbdf2adeb28a4d6f9cf4bc661698c0f8f4b" dependencies = [ - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-anvil", + "alloy-rpc-types-debug", "alloy-rpc-types-engine", "alloy-rpc-types-eth", "alloy-rpc-types-trace", @@ -713,11 +640,11 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ecd1c60085d8cbc3562e16e264a3cd68f42e54dc16b0d40645e5e42841bc042" +checksum = "47df51bedb3e6062cb9981187a51e86d0d64a4de66eb0855e9efe6574b044ddf" dependencies = [ - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth", "alloy-serde", "serde", @@ -725,9 +652,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5958f2310d69f4806e6f6b90ceb4f2b781cc5a843517a7afe2e7cfec6de3cfb9" +checksum = "3823026d1ed239a40f12364fac50726c8daf1b6ab8077a97212c5123910429ed" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -736,23 +663,25 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c293df0c58d15330e65599f776e30945ea078c93b1594e5c4ba0efaad3f0a739" +checksum = "2145138f3214928f08cd13da3cb51ef7482b5920d8ac5a02ecd4e38d1a8f6d1e" dependencies = [ - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", + "derive_more 2.0.1", "serde", + "serde_with", ] [[package]] name = "alloy-rpc-types-engine" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e5b09d86d0c015cb8400c5d1d0483425670bef4fc1260336aea9ef6d4b9540c" +checksum = "bb9b97b6e7965679ad22df297dda809b11cebc13405c1b537e5cffecc95834fa" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-serde", "derive_more 2.0.1", @@ -764,31 +693,32 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1826285e4ffc2372a8c061d5cc145858e67a0be3309b768c5b77ddb6b9e6cbc7" +checksum = "59c095f92c4e1ff4981d89e9aa02d5f98c762a1980ab66bec49c44be11349da2" dependencies = [ "alloy-consensus", "alloy-consensus-any", "alloy-eips", "alloy-network-primitives", - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-serde", - "alloy-sol-types 1.2.1", + "alloy-sol-types 1.6.0", "itertools 0.14.0", "serde", "serde_json", + "serde_with", "thiserror 2.0.12", ] [[package]] name = "alloy-rpc-types-trace" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1e8f7fa774a1d6f7b3654686f68955631e55f687e03da39c0bd77a9418d57a1" +checksum = "2e5a4d010f86cd4e01e5205ec273911e538e1738e76d8bafe9ecd245910ea5a3" dependencies = [ - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth", "alloy-serde", "serde", @@ -798,11 +728,11 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d39d9218a0fd802dbccd7e0ce601a6bdefb61190386e97a437d97a31661cd358" +checksum = "942d26a2ca8891b26de4a8529d21091e21c1093e27eb99698f1a86405c76b1ff" dependencies = [ - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth", "alloy-serde", "serde", @@ -810,24 +740,22 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "906ce0190afeded19cb2e963cb8507c975a7862216b9e74f39bf91ddee6ae74b" +checksum = "11ece63b89294b8614ab3f483560c08d016930f842bf36da56bf0b764a15c11e" dependencies = [ - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "serde", "serde_json", ] [[package]] name = "alloy-signer" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c89baab06195c4be9c5d66f15c55e948013d1aff3ec1cfb0ed469e1423313fce" +checksum = "43f447aefab0f1c0649f71edc33f590992d4e122bc35fb9cdbbf67d4421ace85" dependencies = [ - "alloy-dyn-abi", - "alloy-primitives 1.2.1", - "alloy-sol-types 1.2.1", + "alloy-primitives 1.6.0", "async-trait", "auto_impl", "either", @@ -838,16 +766,14 @@ dependencies = [ [[package]] name = "alloy-signer-ledger" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccaa089aa033669ed92f05e365e3a12d7a29b0cc5ee415917f3bf381fa1f346d" +checksum = "1f199e1a28175d8dbed35b4a726d2080bf0a696017e865d063090895f3342965" dependencies = [ "alloy-consensus", - "alloy-dyn-abi", "alloy-network", - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "alloy-signer", - "alloy-sol-types 1.2.1", "async-trait", "coins-ledger", "futures-util", @@ -858,40 +784,20 @@ dependencies = [ [[package]] name = "alloy-signer-local" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a249a923e302ac6db932567c43945392f0b6832518aab3c4274858f58756774" +checksum = "f721f4bf2e4812e5505aaf5de16ef3065a8e26b9139ac885862d00b5a55a659a" dependencies = [ "alloy-consensus", "alloy-network", - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "alloy-signer", "async-trait", - "coins-bip32", - "coins-bip39", - "eth-keystore", "k256", "rand 0.8.5", "thiserror 2.0.12", ] -[[package]] -name = "alloy-signer-trezor" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a087d62a5c2b109c2f7521da31d72ba914025141f2aa1c0be122ddc3f0ce31b" -dependencies = [ - "alloy-consensus", - "alloy-network", - "alloy-primitives 1.2.1", - "alloy-signer", - "async-trait", - "semver 1.0.26", - "thiserror 2.0.12", - "tracing", - "trezor-client", -] - [[package]] name = "alloy-sol-macro" version = "0.5.4" @@ -905,32 +811,32 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", "syn-solidity 0.5.4", "tiny-keccak", ] [[package]] name = "alloy-sol-macro" -version = "1.2.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a14f21d053aea4c6630687c2f4ad614bed4c81e14737a9b904798b24f30ea849" +checksum = "840128ed2b2971d6d4668a553fe403a82683d3acc646c73e75887e7157408033" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] name = "alloy-sol-macro-expander" -version = "1.2.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34d99282e7c9ef14eb62727981a985a01869e586d1dec729d3bb33679094c100" +checksum = "63ec265e5d65d725175f6ca7711c970824c90ef9c0d1f1973711d4150ee612dd" dependencies = [ - "alloy-json-abi 1.2.1", + "alloy-json-abi 1.6.0", "alloy-sol-macro-input", "const-hex", "heck 0.5.0", @@ -938,18 +844,18 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.104", - "syn-solidity 1.2.1", - "tiny-keccak", + "sha3", + "syn 2.0.117", + "syn-solidity 1.6.0", ] [[package]] name = "alloy-sol-macro-input" -version = "1.2.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eda029f955b78e493360ee1d7bd11e1ab9f2a220a5715449babc79d6d0a01105" +checksum = "89bf01077f18650876cfa682eb1f949967b5cde03f1a51c955c469d2c9b4aa67" dependencies = [ - "alloy-json-abi 1.2.1", + "alloy-json-abi 1.6.0", "const-hex", "dunce", "heck 0.5.0", @@ -957,8 +863,8 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.104", - "syn-solidity 1.2.1", + "syn 2.0.117", + "syn-solidity 1.6.0", ] [[package]] @@ -972,12 +878,12 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" -version = "1.2.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10db1bd7baa35bc8d4a1b07efbf734e73e5ba09f2580fb8cee3483a36087ceb2" +checksum = "857b470ecdd2ed38beaf82ad1a38c516a8ff75266750f38b9eeed001d575241b" dependencies = [ "serde", - "winnow 0.7.11", + "winnow 1.0.3", ] [[package]] @@ -994,24 +900,24 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "1.2.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58377025a47d8b8426b3e4846a251f2c1991033b27f517aade368146f6ab1dfe" +checksum = "384cf252de0db2dec52821eac037a7f57e2aa33fe5b900ce6fe39973402341f1" dependencies = [ - "alloy-json-abi 1.2.1", - "alloy-primitives 1.2.1", - "alloy-sol-macro 1.2.1", + "alloy-json-abi 1.6.0", + "alloy-primitives 1.6.0", + "alloy-sol-macro 1.6.0", "serde", ] [[package]] name = "alloy-transport" -version = "1.0.22" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f317d20f047b3de4d9728c556e2e9a92c9a507702d2016424cd8be13a74ca5e" +checksum = "8098f965442a9feb620965ba4b4be5e2b320f4ec5a3fff6bfa9e1ff7ef42bed1" dependencies = [ "alloy-json-rpc", - "alloy-primitives 1.2.1", + "auto_impl", "base64 0.22.1", "derive_more 2.0.1", "futures", @@ -1029,13 +935,14 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b234272ee449e32c9f1afbbe4ee08ea7c4b52f14479518f95c844ab66163c545" +checksum = "e8597d36d546e1dab822345ad563243ec3920e199322cb554ce56c8ef1a1e2e7" dependencies = [ "alloy-json-rpc", "alloy-transport", - "reqwest 0.12.20", + "itertools 0.14.0", + "reqwest 0.13.4", "serde_json", "tower", "tracing", @@ -1044,9 +951,9 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "061672d736144eb5aae13ca67cfec8e5e69a65bef818cb1a2ab2345d55c50ab4" +checksum = "a1bd98c3870b8a44b79091dde5216a81d58ffbc1fd8ed61b776f9fee0f3bdf20" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -1064,9 +971,9 @@ dependencies = [ [[package]] name = "alloy-transport-ws" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40b01f10382c2aea797d710279b24687a1e9e09a09ecd145f84f636f2a8a3fcc" +checksum = "ec3ab7a72b180992881acc112628b7668337a19ce15293ee974600ea7b693691" dependencies = [ "alloy-pubsub", "alloy-transport", @@ -1077,36 +984,36 @@ dependencies = [ "tokio", "tokio-tungstenite", "tracing", + "url", "ws_stream_wasm", ] [[package]] name = "alloy-trie" -version = "0.8.1" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "983d99aa81f586cef9dae38443245e585840fcf0fc58b09aee0b1f27aed1d500" +checksum = "3f14b5d9b2c2173980202c6ff470d96e7c5e202c65a9f67884ad565226df7fbb" dependencies = [ - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "alloy-rlp", - "arrayvec", "derive_more 2.0.1", "nybbles", "serde", "smallvec", + "thiserror 2.0.12", "tracing", ] [[package]] name = "alloy-tx-macros" -version = "1.0.12" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b75ef8609ea2b31c799b0a56c724dca4c73105c5ccc205d9dfeb1d038df6a1da" +checksum = "d69722eddcdf1ce096c3ab66cf8116999363f734eb36fe94a148f4f71c85da84" dependencies = [ - "alloy-primitives 1.2.1", - "darling 0.20.11", + "darling 0.23.0", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -1124,17 +1031,6 @@ dependencies = [ "libc", ] -[[package]] -name = "annotate-snippets" -version = "0.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "710e8eae58854cdc1790fcb56cca04d712a17be849eeb81da2a724bf4bae2bc4" -dependencies = [ - "anstyle", - "memchr", - "unicode-width", -] - [[package]] name = "anstream" version = "0.6.19" @@ -1330,7 +1226,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -1368,7 +1264,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -1457,7 +1353,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -1501,9 +1397,6 @@ name = "arrayvec" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" -dependencies = [ - "serde", -] [[package]] name = "ascii-canvas" @@ -1652,7 +1545,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -1720,7 +1613,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -1737,7 +1630,7 @@ checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -1790,7 +1683,7 @@ checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -1799,6 +1692,28 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +[[package]] +name = "aws-lc-rs" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ec2f1fc3ec205783a5da9a7e6c1509cc69dedf09a1949e412c1e18469326d00" +dependencies = [ + "aws-lc-sys", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a2f9779ce85b93ab6170dd940ad0169b5766ff848247aff13bb788b832fe3f4" +dependencies = [ + "cc", + "cmake", + "dunce", + "fs_extra", +] + [[package]] name = "backon" version = "1.6.0" @@ -1866,12 +1781,6 @@ dependencies = [ "regex", ] -[[package]] -name = "bech32" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" - [[package]] name = "beef" version = "0.5.2" @@ -1953,11 +1862,11 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.1" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -2004,6 +1913,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block-buffer" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdd35008169921d80bc60d3d0ab416eecb028c4cd653352907921d95084790be" +dependencies = [ + "hybrid-array", +] + [[package]] name = "blocking" version = "1.6.1" @@ -2019,9 +1937,9 @@ dependencies = [ [[package]] name = "blst" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fd49896f12ac9b6dcd7a5998466b9b58263a695a3dd1ecc1aaca2e12a90b080" +checksum = "dcdb4c7013139a150f9fc55d123186dbfaba0d912817466282c73ac49e71fb45" dependencies = [ "cc", "glob", @@ -2030,59 +1948,38 @@ dependencies = [ ] [[package]] -name = "bon" -version = "3.6.4" +name = "borsh" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f61138465baf186c63e8d9b6b613b508cd832cba4ce93cf37ce5f096f91ac1a6" +checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a" dependencies = [ - "bon-macros", - "rustversion", + "borsh-derive", + "bytes", + "cfg_aliases", ] [[package]] -name = "bon-macros" -version = "3.6.4" +name = "borsh-derive" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40d1dad34aa19bf02295382f08d9bc40651585bd497266831d40ee6296fb49ca" +checksum = "bfcfdc083699101d5a7965e49925975f2f55060f94f9a05e7187be95d530ca59" dependencies = [ - "darling 0.20.11", - "ident_case", - "prettyplease", + "once_cell", + "proc-macro-crate", "proc-macro2", "quote", - "rustversion", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] -name = "bs58" -version = "0.5.1" +name = "bumpalo" +version = "3.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" -dependencies = [ - "sha2 0.10.9", - "tinyvec", -] +checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" [[package]] -name = "bstr" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4" -dependencies = [ - "memchr", - "serde", -] - -[[package]] -name = "bumpalo" -version = "3.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" - -[[package]] -name = "byte-slice-cast" -version = "1.2.3" +name = "byte-slice-cast" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" @@ -2129,30 +2026,11 @@ dependencies = [ "serde", ] -[[package]] -name = "bzip2" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49ecfb22d906f800d4fe833b6282cf4dc1c298f5057ca0b5445e5c209735ca47" -dependencies = [ - "bzip2-sys", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.13+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" -dependencies = [ - "cc", - "pkg-config", -] - [[package]] name = "c-kzg" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7318cfa722931cb5fe0838b98d3ce5621e75f6a6408abc21721d80de9223f2e4" +checksum = "6648ed1e4ea8e8a1a4a2c78e1cda29a3fd500bc622899c340d8525ea9a76b24a" dependencies = [ "blst", "cc", @@ -2165,13 +2043,22 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.27" +version = "1.2.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" +checksum = "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98" dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", "shlex", ] +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + [[package]] name = "cfg-if" version = "1.0.1" @@ -2199,43 +2086,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "ciborium" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" -dependencies = [ - "ciborium-io", - "ciborium-ll", - "serde", -] - -[[package]] -name = "ciborium-io" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" - -[[package]] -name = "ciborium-ll" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" -dependencies = [ - "ciborium-io", - "half 2.6.0", -] - -[[package]] -name = "cipher" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" -dependencies = [ - "crypto-common", - "inout", -] - [[package]] name = "clap" version = "4.5.40" @@ -2256,9 +2106,6 @@ dependencies = [ "anstyle", "clap_lex", "strsim 0.11.1", - "terminal_size", - "unicase", - "unicode-width", ] [[package]] @@ -2270,7 +2117,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -2280,67 +2127,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" [[package]] -name = "coins-bip32" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2073678591747aed4000dd468b97b14d7007f7936851d3f2f01846899f5ebf08" -dependencies = [ - "bs58", - "coins-core", - "digest 0.10.7", - "hmac", - "k256", - "serde", - "sha2 0.10.9", - "thiserror 1.0.69", -] - -[[package]] -name = "coins-bip39" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74b169b26623ff17e9db37a539fe4f15342080df39f129ef7631df7683d6d9d4" -dependencies = [ - "bitvec", - "coins-bip32", - "hmac", - "once_cell", - "pbkdf2 0.12.2", - "rand 0.8.5", - "sha2 0.10.9", - "thiserror 1.0.69", -] - -[[package]] -name = "coins-core" -version = "0.12.0" +name = "cmake" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b962ad8545e43a28e14e87377812ba9ae748dd4fd963f4c10e9fcc6d13475b" +checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678" dependencies = [ - "base64 0.21.7", - "bech32", - "bs58", - "const-hex", - "digest 0.10.7", - "generic-array", - "ripemd", - "serde", - "sha2 0.10.9", - "sha3", - "thiserror 1.0.69", + "cc", ] [[package]] name = "coins-ledger" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab9bc0994d0aa0f4ade5f3a9baf4a8d936f250278c85a1124b401860454246ab" +checksum = "c707b8909cef367cd04a11b0d71d65ab34a625d295a07869dd2fff2ca95bf688" dependencies = [ "async-trait", "byteorder", "cfg-if", "const-hex", - "getrandom 0.2.16", "hidapi-rusb", "js-sys", "log", @@ -2398,10 +2202,19 @@ dependencies = [ "encode_unicode", "libc", "once_cell", - "unicode-width", "windows-sys 0.59.0", ] +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + [[package]] name = "const-hex" version = "1.14.1" @@ -2409,7 +2222,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83e22e0ed40b96a48d3db274f72fd365bd78f67af39b6bbd47e8a15e1c6207ff" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "hex", "proptest", "serde", @@ -2453,15 +2266,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" -[[package]] -name = "convert_case" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb402b8d4c85569410425650ce3eddc7d698ed96d39a73f941b08fb63082f1e7" -dependencies = [ - "unicode-segmentation", -] - [[package]] name = "cookie" version = "0.18.1" @@ -2508,6 +2312,15 @@ dependencies = [ "libc", ] +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +dependencies = [ + "libc", +] + [[package]] name = "crc" version = "3.3.0" @@ -2532,25 +2345,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "crossbeam-deque" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - [[package]] name = "crossbeam-utils" version = "0.8.21" @@ -2563,7 +2357,7 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.1", "crossterm_winapi", "parking_lot", "rustix 0.38.44", @@ -2607,6 +2401,15 @@ dependencies = [ "typenum", ] +[[package]] +name = "crypto-common" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" +dependencies = [ + "hybrid-array", +] + [[package]] name = "csv" version = "1.3.1" @@ -2628,15 +2431,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "ctr" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" -dependencies = [ - "cipher", -] - [[package]] name = "cynic" version = "3.11.0" @@ -2664,7 +2458,7 @@ dependencies = [ "quote", "rkyv", "strsim 0.10.0", - "syn 2.0.104", + "syn 2.0.117", "thiserror 1.0.69", ] @@ -2700,77 +2494,77 @@ dependencies = [ "cynic-codegen", "darling 0.20.11", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] name = "darling" -version = "0.14.4" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ - "darling_core 0.14.4", - "darling_macro 0.14.4", + "darling_core 0.20.11", + "darling_macro 0.20.11", ] [[package]] name = "darling" -version = "0.20.11" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" dependencies = [ - "darling_core 0.20.11", - "darling_macro 0.20.11", + "darling_core 0.23.0", + "darling_macro 0.23.0", ] [[package]] name = "darling_core" -version = "0.14.4" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "strsim 0.10.0", - "syn 1.0.109", + "strsim 0.11.1", + "syn 2.0.117", ] [[package]] name = "darling_core" -version = "0.20.11" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" dependencies = [ - "fnv", "ident_case", "proc-macro2", "quote", + "serde", "strsim 0.11.1", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] name = "darling_macro" -version = "0.14.4" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ - "darling_core 0.14.4", + "darling_core 0.20.11", "quote", - "syn 1.0.109", + "syn 2.0.117", ] [[package]] name = "darling_macro" -version = "0.20.11" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ - "darling_core 0.20.11", + "darling_core 0.23.0", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -2809,7 +2603,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ "const-oid", - "pem-rfc7468", "zeroize", ] @@ -2836,13 +2629,13 @@ dependencies = [ [[package]] name = "derive-where" -version = "1.5.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "510c292c8cf384b1a340b816a9a6cf2599eb8f566a44949024af88418000c50b" +checksum = "d08b3a0bcc0d079199cd476b2cae8435016ec11d1c0986c6901c5ac223041534" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -2853,16 +2646,7 @@ checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", -] - -[[package]] -name = "derive_builder" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d67778784b508018359cbc8696edb3db78160bab2c2a28ba7f56ef6932997f8" -dependencies = [ - "derive_builder_macro 0.12.0", + "syn 2.0.117", ] [[package]] @@ -2871,19 +2655,7 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" dependencies = [ - "derive_builder_macro 0.20.2", -] - -[[package]] -name = "derive_builder_core" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c11bdc11a0c47bc7d37d582b5285da6849c96681023680b906673c5707af7b0f" -dependencies = [ - "darling 0.14.4", - "proc-macro2", - "quote", - "syn 1.0.109", + "derive_builder_macro", ] [[package]] @@ -2895,17 +2667,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.104", -] - -[[package]] -name = "derive_builder_macro" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebcda35c7a396850a55ffeac740804b40ffec779b98fffbb1738f4033f0ee79e" -dependencies = [ - "derive_builder_core 0.12.0", - "syn 1.0.109", + "syn 2.0.117", ] [[package]] @@ -2914,8 +2676,8 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ - "derive_builder_core 0.20.2", - "syn 2.0.104", + "derive_builder_core", + "syn 2.0.117", ] [[package]] @@ -2924,20 +2686,11 @@ version = "0.99.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" dependencies = [ - "convert_case 0.4.0", + "convert_case", "proc-macro2", "quote", "rustc_version 0.4.1", - "syn 2.0.104", -] - -[[package]] -name = "derive_more" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" -dependencies = [ - "derive_more-impl 1.0.0", + "syn 2.0.117", ] [[package]] @@ -2946,19 +2699,7 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" dependencies = [ - "derive_more-impl 2.0.1", -] - -[[package]] -name = "derive_more-impl" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.104", - "unicode-xid", + "derive_more-impl", ] [[package]] @@ -2967,10 +2708,9 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" dependencies = [ - "convert_case 0.7.1", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", "unicode-xid", ] @@ -3000,24 +2740,11 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b035a542cf7abf01f2e3c4d5a7acbaebfefe120ae4efc7bde3df98186e4b8af7" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.1", "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.104", -] - -[[package]] -name = "dialoguer" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" -dependencies = [ - "console", - "shell-words", - "tempfile", - "thiserror 1.0.69", - "zeroize", + "syn 2.0.117", ] [[package]] @@ -3037,17 +2764,18 @@ checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", "const-oid", - "crypto-common", + "crypto-common 0.1.6", "subtle", ] [[package]] -name = "dirs" -version = "6.0.0" +name = "digest" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ - "dirs-sys", + "block-buffer 0.12.0", + "crypto-common 0.2.2", ] [[package]] @@ -3060,18 +2788,6 @@ dependencies = [ "dirs-sys-next", ] -[[package]] -name = "dirs-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" -dependencies = [ - "libc", - "option-ext", - "redox_users 0.5.0", - "windows-sys 0.60.2", -] - [[package]] name = "dirs-sys-next" version = "0.1.2" @@ -3079,7 +2795,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" dependencies = [ "libc", - "redox_users 0.4.6", + "redox_users", "winapi", ] @@ -3091,7 +2807,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -3113,7 +2829,7 @@ dependencies = [ "getrandom 0.2.16", "magic_string_rain", "once_cell", - "rain-metadata 0.0.2-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rain-metadata 0.0.2-alpha.6", "regex", "serde", "serde_bytes", @@ -3170,7 +2886,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -3194,7 +2910,6 @@ dependencies = [ "ff", "generic-array", "group", - "pem-rfc7468", "pkcs8", "rand_core 0.6.4", "sec1", @@ -3244,7 +2959,7 @@ checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -3253,16 +2968,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" -[[package]] -name = "erased-serde" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7" -dependencies = [ - "serde", - "typeid", -] - [[package]] name = "errno" version = "0.3.13" @@ -3274,38 +2979,16 @@ dependencies = [ ] [[package]] -name = "eth-keystore" -version = "0.5.0" +name = "event-listener" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" -dependencies = [ - "aes", - "ctr", - "digest 0.10.7", - "hex", - "hmac", - "pbkdf2 0.11.0", - "rand 0.8.5", - "scrypt", - "serde", - "serde_json", - "sha2 0.10.9", - "sha3", - "thiserror 1.0.69", - "uuid 0.8.2", -] - -[[package]] -name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - -[[package]] -name = "event-listener" -version = "5.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" dependencies = [ "concurrent-queue", "parking", @@ -3413,6 +3096,12 @@ dependencies = [ "version_check", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + [[package]] name = "fixed-hash" version = "0.8.0" @@ -3454,6 +3143,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + [[package]] name = "foreign-types" version = "0.3.2" @@ -3469,23 +3164,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" -[[package]] -name = "forge-script-sequence" -version = "1.2.3" -source = "git+https://github.com/foundry-rs/foundry?rev=ed86c645f037f1cc4e5c1583f074a7b2142c4f66#ed86c645f037f1cc4e5c1583f074a7b2142c4f66" -dependencies = [ - "alloy-network", - "alloy-primitives 1.2.1", - "eyre", - "foundry-common", - "foundry-compilers", - "foundry-config", - "revm-inspectors", - "serde", - "serde_json", - "walkdir", -] - [[package]] name = "form_urlencoded" version = "1.2.2" @@ -3496,370 +3174,21 @@ dependencies = [ ] [[package]] -name = "foundry-block-explorers" -version = "0.18.0" +name = "foundry-fork-db" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd57f39a860475780c0b001167b2bb9039e78d8d09323c6949897f5351ffae6" -dependencies = [ - "alloy-chains", - "alloy-json-abi 1.2.1", - "alloy-primitives 1.2.1", - "foundry-compilers", - "reqwest 0.12.20", - "semver 1.0.26", - "serde", - "serde_json", - "thiserror 1.0.69", - "tracing", -] - -[[package]] -name = "foundry-cheatcodes" -version = "1.2.3" -source = "git+https://github.com/foundry-rs/foundry?rev=ed86c645f037f1cc4e5c1583f074a7b2142c4f66#ed86c645f037f1cc4e5c1583f074a7b2142c4f66" +checksum = "198b205ccbd3e54041e9a145374a6e170c71deb6d4c84dede8cd504a75694ad6" dependencies = [ "alloy-chains", "alloy-consensus", - "alloy-dyn-abi", - "alloy-ens", - "alloy-evm", - "alloy-genesis", - "alloy-json-abi 1.2.1", - "alloy-network", - "alloy-primitives 1.2.1", + "alloy-hardforks 0.4.7", + "alloy-primitives 1.6.0", "alloy-provider", - "alloy-rlp", "alloy-rpc-types", - "alloy-signer", - "alloy-signer-local", - "alloy-sol-types 1.2.1", - "base64 0.22.1", - "dialoguer", - "ecdsa", "eyre", - "forge-script-sequence", - "foundry-cheatcodes-spec", - "foundry-common", - "foundry-compilers", - "foundry-config", - "foundry-evm-core", - "foundry-evm-traces", - "foundry-wallets", - "itertools 0.14.0", - "jsonpath_lib", - "k256", - "memchr", - "p256", - "parking_lot", - "proptest", - "rand 0.9.1", - "revm 24.0.1", - "revm-inspectors", - "semver 1.0.26", - "serde", - "serde_json", - "thiserror 2.0.12", - "toml", - "tracing", - "walkdir", -] - -[[package]] -name = "foundry-cheatcodes-spec" -version = "1.2.3" -source = "git+https://github.com/foundry-rs/foundry?rev=ed86c645f037f1cc4e5c1583f074a7b2142c4f66#ed86c645f037f1cc4e5c1583f074a7b2142c4f66" -dependencies = [ - "alloy-sol-types 1.2.1", - "foundry-macros", - "serde", -] - -[[package]] -name = "foundry-common" -version = "1.2.3" -source = "git+https://github.com/foundry-rs/foundry?rev=ed86c645f037f1cc4e5c1583f074a7b2142c4f66#ed86c645f037f1cc4e5c1583f074a7b2142c4f66" -dependencies = [ - "alloy-consensus", - "alloy-dyn-abi", - "alloy-eips", - "alloy-json-abi 1.2.1", - "alloy-json-rpc", - "alloy-network", - "alloy-primitives 1.2.1", - "alloy-provider", - "alloy-pubsub", - "alloy-rpc-client", - "alloy-rpc-types", - "alloy-serde", - "alloy-sol-types 1.2.1", - "alloy-transport", - "alloy-transport-http", - "alloy-transport-ipc", - "alloy-transport-ws", - "anstream", - "anstyle", - "chrono", - "ciborium", - "clap", - "comfy-table", - "dunce", - "eyre", - "flate2", - "foundry-block-explorers", - "foundry-common-fmt", - "foundry-compilers", - "foundry-config", - "itertools 0.14.0", - "jiff", - "num-format", - "path-slash", - "reqwest 0.12.20", - "semver 1.0.26", - "serde", - "serde_json", - "solar-parse", - "solar-sema", - "terminal_size", - "thiserror 2.0.12", - "tokio", - "tower", - "tracing", - "url", - "vergen", - "walkdir", - "yansi", -] - -[[package]] -name = "foundry-common-fmt" -version = "1.2.3" -source = "git+https://github.com/foundry-rs/foundry?rev=ed86c645f037f1cc4e5c1583f074a7b2142c4f66#ed86c645f037f1cc4e5c1583f074a7b2142c4f66" -dependencies = [ - "alloy-consensus", - "alloy-dyn-abi", - "alloy-network", - "alloy-primitives 1.2.1", - "alloy-rpc-types", - "alloy-serde", - "chrono", - "revm 24.0.1", - "serde", - "serde_json", - "yansi", -] - -[[package]] -name = "foundry-compilers" -version = "0.17.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72acadbe10bbcf1d2765155808a4b79744061ffba3ce78680ac9c86bd2222802" -dependencies = [ - "alloy-json-abi 1.2.1", - "alloy-primitives 1.2.1", - "auto_impl", - "derive_more 1.0.0", - "dirs", - "dyn-clone", - "foundry-compilers-artifacts", - "foundry-compilers-core", - "futures-util", - "home", - "itertools 0.14.0", - "path-slash", - "rayon", - "semver 1.0.26", - "serde", - "serde_json", - "sha2 0.10.9", - "solar-parse", - "solar-sema", - "svm-rs", - "svm-rs-builds", - "thiserror 2.0.12", - "tokio", - "tracing", - "winnow 0.7.11", - "yansi", -] - -[[package]] -name = "foundry-compilers-artifacts" -version = "0.17.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f1f4c29ce88d24d1bebc5708bd14104534b0edbc9ddf2e76037bdb29a51c1c9" -dependencies = [ - "foundry-compilers-artifacts-solc", - "foundry-compilers-artifacts-vyper", -] - -[[package]] -name = "foundry-compilers-artifacts-solc" -version = "0.17.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03f145ddd61f912cd8dc9cb57acaca6d771dc51ef23908bb98ad9c5859430679" -dependencies = [ - "alloy-json-abi 1.2.1", - "alloy-primitives 1.2.1", - "foundry-compilers-core", - "futures-util", - "path-slash", - "rayon", - "semver 1.0.26", - "serde", - "serde_json", - "thiserror 2.0.12", - "tokio", - "tracing", - "walkdir", - "yansi", -] - -[[package]] -name = "foundry-compilers-artifacts-vyper" -version = "0.17.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d553aebe632477cff64cfa20fa3dbd819d3a454a6dfd748fde9206915e3fe0d9" -dependencies = [ - "alloy-json-abi 1.2.1", - "alloy-primitives 1.2.1", - "foundry-compilers-artifacts-solc", - "foundry-compilers-core", - "path-slash", - "semver 1.0.26", - "serde", -] - -[[package]] -name = "foundry-compilers-core" -version = "0.17.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afbd404c3ebcba24d0cb4746f78908ac0d681e9afb16a638a15c13d8e324e848" -dependencies = [ - "alloy-primitives 1.2.1", - "cfg-if", - "dunce", - "path-slash", - "regex", - "semver 1.0.26", - "serde", - "serde_json", - "svm-rs", - "thiserror 2.0.12", - "tokio", - "walkdir", - "xxhash-rust", -] - -[[package]] -name = "foundry-config" -version = "1.2.3" -source = "git+https://github.com/foundry-rs/foundry?rev=ed86c645f037f1cc4e5c1583f074a7b2142c4f66#ed86c645f037f1cc4e5c1583f074a7b2142c4f66" -dependencies = [ - "alloy-chains", - "alloy-primitives 1.2.1", - "clap", - "dirs", - "dunce", - "eyre", - "figment", - "foundry-block-explorers", - "foundry-compilers", - "glob", - "globset", - "heck 0.5.0", - "itertools 0.14.0", - "mesc", - "number_prefix", - "path-slash", - "regex", - "reqwest 0.12.20", - "revm 24.0.1", - "semver 1.0.26", - "serde", - "serde_json", - "solar-interface", - "solar-parse", - "soldeer-core", - "thiserror 2.0.12", - "toml", - "toml_edit", - "tracing", - "walkdir", - "yansi", -] - -[[package]] -name = "foundry-evm" -version = "1.2.3" -source = "git+https://github.com/foundry-rs/foundry?rev=ed86c645f037f1cc4e5c1583f074a7b2142c4f66#ed86c645f037f1cc4e5c1583f074a7b2142c4f66" -dependencies = [ - "alloy-dyn-abi", - "alloy-evm", - "alloy-json-abi 1.2.1", - "alloy-primitives 1.2.1", - "alloy-sol-types 1.2.1", - "eyre", - "foundry-cheatcodes", - "foundry-common", - "foundry-compilers", - "foundry-config", - "foundry-evm-core", - "foundry-evm-coverage", - "foundry-evm-fuzz", - "foundry-evm-traces", - "indicatif", - "parking_lot", - "proptest", - "revm 24.0.1", - "revm-inspectors", - "serde", - "thiserror 2.0.12", - "tracing", - "uuid 1.17.0", -] - -[[package]] -name = "foundry-evm-abi" -version = "1.2.3" -source = "git+https://github.com/foundry-rs/foundry?rev=ed86c645f037f1cc4e5c1583f074a7b2142c4f66#ed86c645f037f1cc4e5c1583f074a7b2142c4f66" -dependencies = [ - "alloy-primitives 1.2.1", - "alloy-sol-types 1.2.1", - "derive_more 2.0.1", - "foundry-common-fmt", - "foundry-macros", - "itertools 0.14.0", -] - -[[package]] -name = "foundry-evm-core" -version = "1.2.3" -source = "git+https://github.com/foundry-rs/foundry?rev=ed86c645f037f1cc4e5c1583f074a7b2142c4f66#ed86c645f037f1cc4e5c1583f074a7b2142c4f66" -dependencies = [ - "alloy-consensus", - "alloy-dyn-abi", - "alloy-evm", - "alloy-genesis", - "alloy-json-abi 1.2.1", - "alloy-network", - "alloy-op-evm", - "alloy-primitives 1.2.1", - "alloy-provider", - "alloy-rpc-types", - "alloy-sol-types 1.2.1", - "auto_impl", - "eyre", - "foundry-cheatcodes-spec", - "foundry-common", - "foundry-config", - "foundry-evm-abi", - "foundry-fork-db", "futures", - "itertools 0.14.0", - "op-revm", "parking_lot", - "revm 24.0.1", - "revm-inspectors", + "revm 36.0.0", "serde", "serde_json", "thiserror 2.0.12", @@ -3869,144 +3198,10 @@ dependencies = [ ] [[package]] -name = "foundry-evm-coverage" -version = "1.2.3" -source = "git+https://github.com/foundry-rs/foundry?rev=ed86c645f037f1cc4e5c1583f074a7b2142c4f66#ed86c645f037f1cc4e5c1583f074a7b2142c4f66" -dependencies = [ - "alloy-primitives 1.2.1", - "eyre", - "foundry-common", - "foundry-compilers", - "foundry-evm-core", - "rayon", - "revm 24.0.1", - "semver 1.0.26", - "tracing", -] - -[[package]] -name = "foundry-evm-fuzz" -version = "1.2.3" -source = "git+https://github.com/foundry-rs/foundry?rev=ed86c645f037f1cc4e5c1583f074a7b2142c4f66#ed86c645f037f1cc4e5c1583f074a7b2142c4f66" -dependencies = [ - "alloy-dyn-abi", - "alloy-json-abi 1.2.1", - "alloy-primitives 1.2.1", - "eyre", - "foundry-common", - "foundry-compilers", - "foundry-config", - "foundry-evm-core", - "foundry-evm-coverage", - "foundry-evm-traces", - "itertools 0.14.0", - "parking_lot", - "proptest", - "rand 0.9.1", - "revm 24.0.1", - "serde", - "thiserror 2.0.12", - "tracing", -] - -[[package]] -name = "foundry-evm-traces" -version = "1.2.3" -source = "git+https://github.com/foundry-rs/foundry?rev=ed86c645f037f1cc4e5c1583f074a7b2142c4f66#ed86c645f037f1cc4e5c1583f074a7b2142c4f66" -dependencies = [ - "alloy-dyn-abi", - "alloy-json-abi 1.2.1", - "alloy-primitives 1.2.1", - "alloy-sol-types 1.2.1", - "eyre", - "foundry-block-explorers", - "foundry-common", - "foundry-compilers", - "foundry-config", - "foundry-evm-core", - "foundry-linking", - "futures", - "itertools 0.14.0", - "rayon", - "revm 24.0.1", - "revm-inspectors", - "serde", - "serde_json", - "solar-parse", - "tempfile", - "tokio", - "tracing", -] - -[[package]] -name = "foundry-fork-db" -version = "0.15.1" +name = "fs_extra" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e3ce9907d94f0371f17930a79ced2c2d9f09131da93f8678f21505ed43c1f39" -dependencies = [ - "alloy-consensus", - "alloy-primitives 1.2.1", - "alloy-provider", - "alloy-rpc-types", - "eyre", - "futures", - "parking_lot", - "revm 24.0.1", - "serde", - "serde_json", - "thiserror 2.0.12", - "tokio", - "tracing", - "url", -] - -[[package]] -name = "foundry-linking" -version = "1.2.3" -source = "git+https://github.com/foundry-rs/foundry?rev=ed86c645f037f1cc4e5c1583f074a7b2142c4f66#ed86c645f037f1cc4e5c1583f074a7b2142c4f66" -dependencies = [ - "alloy-primitives 1.2.1", - "foundry-compilers", - "semver 1.0.26", - "thiserror 2.0.12", -] - -[[package]] -name = "foundry-macros" -version = "1.2.3" -source = "git+https://github.com/foundry-rs/foundry?rev=ed86c645f037f1cc4e5c1583f074a7b2142c4f66#ed86c645f037f1cc4e5c1583f074a7b2142c4f66" -dependencies = [ - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.104", -] - -[[package]] -name = "foundry-wallets" -version = "1.2.3" -source = "git+https://github.com/foundry-rs/foundry?rev=ed86c645f037f1cc4e5c1583f074a7b2142c4f66#ed86c645f037f1cc4e5c1583f074a7b2142c4f66" -dependencies = [ - "alloy-consensus", - "alloy-dyn-abi", - "alloy-network", - "alloy-primitives 1.2.1", - "alloy-signer", - "alloy-signer-ledger", - "alloy-signer-local", - "alloy-signer-trezor", - "alloy-sol-types 1.2.1", - "async-trait", - "clap", - "derive_builder 0.20.2", - "eth-keystore", - "eyre", - "foundry-config", - "rpassword", - "serde", - "thiserror 2.0.12", - "tracing", -] +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" [[package]] name = "funty" @@ -4083,7 +3278,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -4174,11 +3369,26 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "r-efi", + "r-efi 5.3.0", "wasi 0.14.2+wasi-0.2.4", "wasm-bindgen", ] +[[package]] +name = "getrandom" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi 6.0.0", + "wasip2", + "wasip3", + "wasm-bindgen", +] + [[package]] name = "gimli" version = "0.31.1" @@ -4191,19 +3401,6 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" -[[package]] -name = "globset" -version = "0.4.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a1028dfc5f5df5da8a56a73e6c153c9a9708ec57232470703592a3f18e49f5" -dependencies = [ - "aho-corasick", - "bstr", - "log", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", -] - [[package]] name = "gloo-timers" version = "0.2.6" @@ -4341,16 +3538,6 @@ version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" -[[package]] -name = "half" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" -dependencies = [ - "cfg-if", - "crunchy", -] - [[package]] name = "hashbrown" version = "0.12.3" @@ -4367,7 +3554,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash 0.8.12", - "allocator-api2", ] [[package]] @@ -4375,11 +3561,31 @@ name = "hashbrown" version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" +dependencies = [ + "allocator-api2", + "foldhash 0.1.5", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "allocator-api2", "equivalent", - "foldhash", + "foldhash 0.2.0", +] + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" +dependencies = [ + "foldhash 0.2.0", "serde", + "serde_core", ] [[package]] @@ -4454,15 +3660,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "home" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" -dependencies = [ - "windows-sys 0.59.0", -] - [[package]] name = "http" version = "0.2.12" @@ -4559,6 +3756,15 @@ dependencies = [ "url", ] +[[package]] +name = "hybrid-array" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9155a582abd142abc056962c29e3ce5ff2ad5469f4246b537ed42c5deba857da" +dependencies = [ + "typenum", +] + [[package]] name = "hyper" version = "0.14.32" @@ -4613,12 +3819,10 @@ dependencies = [ "hyper 1.6.0", "hyper-util", "rustls", - "rustls-native-certs", "rustls-pki-types", "tokio", "tokio-rustls", "tower-service", - "webpki-roots 1.0.1", ] [[package]] @@ -4786,6 +3990,12 @@ dependencies = [ "zerovec", ] +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + [[package]] name = "ident_case" version = "1.0.1" @@ -4826,24 +4036,8 @@ dependencies = [ [[package]] name = "if_chain" version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed" - -[[package]] -name = "ignore" -version = "0.4.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" -dependencies = [ - "crossbeam-deque", - "globset", - "log", - "memchr", - "regex-automata 0.4.9", - "same-file", - "walkdir", - "winapi-util", -] +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed" [[package]] name = "impl-codec" @@ -4862,7 +4056,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -4871,12 +4065,6 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" -[[package]] -name = "index_vec" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44faf5bb8861a9c72e20d3fb0fdbd59233e43056e2b80475ab0aacdc2e781355" - [[package]] name = "indexmap" version = "1.9.3" @@ -4900,19 +4088,6 @@ dependencies = [ "serde", ] -[[package]] -name = "indicatif" -version = "0.17.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" -dependencies = [ - "console", - "number_prefix", - "portable-atomic", - "unicode-width", - "web-time", -] - [[package]] name = "inflate" version = "0.4.5" @@ -4928,15 +4103,6 @@ version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8fae54786f62fb2918dcfae3d568594e50eb9b5c25bf04371af6fe7516452fb" -[[package]] -name = "inout" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" -dependencies = [ - "generic-array", -] - [[package]] name = "insta" version = "1.43.1" @@ -4969,16 +4135,6 @@ version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" -[[package]] -name = "iri-string" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" -dependencies = [ - "memchr", - "serde", -] - [[package]] name = "is-terminal" version = "0.4.16" @@ -5048,65 +4204,69 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] -name = "jiff" -version = "0.2.15" +name = "jni" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" dependencies = [ - "jiff-static", - "jiff-tzdb-platform", + "cesu8", + "cfg-if", + "combine", + "jni-sys 0.3.1", "log", - "portable-atomic", - "portable-atomic-util", - "serde", - "windows-sys 0.59.0", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", ] [[package]] -name = "jiff-static" -version = "0.2.15" +name = "jni-sys" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.104", + "jni-sys 0.4.1", ] [[package]] -name = "jiff-tzdb" -version = "0.1.4" +name = "jni-sys" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1283705eb0a21404d2bfd6eef2a7593d240bc42a0bdb39db0ad6fa2ec026524" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] [[package]] -name = "jiff-tzdb-platform" -version = "0.1.3" +name = "jni-sys-macros" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" dependencies = [ - "jiff-tzdb", + "quote", + "syn 2.0.117", ] [[package]] -name = "js-sys" -version = "0.3.77" +name = "jobserver" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ - "once_cell", - "wasm-bindgen", + "getrandom 0.3.3", + "libc", ] [[package]] -name = "jsonpath_lib" -version = "0.3.0" +name = "js-sys" +version = "0.3.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaa63191d68230cccb81c5aa23abd53ed64d83337cacbb25a7b8c7979523774f" +checksum = "142bc4740e452c1e57ade0cbc129f139c9093e354346f0872ef985f4f5cf5f11" dependencies = [ - "log", - "serde", - "serde_json", + "cfg-if", + "futures-util", + "once_cell", + "wasm-bindgen", ] [[package]] @@ -5136,23 +4296,23 @@ dependencies = [ "once_cell", "serdect", "sha2 0.10.9", - "signature", ] [[package]] name = "keccak" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +checksum = "9e24a010dd405bd7ed803e5253182815b41bf2e6a80cc3bfc066658e03a198aa" dependencies = [ - "cpufeatures", + "cfg-if", + "cpufeatures 0.3.0", ] [[package]] name = "keccak-asm" -version = "0.1.4" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" +checksum = "1766b89733097006f3a1388a02849865d6bc98c89273cb622e29fdd209922183" dependencies = [ "digest 0.10.7", "sha3-asm", @@ -5221,22 +4381,18 @@ dependencies = [ "rustversion", ] -[[package]] -name = "lasso" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e14eda50a3494b3bf7b9ce51c52434a761e383d7238ce1dd5dcec2fbc13e9fb" -dependencies = [ - "dashmap", - "hashbrown 0.14.5", -] - [[package]] name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + [[package]] name = "levenshtein" version = "1.0.5" @@ -5261,7 +4417,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.1", "libc", ] @@ -5406,7 +4562,7 @@ dependencies = [ "proc-macro2", "quote", "regex-syntax 0.8.5", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -5435,11 +4591,11 @@ dependencies = [ [[package]] name = "lru" -version = "0.13.0" +version = "0.16.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "227748d55f2f0ab4735d87fd623798cb6b664512fe979705f829c9f81c934465" +checksum = "7f66e8d5d03f609abc3a39e6f08e4164ebf1447a732906d39eb9b99b7919ef39" dependencies = [ - "hashbrown 0.15.4", + "hashbrown 0.16.1", ] [[package]] @@ -5463,13 +4619,13 @@ dependencies = [ [[package]] name = "macro-string" -version = "0.1.4" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" +checksum = "59a9dbbfc75d2688ed057456ce8a3ee3f48d12eec09229f560f3643b9f275653" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -5485,12 +4641,6 @@ dependencies = [ "vlq", ] -[[package]] -name = "match_cfg" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" - [[package]] name = "matchers" version = "0.1.0" @@ -5515,17 +4665,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "mesc" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d04b0347d2799ef17df4623dbcb03531031142105168e0c549e0bf1f980e9e7e" -dependencies = [ - "serde", - "serde_json", - "thiserror 1.0.69", -] - [[package]] name = "mime" version = "0.3.17" @@ -5627,12 +4766,6 @@ dependencies = [ "pin-utils", ] -[[package]] -name = "normalize-path" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5438dd2b2ff4c6df6e1ce22d825ed2fa93ee2922235cc45186991717f0a892d" - [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -5693,16 +4826,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" -[[package]] -name = "num-format" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" -dependencies = [ - "arrayvec", - "itoa", -] - [[package]] name = "num-integer" version = "0.1.46" @@ -5773,33 +4896,19 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.104", -] - -[[package]] -name = "num_threads" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" -dependencies = [ - "libc", + "syn 2.0.117", ] -[[package]] -name = "number_prefix" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" - [[package]] name = "nybbles" -version = "0.3.4" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8983bb634df7248924ee0c4c3a749609b5abcb082c28fffe3254b3eb3602b307" +checksum = "0d49ff0c0d00d4a502b39df9af3a525e1efeb14b9dabb5bb83335284c1309210" dependencies = [ "alloy-rlp", - "const-hex", + "cfg-if", "proptest", + "ruint", "serde", "smallvec", ] @@ -5825,44 +4934,6 @@ version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" -[[package]] -name = "once_map" -version = "0.4.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bd2cae3bec3936bbed1ccc5a3343b3738858182419f9c0522c7260c80c430b0" -dependencies = [ - "ahash 0.8.12", - "hashbrown 0.15.4", - "parking_lot", - "stable_deref_trait", -] - -[[package]] -name = "op-alloy-consensus" -version = "0.17.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2423a125ef2daa0d15dacc361805a0b6f76d6acfc6e24a1ff6473582087fe75" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives 1.2.1", - "alloy-rlp", - "derive_more 2.0.1", - "thiserror 2.0.12", -] - -[[package]] -name = "op-revm" -version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0e8a3830a2be82166fbe9ead34361149ff4320743ed7ee5502ab779de221361" -dependencies = [ - "auto_impl", - "once_cell", - "revm 24.0.1", - "serde", -] - [[package]] name = "opaque-debug" version = "0.3.1" @@ -5875,7 +4946,7 @@ version = "0.10.73" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.1", "cfg-if", "foreign-types", "libc", @@ -5892,7 +4963,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -5913,12 +4984,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "option-ext" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" - [[package]] name = "ouroboros" version = "0.18.5" @@ -5940,7 +5005,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -6107,7 +5172,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -6145,31 +5210,6 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" -[[package]] -name = "path-slash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" - -[[package]] -name = "pbkdf2" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "pbkdf2" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" -dependencies = [ - "digest 0.10.7", - "hmac", -] - [[package]] name = "pear" version = "0.2.9" @@ -6190,7 +5230,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -6203,15 +5243,6 @@ dependencies = [ "serde", ] -[[package]] -name = "pem-rfc7468" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" -dependencies = [ - "base64ct", -] - [[package]] name = "percent-encoding" version = "2.3.2" @@ -6255,8 +5286,19 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ - "phf_macros", - "phf_shared", + "phf_macros 0.11.3", + "phf_shared 0.11.3", + "serde", +] + +[[package]] +name = "phf" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" +dependencies = [ + "phf_macros 0.13.1", + "phf_shared 0.13.1", "serde", ] @@ -6266,21 +5308,44 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ - "phf_shared", + "phf_shared 0.11.3", "rand 0.8.5", ] +[[package]] +name = "phf_generator" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" +dependencies = [ + "fastrand", + "phf_shared 0.13.1", +] + [[package]] name = "phf_macros" version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" dependencies = [ - "phf_generator", - "phf_shared", + "phf_generator 0.11.3", + "phf_shared 0.11.3", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "phf_macros" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" +dependencies = [ + "phf_generator 0.13.1", + "phf_shared 0.13.1", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -6292,6 +5357,15 @@ dependencies = [ "siphasher", ] +[[package]] +name = "phf_shared" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" +dependencies = [ + "siphasher", +] + [[package]] name = "pico-args" version = "0.5.0" @@ -6315,7 +5389,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -6372,21 +5446,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "portable-atomic" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" - -[[package]] -name = "portable-atomic-util" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" -dependencies = [ - "portable-atomic", -] - [[package]] name = "potential_utf" version = "0.1.2" @@ -6424,7 +5483,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "061c1221631e079b26479d25bbf2275bfe5917ae8419cd7e34f13bfc2aa7539a" dependencies = [ "proc-macro2", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -6499,7 +5558,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -6519,7 +5578,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", "version_check", "yansi", ] @@ -6532,7 +5591,7 @@ checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" dependencies = [ "bit-set 0.8.0", "bit-vec 0.8.0", - "bitflags 2.9.1", + "bitflags 2.11.1", "lazy_static", "num-traits", "rand 0.9.1", @@ -6546,33 +5605,13 @@ dependencies = [ [[package]] name = "proptest-derive" -version = "0.5.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee1c9ac207483d5e7db4940700de86a9aae46ef90c48b57f99fe7edb8345e49" +checksum = "c57924a81864dddafba92e1bf92f9bf82f97096c44489548a60e888e1547549b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", -] - -[[package]] -name = "protobuf" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b65f4a8ec18723a734e5dc09c173e0abf9690432da5340285d536edcb4dac190" -dependencies = [ - "once_cell", - "protobuf-support", - "thiserror 1.0.69", -] - -[[package]] -name = "protobuf-support" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6872f4d4f4b98303239a2b5838f5bbbb77b01ffc892d627957f37a22d7cfe69c" -dependencies = [ - "thiserror 1.0.69", + "syn 2.0.117", ] [[package]] @@ -6627,6 +5666,7 @@ version = "0.11.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" dependencies = [ + "aws-lc-rs", "bytes", "getrandom 0.3.3", "lru-slab", @@ -6671,6 +5711,12 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "radium" version = "0.7.0" @@ -6679,18 +5725,21 @@ checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" [[package]] name = "rain-erc" -version = "0.0.0" -source = "git+https://github.com/rainlanguage/rain.erc?rev=7b0f382f5e0788b0173c2391e09f4411f1c38300#7b0f382f5e0788b0173c2391e09f4411f1c38300" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c1743f958ef5d54d361f3b7e2ff9109adfe0549934c46fac729f8d69ec09677" dependencies = [ "alloy", - "alloy-ethers-typecast 0.2.0 (git+https://github.com/rainlanguage/alloy-ethers-typecast?rev=f7b5bfd0687f16c77dbfdd4905b2434793fa7885)", + "getrandom 0.2.16", + "getrandom 0.3.3", "thiserror 1.0.69", ] [[package]] name = "rain-error-decoding" -version = "0.1.0" -source = "git+https://github.com/rainlanguage/rain.error?rev=3d2ed70fb2f7c6156706846e10f163d1e493a8d3#3d2ed70fb2f7c6156706846e10f163d1e493a8d3" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9224baec8539fb08eda0cdf3cb0bf27538b28d366daaab289afb897da92d71dd" dependencies = [ "alloy", "async-trait", @@ -6704,34 +5753,41 @@ dependencies = [ ] [[package]] -name = "rain-error-decoding" -version = "0.1.0" -source = "git+https://github.com/rainlanguage/rain.error?rev=bf08b5ab305287fc49408a441d6375f35dc280db#bf08b5ab305287fc49408a441d6375f35dc280db" +name = "rain-forker" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df53859f48d506b8efb902ad1afe4cf9be70d91e34e3847c5186a51b649db6e8" dependencies = [ "alloy", - "getrandom 0.2.16", - "once_cell", - "reqwest 0.11.27", + "eyre", + "foundry-fork-db", + "rain-error-decoding", + "revm 36.0.0", + "revm-inspectors", "serde", - "serde_json", "thiserror 1.0.69", ] [[package]] name = "rain-math-float" -version = "0.1.0" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edf2d43bab7846c4abdd112af976e8093f7cb92a741f8a4e545035be10f42cb0" dependencies = [ "alloy", "getrandom 0.2.16", "revm 25.0.0", "serde", "thiserror 2.0.12", - "wasm-bindgen-utils 0.0.10 (git+https://github.com/rainlanguage/rain.wasm?rev=06990d85a0b7c55378a1c8cca4dd9e2bc34a596a)", + "wasm-bindgen", + "wasm-bindgen-utils", ] [[package]] name = "rain-metaboard-subgraph" -version = "0.1.0" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c0cbc846617ff25cb8b63afab4da3c9e9d6b04c61c863c36df5a7ba3ae8e90e" dependencies = [ "alloy", "async-trait", @@ -6744,9 +5800,12 @@ dependencies = [ [[package]] name = "rain-metadata" version = "0.0.2-alpha.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98a4cc20d0b88a82e1ade286f7f3999c7a6faac02df49c393a44eca914330d80" dependencies = [ - "alloy", - "alloy-ethers-typecast 0.2.0 (git+https://github.com/rainlanguage/alloy-ethers-typecast?rev=f7b5bfd0687f16c77dbfdd4905b2434793fa7885)", + "alloy-json-abi 0.5.4", + "alloy-primitives 0.5.4", + "alloy-sol-types 0.5.4", "anyhow", "clap", "deflate", @@ -6755,9 +5814,6 @@ dependencies = [ "inflate", "itertools 0.10.5", "once_cell", - "rain-erc", - "rain-metaboard-subgraph", - "rain-metadata-bindings", "regex", "reqwest 0.11.27", "schemars 0.8.22", @@ -6766,33 +5822,31 @@ dependencies = [ "serde_cbor", "serde_json", "strum 0.24.1", - "thiserror 1.0.69", "tokio", "tracing", "tracing-subscriber 0.3.19", - "url", "validator", - "wasm-bindgen", - "wasm-bindgen-utils 0.0.10 (git+https://github.com/rainlanguage/rain.wasm?rev=06990d85a0b7c55378a1c8cca4dd9e2bc34a596a)", ] [[package]] name = "rain-metadata" -version = "0.0.2-alpha.6" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98a4cc20d0b88a82e1ade286f7f3999c7a6faac02df49c393a44eca914330d80" +checksum = "5299e8bdcb99fb901e5d171ea9f99166f38c123550b33cf4a66f9020cae2976e" dependencies = [ - "alloy-json-abi 0.5.4", - "alloy-primitives 0.5.4", - "alloy-sol-types 0.5.4", + "alloy", "anyhow", "clap", "deflate", "futures", + "graphql-parser", "graphql_client", "inflate", "itertools 0.10.5", "once_cell", + "rain-erc", + "rain-metaboard-subgraph", + "rain-metadata-bindings", "regex", "reqwest 0.11.27", "schemars 0.8.22", @@ -6801,15 +5855,21 @@ dependencies = [ "serde_cbor", "serde_json", "strum 0.24.1", + "thiserror 1.0.69", "tokio", "tracing", "tracing-subscriber 0.3.19", + "url", "validator", + "wasm-bindgen", + "wasm-bindgen-utils", ] [[package]] name = "rain-metadata-bindings" -version = "0.1.0" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3e5ee27b554b80988a3ac9f3cd702558a7b6f4da0c82975aef301540b8d8d4f" dependencies = [ "alloy", ] @@ -6819,7 +5879,7 @@ name = "raindex_app_settings" version = "0.0.0-alpha.0" dependencies = [ "alloy", - "derive_builder 0.20.2", + "derive_builder", "futures", "httpmock", "raindex_bindings", @@ -6831,7 +5891,7 @@ dependencies = [ "thiserror 1.0.69", "tokio", "url", - "wasm-bindgen-utils 0.0.10 (git+https://github.com/rainlanguage/rain.wasm?rev=06990d85a0b7c55378a1c8cca4dd9e2bc34a596a)", + "wasm-bindgen-utils", ] [[package]] @@ -6845,7 +5905,7 @@ dependencies = [ "tower", "url", "wasm-bindgen-test", - "wasm-bindgen-utils 0.0.10 (git+https://github.com/rainlanguage/rain.wasm?rev=06990d85a0b7c55378a1c8cca4dd9e2bc34a596a)", + "wasm-bindgen-utils", ] [[package]] @@ -6853,7 +5913,6 @@ name = "raindex_cli" version = "0.0.0-alpha.0" dependencies = [ "alloy", - "alloy-ethers-typecast 0.2.0 (git+https://github.com/rainlanguage/alloy-ethers-typecast?rev=bcc3a04394aefe191fef4ae8e6e94381a419c99a)", "anyhow", "async-trait", "chrono", @@ -6865,7 +5924,7 @@ dependencies = [ "httpmock", "itertools 0.14.0", "rain-math-float", - "rain-metadata 0.0.2-alpha.6", + "rain-metadata 0.1.1", "raindex_app_settings", "raindex_bindings", "raindex_common", @@ -6890,7 +5949,6 @@ name = "raindex_common" version = "0.0.0-alpha.0" dependencies = [ "alloy", - "alloy-ethers-typecast 0.2.0 (git+https://github.com/rainlanguage/alloy-ethers-typecast?rev=bcc3a04394aefe191fef4ae8e6e94381a419c99a)", "async-trait", "backon", "base64 0.22.1", @@ -6908,10 +5966,10 @@ dependencies = [ "itertools 0.14.0", "once_cell", "proptest", - "rain-error-decoding 0.1.0 (git+https://github.com/rainlanguage/rain.error?rev=3d2ed70fb2f7c6156706846e10f163d1e493a8d3)", + "rain-error-decoding", "rain-math-float", "rain-metaboard-subgraph", - "rain-metadata 0.0.2-alpha.6", + "rain-metadata 0.1.1", "rain-metadata-bindings", "raindex_app_settings", "raindex_bindings", @@ -6937,9 +5995,10 @@ dependencies = [ "tower", "tracing", "url", + "wasm-bindgen", "wasm-bindgen-futures", "wasm-bindgen-test", - "wasm-bindgen-utils 0.0.10 (git+https://github.com/rainlanguage/rain.wasm?rev=06990d85a0b7c55378a1c8cca4dd9e2bc34a596a)", + "wasm-bindgen-utils", "web-sys", ] @@ -6961,17 +6020,17 @@ name = "raindex_js_api" version = "0.0.0-alpha.0" dependencies = [ "alloy", - "alloy-ethers-typecast 0.2.0 (git+https://github.com/rainlanguage/alloy-ethers-typecast?rev=bcc3a04394aefe191fef4ae8e6e94381a419c99a)", "base64 0.22.1", "bincode", "cynic", "flate2", "futures", "getrandom 0.2.16", + "getrandom 0.4.2", "httpmock", "rain-math-float", "rain-metaboard-subgraph", - "rain-metadata 0.0.2-alpha.6", + "rain-metadata 0.1.1", "raindex_app_settings", "raindex_bindings", "raindex_common", @@ -6985,8 +6044,9 @@ dependencies = [ "thiserror 1.0.69", "tokio", "url", + "wasm-bindgen", "wasm-bindgen-test", - "wasm-bindgen-utils 0.0.10 (git+https://github.com/rainlanguage/rain.wasm?rev=06990d85a0b7c55378a1c8cca4dd9e2bc34a596a)", + "wasm-bindgen-utils", ] [[package]] @@ -7003,7 +6063,6 @@ name = "raindex_quote" version = "0.0.0-alpha.0" dependencies = [ "alloy", - "alloy-ethers-typecast 0.2.0 (git+https://github.com/rainlanguage/alloy-ethers-typecast?rev=bcc3a04394aefe191fef4ae8e6e94381a419c99a)", "anyhow", "async-trait", "clap", @@ -7011,9 +6070,9 @@ dependencies = [ "getrandom 0.2.16", "httpmock", "once_cell", - "rain-error-decoding 0.1.0 (git+https://github.com/rainlanguage/rain.error?rev=3d2ed70fb2f7c6156706846e10f163d1e493a8d3)", + "rain-error-decoding", "rain-math-float", - "rain-metadata 0.0.2-alpha.6", + "rain-metadata 0.1.1", "raindex_app_settings", "raindex_bindings", "raindex_common", @@ -7030,7 +6089,7 @@ dependencies = [ "tracing-subscriber 0.3.19", "url", "wasm-bindgen-test", - "wasm-bindgen-utils 0.0.10 (git+https://github.com/rainlanguage/rain.wasm?rev=06990d85a0b7c55378a1c8cca4dd9e2bc34a596a)", + "wasm-bindgen-utils", ] [[package]] @@ -7072,7 +6131,7 @@ dependencies = [ "tokio", "tracing", "url", - "wasm-bindgen-utils 0.0.10 (git+https://github.com/rainlanguage/rain.wasm?rev=06990d85a0b7c55378a1c8cca4dd9e2bc34a596a)", + "wasm-bindgen-utils", ] [[package]] @@ -7088,40 +6147,45 @@ dependencies = [ [[package]] name = "rainlang-eval" -version = "0.1.0" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23ee45d3623134e45bfc6616e9a418194efb3ddb2a2657277154ccff7ab07345" dependencies = [ "alloy", "eyre", - "foundry-evm", - "rain-error-decoding 0.1.0 (git+https://github.com/rainlanguage/rain.error?rev=3d2ed70fb2f7c6156706846e10f163d1e493a8d3)", + "rain-error-decoding", + "rain-forker", "rainlang_bindings", - "revm 24.0.1", - "revm 25.0.0", "serde", "thiserror 1.0.69", - "wasm-bindgen-utils 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-utils", ] [[package]] name = "rainlang_bindings" -version = "0.1.0" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2e719069e2398e55d76b86fba85adac468165e2033892e94726ef3bc61e5f88" dependencies = [ "alloy", ] [[package]] name = "rainlang_dispair" -version = "0.1.0" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad909477c6d6a6ff4c84abeeb4284d9d49a467ab1af9aab9b08455b8d7c2edab" dependencies = [ "alloy", ] [[package]] name = "rainlang_parser" -version = "0.1.0" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fda98d2e192263e0db920d72a7ec89b845726c6580604dea97eff041c9c8f0bf" dependencies = [ "alloy", - "alloy-ethers-typecast 0.2.0 (git+https://github.com/rainlanguage/alloy-ethers-typecast?rev=bcc3a04394aefe191fef4ae8e6e94381a419c99a)", "rainlang_bindings", "rainlang_dispair", "thiserror 1.0.69", @@ -7131,6 +6195,7 @@ dependencies = [ [[package]] name = "rainlang_test_fixtures" version = "0.0.0" +source = "git+https://github.com/rainlanguage/rainlang?rev=580205d244a94097b06602ecda36faedf54d7775#580205d244a94097b06602ecda36faedf54d7775" dependencies = [ "alloy", "getrandom 0.2.16", @@ -7208,23 +6273,13 @@ dependencies = [ ] [[package]] -name = "rayon" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.12.1" +name = "rapidhash" +version = "4.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "b5e48930979c155e2f33aa36ab3119b5ee81332beb6482199a8ecd6029b80b59" dependencies = [ - "crossbeam-deque", - "crossbeam-utils", + "rand 0.9.1", + "rustversion", ] [[package]] @@ -7239,7 +6294,7 @@ version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.1", ] [[package]] @@ -7253,17 +6308,6 @@ dependencies = [ "thiserror 1.0.69", ] -[[package]] -name = "redox_users" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" -dependencies = [ - "getrandom 0.2.16", - "libredox", - "thiserror 2.0.12", -] - [[package]] name = "ref-cast" version = "1.0.24" @@ -7281,7 +6325,7 @@ checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -7386,9 +6430,7 @@ dependencies = [ "base64 0.22.1", "bytes", "encoding_rs", - "futures-channel", "futures-core", - "futures-util", "h2 0.4.10", "http 1.3.1", "http-body 1.0.1", @@ -7400,13 +6442,9 @@ dependencies = [ "js-sys", "log", "mime", - "mime_guess", "native-tls", "percent-encoding", "pin-project-lite", - "quinn", - "rustls", - "rustls-native-certs", "rustls-pki-types", "serde", "serde_json", @@ -7414,36 +6452,50 @@ dependencies = [ "sync_wrapper 1.0.2", "tokio", "tokio-native-tls", - "tokio-rustls", - "tokio-util", "tower", "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", - "wasm-streams", "web-sys", - "webpki-roots 1.0.1", ] [[package]] -name = "revm" -version = "24.0.1" +name = "reqwest" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d277408ff8d6f747665ad9e52150ab4caf8d5eaf0d787614cf84633c8337b4" +checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3" dependencies = [ - "revm-bytecode", - "revm-context 5.0.1", - "revm-context-interface 5.0.0", - "revm-database 4.0.1", - "revm-database-interface 4.0.1", - "revm-handler 5.0.1", - "revm-inspector 5.0.1", - "revm-interpreter 20.0.0", - "revm-precompile 21.0.0", - "revm-primitives", - "revm-state 4.0.1", + "base64 0.22.1", + "bytes", + "futures-core", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.6.0", + "hyper-rustls", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pki-types", + "rustls-platform-verifier", + "serde", + "serde_json", + "sync_wrapper 1.0.2", + "tokio", + "tokio-rustls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", ] [[package]] @@ -7452,7 +6504,7 @@ version = "25.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08fd78df29217546ddfd587fe313aff2bf86e57cfe0f18d16cb326d9f50ba54d" dependencies = [ - "revm-bytecode", + "revm-bytecode 4.1.0", "revm-context 6.0.0", "revm-context-interface 6.0.0", "revm-database 5.0.0", @@ -7461,10 +6513,29 @@ dependencies = [ "revm-inspector 6.0.0", "revm-interpreter 21.0.0", "revm-precompile 22.0.0", - "revm-primitives", + "revm-primitives 19.2.0", "revm-state 5.0.0", ] +[[package]] +name = "revm" +version = "36.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0abc15d09cd211e9e73410ada10134069c794d4bcdb787dfc16a1bf0939849c" +dependencies = [ + "revm-bytecode 9.0.0", + "revm-context 15.0.0", + "revm-context-interface 16.0.0", + "revm-database 12.0.0", + "revm-database-interface 10.0.0", + "revm-handler 17.0.0", + "revm-inspector 17.0.0", + "revm-interpreter 34.0.0", + "revm-precompile 32.1.0", + "revm-primitives 22.1.0", + "revm-state 10.0.0", +] + [[package]] name = "revm-bytecode" version = "4.1.0" @@ -7473,24 +6544,20 @@ checksum = "942fe4724cf552fd28db6b0a2ca5b79e884d40dd8288a4027ed1e9090e0c6f49" dependencies = [ "bitvec", "once_cell", - "phf", - "revm-primitives", + "phf 0.11.3", + "revm-primitives 19.2.0", "serde", ] [[package]] -name = "revm-context" -version = "5.0.1" +name = "revm-bytecode" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b01aad49e1233f94cebda48a4e5cef022f7c7ed29b4edf0d202b081af23435ef" +checksum = "e86e468df3cf5cf59fa7ef71a3e9ccabb76bb336401ea2c0674f563104cf3c5e" dependencies = [ - "cfg-if", - "derive-where", - "revm-bytecode", - "revm-context-interface 5.0.0", - "revm-database-interface 4.0.1", - "revm-primitives", - "revm-state 4.0.1", + "bitvec", + "phf 0.13.1", + "revm-primitives 22.1.0", "serde", ] @@ -7502,27 +6569,28 @@ checksum = "190f211f04c8030f5393cfcfa1569b88d5649f0f266bf4291981ba879fa6c5d1" dependencies = [ "cfg-if", "derive-where", - "revm-bytecode", + "revm-bytecode 4.1.0", "revm-context-interface 6.0.0", "revm-database-interface 5.0.0", - "revm-primitives", + "revm-primitives 19.2.0", "revm-state 5.0.0", "serde", ] [[package]] -name = "revm-context-interface" -version = "5.0.0" +name = "revm-context" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b844f48a411e62c7dde0f757bf5cce49c85b86d6fc1d3b2722c07f2bec4c3ce" +checksum = "9eb1f0a76b14d684a444fc52f7bf6b7564bf882599d91ee62e76d602e7a187c7" dependencies = [ - "alloy-eip2930", - "alloy-eip7702", - "auto_impl", - "either", - "revm-database-interface 4.0.1", - "revm-primitives", - "revm-state 4.0.1", + "bitvec", + "cfg-if", + "derive-where", + "revm-bytecode 9.0.0", + "revm-context-interface 16.0.0", + "revm-database-interface 10.0.0", + "revm-primitives 22.1.0", + "revm-state 10.0.0", "serde", ] @@ -7537,22 +6605,24 @@ dependencies = [ "auto_impl", "either", "revm-database-interface 5.0.0", - "revm-primitives", + "revm-primitives 19.2.0", "revm-state 5.0.0", "serde", ] [[package]] -name = "revm-database" -version = "4.0.1" +name = "revm-context-interface" +version = "16.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad3fbe34f6bb00a9c3155723b3718b9cb9f17066ba38f9eb101b678cd3626775" +checksum = "fc256b27743e2912ca16899568e6652a372eb5d1d573e6edb16c7836b16cf487" dependencies = [ - "alloy-eips", - "revm-bytecode", - "revm-database-interface 4.0.1", - "revm-primitives", - "revm-state 4.0.1", + "alloy-eip2930", + "alloy-eip7702", + "auto_impl", + "either", + "revm-database-interface 10.0.0", + "revm-primitives 22.1.0", + "revm-state 10.0.0", "serde", ] @@ -7563,22 +6633,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9456d5cb165fef91c8b538d0115de50059d1cf352d160a1396894eac017a2a34" dependencies = [ "alloy-eips", - "revm-bytecode", + "revm-bytecode 4.1.0", "revm-database-interface 5.0.0", - "revm-primitives", + "revm-primitives 19.2.0", "revm-state 5.0.0", "serde", ] [[package]] -name = "revm-database-interface" -version = "4.0.1" +name = "revm-database" +version = "12.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b8acd36784a6d95d5b9e1b7be3ce014f1e759abb59df1fa08396b30f71adc2a" +checksum = "2c0a7d6da41061f2c50f99a2632571026b23684b5449ff319914151f4449b6c8" dependencies = [ - "auto_impl", - "revm-primitives", - "revm-state 4.0.1", + "alloy-eips", + "revm-bytecode 9.0.0", + "revm-database-interface 10.0.0", + "revm-primitives 22.1.0", + "revm-state 10.0.0", "serde", ] @@ -7589,27 +6661,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaeb608de31bfd0e64bf9b5b18ee70ac70094c8c045b28ae8ae8701608d17d34" dependencies = [ "auto_impl", - "revm-primitives", + "revm-primitives 19.2.0", "revm-state 5.0.0", "serde", ] [[package]] -name = "revm-handler" -version = "5.0.1" +name = "revm-database-interface" +version = "10.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "481e8c3290ff4fa1c066592fdfeb2b172edfd14d12e6cade6f6f5588cad9359a" +checksum = "bd497a38a79057b94a049552cb1f925ad15078bc1a479c132aeeebd1d2ccc768" dependencies = [ "auto_impl", - "revm-bytecode", - "revm-context 5.0.1", - "revm-context-interface 5.0.0", - "revm-database-interface 4.0.1", - "revm-interpreter 20.0.0", - "revm-precompile 21.0.0", - "revm-primitives", - "revm-state 4.0.1", + "either", + "revm-primitives 22.1.0", + "revm-state 10.0.0", "serde", + "thiserror 2.0.12", ] [[package]] @@ -7619,32 +6687,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfeaecd909e6be655c36d21032ca932b347e60ec5849ee29e670d63aa97b6adb" dependencies = [ "auto_impl", - "revm-bytecode", + "revm-bytecode 4.1.0", "revm-context 6.0.0", "revm-context-interface 6.0.0", "revm-database-interface 5.0.0", "revm-interpreter 21.0.0", "revm-precompile 22.0.0", - "revm-primitives", + "revm-primitives 19.2.0", "revm-state 5.0.0", "serde", ] [[package]] -name = "revm-inspector" -version = "5.0.1" +name = "revm-handler" +version = "17.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc1167ef8937d8867888e63581d8ece729a72073d322119ef4627d813d99ecb" +checksum = "9f1eed729ca9b228ae98688f352235871e9b8be3d568d488e4070f64c56e9d3d" dependencies = [ "auto_impl", - "revm-context 5.0.1", - "revm-database-interface 4.0.1", - "revm-handler 5.0.1", - "revm-interpreter 20.0.0", - "revm-primitives", - "revm-state 4.0.1", + "derive-where", + "revm-bytecode 9.0.0", + "revm-context 15.0.0", + "revm-context-interface 16.0.0", + "revm-database-interface 10.0.0", + "revm-interpreter 34.0.0", + "revm-precompile 32.1.0", + "revm-primitives 22.1.0", + "revm-state 10.0.0", "serde", - "serde_json", ] [[package]] @@ -7658,25 +6728,43 @@ dependencies = [ "revm-database-interface 5.0.0", "revm-handler 6.0.0", "revm-interpreter 21.0.0", - "revm-primitives", + "revm-primitives 19.2.0", "revm-state 5.0.0", "serde", "serde_json", ] +[[package]] +name = "revm-inspector" +version = "17.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf5102391706513689f91cb3cb3d97b5f13a02e8647e6e9cb7620877ef84847" +dependencies = [ + "auto_impl", + "either", + "revm-context 15.0.0", + "revm-database-interface 10.0.0", + "revm-handler 17.0.0", + "revm-interpreter 34.0.0", + "revm-primitives 22.1.0", + "revm-state 10.0.0", + "serde", + "serde_json", +] + [[package]] name = "revm-inspectors" -version = "0.23.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b50ef375dbacefecfdacf8f02afc31df98acc5d8859a6f2b24d121ff2a740a8" +checksum = "9487362b728f80dd2033ef5f4d0688453435bbe7caa721fa7e3b8fa25d89242b" dependencies = [ - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth", "alloy-rpc-types-trace", - "alloy-sol-types 1.2.1", + "alloy-sol-types 1.6.0", "anstyle", "colorchoice", - "revm 24.0.1", + "revm 36.0.0", "serde", "serde_json", "thiserror 2.0.12", @@ -7684,33 +6772,34 @@ dependencies = [ [[package]] name = "revm-interpreter" -version = "20.0.0" +version = "21.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5ee65e57375c6639b0f50555e92a4f1b2434349dd32f52e2176f5c711171697" +checksum = "c7c3ca670eee335d9268a9100932ec1e09638bdd9b31eac9e22dec4de00f2cba" dependencies = [ - "revm-bytecode", - "revm-context-interface 5.0.0", - "revm-primitives", + "revm-bytecode 4.1.0", + "revm-context-interface 6.0.0", + "revm-primitives 19.2.0", "serde", ] [[package]] name = "revm-interpreter" -version = "21.0.0" +version = "34.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c3ca670eee335d9268a9100932ec1e09638bdd9b31eac9e22dec4de00f2cba" +checksum = "cf22f80612bb8f58fd1f578750281f2afadb6c93835b14ae6a4d6b75ca26f445" dependencies = [ - "revm-bytecode", - "revm-context-interface 6.0.0", - "revm-primitives", + "revm-bytecode 9.0.0", + "revm-context-interface 16.0.0", + "revm-primitives 22.1.0", + "revm-state 10.0.0", "serde", ] [[package]] name = "revm-precompile" -version = "21.0.0" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f9311e735123d8d53a02af2aa81877bba185be7c141be7f931bb3d2f3af449c" +checksum = "4330c6982a2ef1d318cb10ce7e726a64e11e44fe1eac29d055de849a5e1e080e" dependencies = [ "ark-bls12-381", "ark-bn254", @@ -7722,38 +6811,37 @@ dependencies = [ "c-kzg", "cfg-if", "k256", + "kzg-rs", "libsecp256k1", "once_cell", "p256", - "revm-primitives", + "revm-primitives 19.2.0", "ripemd", - "secp256k1", + "secp256k1 0.30.0", "sha2 0.10.9", ] [[package]] name = "revm-precompile" -version = "22.0.0" +version = "32.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4330c6982a2ef1d318cb10ce7e726a64e11e44fe1eac29d055de849a5e1e080e" +checksum = "e2ec11f45deec71e4945e1809736bb20d454285f9167ab53c5159dae1deb603f" dependencies = [ "ark-bls12-381", "ark-bn254", "ark-ec", "ark-ff 0.5.0", "ark-serialize 0.5.0", + "arrayref", "aurora-engine-modexp", "blst", "c-kzg", "cfg-if", "k256", - "kzg-rs", - "libsecp256k1", - "once_cell", "p256", - "revm-primitives", + "revm-primitives 22.1.0", "ripemd", - "secp256k1", + "secp256k1 0.31.1", "sha2 0.10.9", ] @@ -7763,20 +6851,20 @@ version = "19.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c1588093530ec4442461163be49c433c07a3235d1ca6f6799fef338dacc50d3" dependencies = [ - "alloy-primitives 1.2.1", + "alloy-primitives 1.6.0", "num_enum", "serde", ] [[package]] -name = "revm-state" -version = "4.0.1" +name = "revm-primitives" +version = "22.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0040c61c30319254b34507383ba33d85f92949933adf6525a2cede05d165e1fa" +checksum = "4bcfb5ce6cf18b118932bcdb7da05cd9c250f2cb9f64131396b55f3fe3537c35" dependencies = [ - "bitflags 2.9.1", - "revm-bytecode", - "revm-primitives", + "alloy-primitives 1.6.0", + "num_enum", + "once_cell", "serde", ] @@ -7786,9 +6874,22 @@ version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44320ccf53067136a83cdbc54f4b7529e8f61497666f31d6f5cfd9035a1cc08f" dependencies = [ - "bitflags 2.9.1", - "revm-bytecode", - "revm-primitives", + "bitflags 2.11.1", + "revm-bytecode 4.1.0", + "revm-primitives 19.2.0", + "serde", +] + +[[package]] +name = "revm-state" +version = "10.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29404707763da607e5d6e4771cb203998c28159279c2f64cc32de08d2814651" +dependencies = [ + "alloy-eip7928", + "bitflags 2.11.1", + "revm-bytecode 9.0.0", + "revm-primitives 22.1.0", "serde", ] @@ -7840,7 +6941,7 @@ dependencies = [ "rkyv_derive", "seahash", "tinyvec", - "uuid 1.17.0", + "uuid", ] [[package]] @@ -7914,7 +7015,7 @@ dependencies = [ "proc-macro2", "quote", "rocket_http", - "syn 2.0.104", + "syn 2.0.117", "unicode-xid", "version_check", ] @@ -7963,37 +7064,17 @@ dependencies = [ "uncased", ] -[[package]] -name = "rpassword" -version = "7.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66d4c8b64f049c6721ec8ccec37ddfc3d641c4a7fca57e8f2a89de509c73df39" -dependencies = [ - "libc", - "rtoolbox", - "windows-sys 0.59.0", -] - -[[package]] -name = "rtoolbox" -version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7cc970b249fbe527d6e02e0a227762c9108b2f49d81094fe357ffc6d14d7f6f" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - [[package]] name = "ruint" -version = "1.15.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11256b5fe8c68f56ac6f39ef0720e592f33d2367a4782740d9c9142e889c7fb4" +checksum = "0298da754d1395046b0afdc2f20ee76d29a8ae310cd30ffa84ed42acba9cb12a" dependencies = [ "alloy-rlp", "arbitrary", "ark-ff 0.3.0", "ark-ff 0.4.2", + "ark-ff 0.5.0", "bytes", "fastrlp 0.3.1", "fastrlp 0.4.0", @@ -8007,7 +7088,7 @@ dependencies = [ "rand 0.9.1", "rlp", "ruint-macro", - "serde", + "serde_core", "valuable", "zeroize", ] @@ -8034,7 +7115,7 @@ version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7753b721174eb8ff87a9a0e799e2d7bc3749323e773db92e0984debb00019d6e" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.1", "fallible-iterator", "fallible-streaming-iterator", "hashlink", @@ -8074,7 +7155,7 @@ dependencies = [ "proc-macro2", "quote", "rust-embed-utils", - "syn 2.0.104", + "syn 2.0.117", "walkdir", ] @@ -8144,7 +7225,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.1", "errno", "libc", "linux-raw-sys 0.4.15", @@ -8157,7 +7238,7 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.1", "errno", "libc", "linux-raw-sys 0.9.4", @@ -8170,8 +7251,8 @@ version = "0.23.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" dependencies = [ + "aws-lc-rs", "once_cell", - "ring", "rustls-pki-types", "rustls-webpki", "subtle", @@ -8209,12 +7290,40 @@ dependencies = [ "zeroize", ] +[[package]] +name = "rustls-platform-verifier" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be59af91596cac372a6942530653ad0c3a246cdd491aaa9dcaee47f88d67d5a0" +dependencies = [ + "core-foundation 0.10.1", + "core-foundation-sys", + "jni", + "log", + "once_cell", + "rustls", + "rustls-native-certs", + "rustls-platform-verifier-android", + "rustls-webpki", + "security-framework 3.2.0", + "security-framework-sys", + "webpki-root-certs", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls-platform-verifier-android" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" + [[package]] name = "rustls-webpki" version = "0.103.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" dependencies = [ + "aws-lc-rs", "ring", "rustls-pki-types", "untrusted", @@ -8244,15 +7353,6 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" -[[package]] -name = "salsa20" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" -dependencies = [ - "cipher", -] - [[package]] name = "same-file" version = "1.0.6" @@ -8262,15 +7362,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "sanitize-filename" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc984f4f9ceb736a7bb755c3e3bd17dc56370af2600c9780dcc48c66453da34d" -dependencies = [ - "regex", -] - [[package]] name = "schannel" version = "0.1.27" @@ -8313,7 +7404,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals 0.29.1", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -8326,19 +7417,7 @@ checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" name = "scopeguard" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "scrypt" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" -dependencies = [ - "hmac", - "pbkdf2 0.11.0", - "salsa20", - "sha2 0.10.9", -] +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "seahash" @@ -8369,10 +7448,21 @@ checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" dependencies = [ "bitcoin_hashes", "rand 0.8.5", - "secp256k1-sys", + "secp256k1-sys 0.10.1", "serde", ] +[[package]] +name = "secp256k1" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c3c81b43dc2d8877c216a3fccf76677ee1ebccd429566d3e67447290d0c42b2" +dependencies = [ + "bitcoin_hashes", + "rand 0.9.1", + "secp256k1-sys 0.11.0", +] + [[package]] name = "secp256k1-sys" version = "0.10.1" @@ -8382,13 +7472,22 @@ dependencies = [ "cc", ] +[[package]] +name = "secp256k1-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb913707158fadaf0d8702c2db0e857de66eb003ccfdda5924b5f5ac98efb38" +dependencies = [ + "cc", +] + [[package]] name = "security-framework" version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.1", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -8401,7 +7500,7 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.1", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -8432,9 +7531,6 @@ name = "semver" version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" -dependencies = [ - "serde", -] [[package]] name = "semver-parser" @@ -8453,10 +7549,11 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ + "serde_core", "serde_derive", ] @@ -8517,19 +7614,28 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" dependencies = [ - "half 1.8.3", + "half", "serde", ] +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -8540,7 +7646,7 @@ checksum = "e578a843d40b4189a4d66bba51d7684f57da5bd7c304c64e14bd63efbef49509" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -8551,16 +7657,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", -] - -[[package]] -name = "serde_fmt" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d4ddca14104cd60529e8c7f7ba71a2c8acd8f7f5cfcdc2faf97eeb7c3010a4" -dependencies = [ - "serde", + "syn 2.0.117", ] [[package]] @@ -8594,7 +7691,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -8646,7 +7743,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -8679,7 +7776,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest 0.10.7", ] @@ -8691,7 +7788,7 @@ checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ "block-buffer 0.9.0", "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest 0.9.0", "opaque-debug", ] @@ -8703,25 +7800,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest 0.10.7", ] [[package]] name = "sha3" -version = "0.10.8" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +checksum = "be176f1a57ce4e3d31c1a166222d9768de5954f811601fb7ca06fc8203905ce1" dependencies = [ - "digest 0.10.7", + "digest 0.11.3", "keccak", ] [[package]] name = "sha3-asm" -version = "0.1.4" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" +checksum = "9f3f15d4e239ebe08413eed880e0f9b5af4b40ee0472543320efa91d488e96a7" dependencies = [ "cc", "cfg-if", @@ -8736,12 +7833,6 @@ dependencies = [ "lazy_static", ] -[[package]] -name = "shell-words" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" - [[package]] name = "shlex" version = "1.3.0" @@ -8828,168 +7919,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "solar-ast" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acb0d9abd88c1325e5c0f9bb153ebfb02ed40bc9639067d0ad120f5d29ee8777" -dependencies = [ - "alloy-primitives 1.2.1", - "bumpalo", - "either", - "num-bigint 0.4.6", - "num-rational", - "semver 1.0.26", - "solar-data-structures", - "solar-interface", - "solar-macros", - "strum 0.27.1", - "typed-arena", -] - -[[package]] -name = "solar-config" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "908d455bb7c04acd783bd157b63791bf010cf6a495a845e48f7aee334aad319f" -dependencies = [ - "strum 0.27.1", -] - -[[package]] -name = "solar-data-structures" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8b5a697cab81241c4623b4546c69e57182202847a75d7c0047c0dd10b923d8c" -dependencies = [ - "bumpalo", - "index_vec", - "indexmap 2.9.0", - "parking_lot", - "rayon", - "rustc-hash", - "smallvec", -] - -[[package]] -name = "solar-interface" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e49e5a714ec80d7f9c8942584e5e86add1c5e824aa175d0681e9ac7a10e5cc" -dependencies = [ - "annotate-snippets", - "anstream", - "anstyle", - "const-hex", - "derive_builder 0.20.2", - "derive_more 2.0.1", - "dunce", - "itertools 0.14.0", - "itoa", - "lasso", - "match_cfg", - "normalize-path", - "rayon", - "scoped-tls", - "solar-config", - "solar-data-structures", - "solar-macros", - "thiserror 2.0.12", - "tracing", - "unicode-width", -] - -[[package]] -name = "solar-macros" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17f8b99f28f358b41acb6efe4d7b8f326541b3c58a15dd1931d6fe581feefef" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.104", -] - -[[package]] -name = "solar-parse" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6982ef2ecfb1338c774c743ab7166ce8c3dcc92089ab77fad58eeb632b201e9" -dependencies = [ - "alloy-primitives 1.2.1", - "bitflags 2.9.1", - "bumpalo", - "itertools 0.14.0", - "memchr", - "num-bigint 0.4.6", - "num-rational", - "num-traits", - "smallvec", - "solar-ast", - "solar-data-structures", - "solar-interface", - "tracing", -] - -[[package]] -name = "solar-sema" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe8e0a3a6dfc7f4987bfb93f9b56079150407ef55c459964a1541c669554b74d" -dependencies = [ - "alloy-json-abi 1.2.1", - "alloy-primitives 1.2.1", - "bitflags 2.9.1", - "bumpalo", - "derive_more 2.0.1", - "either", - "once_map", - "paste", - "rayon", - "serde", - "serde_json", - "solar-ast", - "solar-data-structures", - "solar-interface", - "solar-macros", - "solar-parse", - "strum 0.27.1", - "thread_local", - "tracing", - "typed-arena", -] - -[[package]] -name = "soldeer-core" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a67f45108aec81281be2c23000bde114d568ac3899026779f21656bbc3d85671" -dependencies = [ - "bon", - "chrono", - "const-hex", - "derive_more 2.0.1", - "dunce", - "home", - "ignore", - "log", - "path-slash", - "rayon", - "regex", - "reqwest 0.12.20", - "sanitize-filename", - "semver 1.0.26", - "serde", - "serde_json", - "sha2 0.10.9", - "thiserror 2.0.12", - "tokio", - "toml_edit", - "uuid 1.17.0", - "zip 2.4.2", - "zip-extract", -] - [[package]] name = "sp1-lib" version = "5.0.5" @@ -9099,7 +8028,7 @@ checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" dependencies = [ "new_debug_unreachable", "parking_lot", - "phf_shared", + "phf_shared 0.11.3", "precomputed-hash", ] @@ -9156,7 +8085,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -9165,115 +8094,6 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" -[[package]] -name = "sval" -version = "2.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cc9739f56c5d0c44a5ed45473ec868af02eb896af8c05f616673a31e1d1bb09" - -[[package]] -name = "sval_buffer" -version = "2.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f39b07436a8c271b34dad5070c634d1d3d76d6776e938ee97b4a66a5e8003d0b" -dependencies = [ - "sval", - "sval_ref", -] - -[[package]] -name = "sval_dynamic" -version = "2.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffcb072d857431bf885580dacecf05ed987bac931230736739a79051dbf3499b" -dependencies = [ - "sval", -] - -[[package]] -name = "sval_fmt" -version = "2.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f214f427ad94a553e5ca5514c95c6be84667cbc5568cce957f03f3477d03d5c" -dependencies = [ - "itoa", - "ryu", - "sval", -] - -[[package]] -name = "sval_json" -version = "2.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ed34b32e638dec9a99c8ac92d0aa1220d40041026b625474c2b6a4d6f4feb" -dependencies = [ - "itoa", - "ryu", - "sval", -] - -[[package]] -name = "sval_nested" -version = "2.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14bae8fcb2f24fee2c42c1f19037707f7c9a29a0cda936d2188d48a961c4bb2a" -dependencies = [ - "sval", - "sval_buffer", - "sval_ref", -] - -[[package]] -name = "sval_ref" -version = "2.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a4eaea3821d3046dcba81d4b8489421da42961889902342691fb7eab491d79e" -dependencies = [ - "sval", -] - -[[package]] -name = "sval_serde" -version = "2.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "172dd4aa8cb3b45c8ac8f3b4111d644cd26938b0643ede8f93070812b87fb339" -dependencies = [ - "serde", - "sval", - "sval_nested", -] - -[[package]] -name = "svm-rs" -version = "0.5.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "909e8ff825120cd2b34ceb236ab72e2a7f74b1d3a86c247936c8ff7a80c5d408" -dependencies = [ - "const-hex", - "dirs", - "reqwest 0.12.20", - "semver 1.0.26", - "serde", - "serde_json", - "sha2 0.10.9", - "tempfile", - "thiserror 2.0.12", - "url", - "zip 4.2.0", -] - -[[package]] -name = "svm-rs-builds" -version = "0.5.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ebe77b200f965e8dbec3ef1d8337e974179ca1ecaa9fc28f67288d6b438159" -dependencies = [ - "const-hex", - "semver 1.0.26", - "serde_json", - "svm-rs", -] - [[package]] name = "syn" version = "1.0.109" @@ -9287,9 +8107,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.104" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", @@ -9305,19 +8125,19 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] name = "syn-solidity" -version = "1.2.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ac494e7266fcdd2ad80bf4375d55d27a117ea5c866c26d0e97fe5b3caeeb75" +checksum = "ec005042c7d952febc1a3ef5b0f6674e9054aa836877a31c90b20e25b3d31744" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -9343,7 +8163,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -9363,7 +8183,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.1", "core-foundation 0.9.4", "system-configuration-sys 0.6.0", ] @@ -9418,16 +8238,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "terminal_size" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45c6481c4829e4cc63825e62c49186a34538b7b2750b73b266581ffb612fb5ed" -dependencies = [ - "rustix 1.0.7", - "windows-sys 0.59.0", -] - [[package]] name = "thiserror" version = "1.0.69" @@ -9454,7 +8264,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -9465,7 +8275,7 @@ checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -9494,9 +8304,7 @@ checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" dependencies = [ "deranged", "itoa", - "libc", "num-conv", - "num_threads", "powerfmt", "serde", "time-core", @@ -9579,7 +8387,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -9616,9 +8424,9 @@ dependencies = [ [[package]] name = "tokio-tungstenite" -version = "0.26.2" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" +checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" dependencies = [ "futures-util", "log", @@ -9649,7 +8457,6 @@ version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ - "indexmap 2.9.0", "serde", "serde_spanned", "toml_datetime", @@ -9702,20 +8509,20 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.6" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.1", "bytes", "futures-util", "http 1.3.1", "http-body 1.0.1", - "iri-string", "pin-project-lite", "tower", "tower-layer", "tower-service", + "url", ] [[package]] @@ -9749,7 +8556,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -9762,18 +8569,6 @@ dependencies = [ "valuable", ] -[[package]] -name = "tracing-futures" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" -dependencies = [ - "futures", - "futures-task", - "pin-project", - "tracing", -] - [[package]] name = "tracing-log" version = "0.2.0" @@ -9805,25 +8600,11 @@ dependencies = [ "once_cell", "regex", "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", -] - -[[package]] -name = "trezor-client" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10636211ab89c96ed2824adc5ec0d081e1080aeacc24c37abb318dcb31dcc779" -dependencies = [ - "byteorder", - "hex", - "protobuf", - "rusb", - "thiserror 1.0.69", + "smallvec", + "thread_local", "tracing", + "tracing-core", + "tracing-log", ] [[package]] @@ -9853,14 +8634,14 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals 0.28.0", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] name = "tungstenite" -version = "0.26.2" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13" +checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" dependencies = [ "bytes", "data-encoding", @@ -9875,23 +8656,11 @@ dependencies = [ "utf-8", ] -[[package]] -name = "typed-arena" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" - -[[package]] -name = "typeid" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" - [[package]] name = "typenum" -version = "1.18.0" +version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" +checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de" [[package]] name = "ubyte" @@ -10054,7 +8823,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -10072,17 +8841,7 @@ dependencies = [ "serde_json", "url", "utoipa", - "zip 3.0.0", -] - -[[package]] -name = "uuid" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" -dependencies = [ - "getrandom 0.2.16", - "serde", + "zip", ] [[package]] @@ -10091,9 +8850,7 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d" dependencies = [ - "getrandom 0.3.3", "js-sys", - "serde", "wasm-bindgen", ] @@ -10150,36 +8907,6 @@ name = "value-bag" version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" -dependencies = [ - "value-bag-serde1", - "value-bag-sval2", -] - -[[package]] -name = "value-bag-serde1" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35540706617d373b118d550d41f5dfe0b78a0c195dc13c6815e92e2638432306" -dependencies = [ - "erased-serde", - "serde", - "serde_fmt", -] - -[[package]] -name = "value-bag-sval2" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe7e140a2658cc16f7ee7a86e413e803fc8f9b5127adc8755c19f9fefa63a52" -dependencies = [ - "sval", - "sval_buffer", - "sval_dynamic", - "sval_fmt", - "sval_json", - "sval_ref", - "sval_serde", -] [[package]] name = "vcpkg" @@ -10187,18 +8914,6 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" -[[package]] -name = "vergen" -version = "8.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2990d9ea5967266ea0ccf413a4aa5c42a93dbcfda9cb49a97de6931726b12566" -dependencies = [ - "anyhow", - "cfg-if", - "rustversion", - "time", -] - [[package]] name = "version_check" version = "0.9.5" @@ -10255,49 +8970,51 @@ dependencies = [ ] [[package]] -name = "wasm-bindgen" -version = "0.2.100" +name = "wasip2" +version = "1.0.3+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", + "wit-bindgen 0.57.1", ] [[package]] -name = "wasm-bindgen-backend" -version = "0.2.100" +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn 2.0.104", + "wit-bindgen 0.51.0", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.122" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed04576f974d2b2fba0f38c51dbc5518011e38c36bf1143164be765528fd409" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.50" +version = "0.4.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +checksum = "9473dbd2991ae90b6291c3c32c30c6187ac49aa32f9905d1cce280ec1e110b0f" dependencies = [ - "cfg-if", "js-sys", - "once_cell", "wasm-bindgen", - "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "916151b09da36bd82f6615cbf3a419e2f0ba23a03c6160e8e92eb6bd4aa1dec6" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -10305,34 +9022,36 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "299047362ccbfce148b67ab7e73349f77748e00c8296f9542adfad2ad82c5c5e" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.104", - "wasm-bindgen-backend", + "syn 2.0.117", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "9a929b2c61f11ba3e9bc35b50c1f25cb38e0e892c0c231ae2b8cf78d5dad4437" dependencies = [ "unicode-ident", ] [[package]] name = "wasm-bindgen-test" -version = "0.3.50" +version = "0.3.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66c8d5e33ca3b6d9fa3b4676d774c5778031d27a578c2b007f905acf816152c3" +checksum = "d381749acb0943d357dcbd8f0b100640679883fcdeeef04def49daf8d33a5426" dependencies = [ + "console_error_panic_hook", "js-sys", "minicov", + "scoped-tls", "wasm-bindgen", "wasm-bindgen-futures", "wasm-bindgen-test-macro", @@ -10340,20 +9059,20 @@ dependencies = [ [[package]] name = "wasm-bindgen-test-macro" -version = "0.3.50" +version = "0.3.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17d5042cc5fa009658f9a7333ef24291b1291a25b6382dd68862a7f3b969f69b" +checksum = "c97b2ef2c8d627381e51c071c2ab328eac606d3f69dd82bcbca20a9e389d95f0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] name = "wasm-bindgen-utils" -version = "0.0.10" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed82a9f56693dd939d2f37431e0dd5401e6447694f9930353fd5c3fb3d9d152e" +checksum = "6ec45201ec48a021de21357beca43a1c93669e68eeae5deca5e3ba6b4b4fd4d6" dependencies = [ "js-sys", "paste", @@ -10362,56 +9081,52 @@ dependencies = [ "tsify", "wasm-bindgen", "wasm-bindgen-futures", - "wasm-bindgen-utils-macros 0.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-utils-macros", ] [[package]] -name = "wasm-bindgen-utils" -version = "0.0.10" -source = "git+https://github.com/rainlanguage/rain.wasm?rev=06990d85a0b7c55378a1c8cca4dd9e2bc34a596a#06990d85a0b7c55378a1c8cca4dd9e2bc34a596a" +name = "wasm-bindgen-utils-macros" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5bf3e098464ba4e518a659f81794d58c043b8d144f8c29c11fbb488d75264f4" dependencies = [ - "js-sys", - "paste", - "serde", - "serde-wasm-bindgen 0.6.5", - "tsify", - "wasm-bindgen", - "wasm-bindgen-futures", - "wasm-bindgen-utils-macros 0.0.5 (git+https://github.com/rainlanguage/rain.wasm?rev=06990d85a0b7c55378a1c8cca4dd9e2bc34a596a)", + "proc-macro2", + "quote", + "syn 2.0.117", ] [[package]] -name = "wasm-bindgen-utils-macros" -version = "0.0.5" +name = "wasm-encoder" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cc4956f28c8dba2ad5b3afb5ed7d584f7e9e7194e516eae0577d79d594de6e6" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.104", + "leb128fmt", + "wasmparser", ] [[package]] -name = "wasm-bindgen-utils-macros" -version = "0.0.5" -source = "git+https://github.com/rainlanguage/rain.wasm?rev=06990d85a0b7c55378a1c8cca4dd9e2bc34a596a#06990d85a0b7c55378a1c8cca4dd9e2bc34a596a" +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.104", + "anyhow", + "indexmap 2.9.0", + "wasm-encoder", + "wasmparser", ] [[package]] -name = "wasm-streams" -version = "0.4.2" +name = "wasmparser" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" dependencies = [ - "futures-util", - "js-sys", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", + "bitflags 2.11.1", + "hashbrown 0.15.4", + "indexmap 2.9.0", + "semver 1.0.26", ] [[package]] @@ -10430,9 +9145,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.77" +version = "0.3.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +checksum = "6d621441cfc37b84979402712047321980c178f299193a3589d05b99e8763436" dependencies = [ "js-sys", "wasm-bindgen", @@ -10448,6 +9163,15 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "webpki-root-certs" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31141ce3fc3e300ae89b78c0dd67f9708061d1d2eda54b8209346fd6be9a92c" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "webpki-roots" version = "0.26.11" @@ -10533,7 +9257,7 @@ checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -10544,7 +9268,7 @@ checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -10582,6 +9306,15 @@ dependencies = [ "windows-link", ] +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + [[package]] name = "windows-sys" version = "0.48.0" @@ -10618,6 +9351,21 @@ dependencies = [ "windows-targets 0.53.2", ] +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -10665,6 +9413,12 @@ dependencies = [ "windows_x86_64_msvc 0.53.0", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -10683,6 +9437,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -10701,6 +9461,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -10731,6 +9497,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -10749,6 +9521,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -10767,6 +9545,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -10785,6 +9569,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -10821,6 +9611,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "winnow" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" +dependencies = [ + "memchr", +] + [[package]] name = "winreg" version = "0.50.0" @@ -10831,13 +9630,107 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen" +version = "0.57.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck 0.5.0", + "wit-parser", +] + [[package]] name = "wit-bindgen-rt" version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.1", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck 0.5.0", + "indexmap 2.9.0", + "prettyplease", + "syn 2.0.117", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.117", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags 2.11.1", + "indexmap 2.9.0", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap 2.9.0", + "log", + "semver 1.0.26", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", ] [[package]] @@ -10874,12 +9767,6 @@ dependencies = [ "tap", ] -[[package]] -name = "xxhash-rust" -version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" - [[package]] name = "yansi" version = "1.0.1" @@ -10909,7 +9796,7 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", "synstructure", ] @@ -10930,7 +9817,7 @@ checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -10950,7 +9837,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", "synstructure", ] @@ -10971,7 +9858,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.117", ] [[package]] @@ -11004,24 +9891,7 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", -] - -[[package]] -name = "zip" -version = "2.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" -dependencies = [ - "arbitrary", - "crc32fast", - "crossbeam-utils", - "displaydoc", - "flate2", - "indexmap 2.9.0", - "memchr", - "thiserror 2.0.12", - "zopfli", + "syn 2.0.117", ] [[package]] @@ -11038,32 +9908,6 @@ dependencies = [ "zopfli", ] -[[package]] -name = "zip" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ab361742de920c5535880f89bbd611ee62002bf11341d16a5f057bb8ba6899" -dependencies = [ - "arbitrary", - "bzip2", - "crc32fast", - "flate2", - "indexmap 2.9.0", - "memchr", - "zopfli", -] - -[[package]] -name = "zip-extract" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d94e397dd6d0273e6747e46e7aa0289bfd9736ba8772f2fe948bc4adc3f73" -dependencies = [ - "log", - "thiserror 2.0.12", - "zip 4.2.0", -] - [[package]] name = "zlib-rs" version = "0.5.1" diff --git a/Cargo.toml b/Cargo.toml index e687a87858..ee22248da1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,13 +35,13 @@ thiserror = "1.0.56" strict-yaml-rust = "0.1.2" dotrain = "6.0.1-alpha.24" dotrain-lsp = "6.0.1-alpha.24" -rain-metadata = { path = "lib/rain.interpreter/lib/rain.metadata/crates/cli" } -rain-metadata-bindings = { path = "lib/rain.interpreter/lib/rain.metadata/crates/bindings" } -rain-metaboard-subgraph = { path = "lib/rain.interpreter/lib/rain.metadata/crates/metaboard" } -rain_interpreter_bindings = { package = "rainlang_bindings", path = "lib/rain.interpreter/crates/bindings" } -rain_interpreter_dispair = { package = "rainlang_dispair", path = "lib/rain.interpreter/crates/dispair" } -rain_interpreter_parser = { package = "rainlang_parser", path = "lib/rain.interpreter/crates/parser" } -rain-interpreter-eval = { package = "rainlang-eval", path = "lib/rain.interpreter/crates/eval" } +rain-metadata = "0.1.1" +rain-metadata-bindings = "0.1.5" +rain-metaboard-subgraph = "0.1.3" +rain_interpreter_bindings = { package = "rainlang_bindings", version = "0.1.15" } +rain_interpreter_dispair = { package = "rainlang_dispair", version = "0.1.10" } +rain_interpreter_parser = { package = "rainlang_parser", version = "0.1.3" } +rain-interpreter-eval = { package = "rainlang-eval", version = "0.1.2" } csv = "1.3.0" insta = { version = "1.34.0" } proptest = "1.4.0" @@ -49,10 +49,14 @@ derive_builder = "0.20.0" thirtyfour = "0.31.0" test-context = "0.3.0" portpicker = "0.1.1" -rain-erc = { git = "https://github.com/rainlanguage/rain.erc", rev = "1014cbd72fab790b4ab1f5aab3e6780f13cd8efb" } -rain-math-float = { path = "lib/rain.interpreter/lib/rain.interpreter.interface/lib/rain.math.float/crates/float" } -rain-error-decoding = { git = "https://github.com/rainlanguage/rain.error", rev = "3d2ed70fb2f7c6156706846e10f163d1e493a8d3" } -wasm-bindgen-utils = { git = "https://github.com/rainlanguage/rain.wasm", rev = "06990d85a0b7c55378a1c8cca4dd9e2bc34a596a" } +rain-erc = "0.1.1" +rain-math-float = "0.1.5" +rain-error-decoding = "0.1.2" +# Direct dep required: the #[wasm_bindgen] macro emits `::wasm_bindgen` paths, and +# without a direct dep the 0.2.122 macro recurses without bound on opaque-class +# structs. Crates with bare #[wasm_bindgen] structs (common, js_api) depend on this. +wasm-bindgen = "0.2.122" +wasm-bindgen-utils = "0.1.2" tempfile = "3.20.0" eyre = "0.6.12" tower = "0.5.2" diff --git a/crates/common/Cargo.toml b/crates/common/Cargo.toml index f2d88b161f..a71f99a0e9 100644 --- a/crates/common/Cargo.toml +++ b/crates/common/Cargo.toml @@ -44,6 +44,7 @@ chrono = { workspace = true } futures = { workspace = true } rain-error-decoding = { workspace = true } rain-interpreter-eval = { workspace = true } +wasm-bindgen = { workspace = true } wasm-bindgen-utils = { workspace = true } eyre.workspace = true rain-math-float.workspace = true diff --git a/crates/common/build.rs b/crates/common/build.rs new file mode 100644 index 0000000000..47eff04083 --- /dev/null +++ b/crates/common/build.rs @@ -0,0 +1,23 @@ +use std::process::Command; + +// `lib.rs` embeds the build's git commit as `GH_COMMIT_SHA` via +// `env!("COMMIT_SHA")`. CI sets `COMMIT_SHA` in the environment (github.sha); in +// that case `env!` reads it directly and this script is a no-op. For local +// builds the var is usually unset, so derive it from `git rev-parse HEAD` here +// rather than hard-failing the compile (or relying on a hand-written .env that +// goes stale). Falls back to "unknown" if git isn't available. +fn main() { + println!("cargo:rerun-if-env-changed=COMMIT_SHA"); + + if std::env::var_os("COMMIT_SHA").is_none() { + let sha = Command::new("git") + .args(["rev-parse", "HEAD"]) + .output() + .ok() + .filter(|out| out.status.success()) + .map(|out| String::from_utf8_lossy(&out.stdout).trim().to_string()) + .filter(|sha| !sha.is_empty()) + .unwrap_or_else(|| "unknown".to_string()); + println!("cargo:rustc-env=COMMIT_SHA={sha}"); + } +} diff --git a/crates/common/src/add_order.rs b/crates/common/src/add_order.rs index 373a1bb642..e73069fb79 100644 --- a/crates/common/src/add_order.rs +++ b/crates/common/src/add_order.rs @@ -62,6 +62,9 @@ pub enum AddOrderArgsError { #[cfg(not(target_family = "wasm"))] #[error(transparent)] ForkCallError(Box), + #[cfg(not(target_family = "wasm"))] + #[error(transparent)] + WriteTransactionError(#[from] crate::write_tx::WriteTransactionError), #[error("Input token not found for index: {0}")] InputTokenNotFound(String), #[error("Output token not found for index: {0}")] diff --git a/crates/common/src/deposit.rs b/crates/common/src/deposit.rs index 1c620490e4..9995e19459 100644 --- a/crates/common/src/deposit.rs +++ b/crates/common/src/deposit.rs @@ -22,6 +22,10 @@ pub enum DepositError { #[error(transparent)] FloatError(#[from] FloatError), + + #[cfg(not(target_family = "wasm"))] + #[error(transparent)] + WriteTransactionError(#[from] crate::write_tx::WriteTransactionError), } #[derive(Clone, Serialize, Deserialize)] diff --git a/crates/common/src/fuzz/impls.rs b/crates/common/src/fuzz/impls.rs index 514872d38d..b83c42ce74 100644 --- a/crates/common/src/fuzz/impls.rs +++ b/crates/common/src/fuzz/impls.rs @@ -20,7 +20,10 @@ use rain_interpreter_bindings::{ use rain_interpreter_eval::eval::ForkParseArgs; use rain_interpreter_eval::fork::{Forker, NewForkedEvm}; pub use rain_interpreter_eval::trace::{RainEvalResult, RainEvalResults, TraceSearchError}; -use rain_interpreter_eval::{error::ForkCallError, eval::ForkEvalArgs}; +use rain_interpreter_eval::{ + error::ForkCallError, + eval::{ForkEvalArgs, ForkEvalExt}, +}; use raindex_app_settings::blocks::BlockError; use raindex_app_settings::scenario::ScenarioCfg; use raindex_app_settings::yaml::dotrain::DotrainYamlValidation; diff --git a/crates/common/src/raindex_client/orders.rs b/crates/common/src/raindex_client/orders.rs index 09302846cd..c82001a29d 100644 --- a/crates/common/src/raindex_client/orders.rs +++ b/crates/common/src/raindex_client/orders.rs @@ -30,7 +30,7 @@ use csv::{ReaderBuilder, Terminator}; use futures::{stream, StreamExt, TryStreamExt}; use rain_math_float::Float; use rain_metaboard_subgraph::metaboard_client::MetaboardSubgraphClient; -use rain_metaboard_subgraph::types::metas::BigInt as MetaBigInt; +use rain_metaboard_subgraph::types::metas::Bytes as MetaBytes; use rain_metadata::types::dotrain::source_v1::DotrainSourceV1; use rain_metadata::{KnownMagic, RainMetaDocumentV1Item}; use raindex_subgraph_client::{ @@ -1466,7 +1466,7 @@ impl RaindexOrder { let subject_hash = order_builder_state.dotrain_hash(); let metabytes = match client - .get_metabytes_by_subject(&MetaBigInt(alloy::hex::encode_prefixed(subject_hash))) + .get_metabytes_by_subject(&MetaBytes(alloy::hex::encode_prefixed(subject_hash))) .await { Ok(bytes) => bytes, diff --git a/crates/common/src/raindex_order_builder/order_operations.rs b/crates/common/src/raindex_order_builder/order_operations.rs index 0cb199c126..dd5ba8b7c8 100644 --- a/crates/common/src/raindex_order_builder/order_operations.rs +++ b/crates/common/src/raindex_order_builder/order_operations.rs @@ -8,7 +8,7 @@ use rain_math_float::Float; use rain_metaboard_subgraph::metaboard_client::{ MetaboardSubgraphClient, MetaboardSubgraphClientError, }; -use rain_metaboard_subgraph::types::metas::BigInt as MetaBigInt; +use rain_metaboard_subgraph::types::metas::Bytes as MetaBytes; use rain_metadata::RainMetaDocumentV1Item; use raindex_app_settings::{ order::{OrderIOCfg, VaultType}, @@ -598,7 +598,7 @@ impl RaindexOrderBuilder { let client = self.get_metaboard_client()?; match client - .get_metabytes_by_subject(&MetaBigInt(format!("0x{}", alloy::hex::encode(subject)))) + .get_metabytes_by_subject(&MetaBytes(format!("0x{}", alloy::hex::encode(subject)))) .await { Ok(metas) => Ok(metas.is_empty()), diff --git a/crates/common/src/rainlang.rs b/crates/common/src/rainlang.rs index 2a490b93aa..b73acad43b 100644 --- a/crates/common/src/rainlang.rs +++ b/crates/common/src/rainlang.rs @@ -168,7 +168,7 @@ mod fork_parse { use once_cell::sync::OnceCell; use rain_error_decoding::AbiDecodedErrorType; use rain_interpreter_eval::error::ForkCallError; - use rain_interpreter_eval::eval::ForkParseArgs; + use rain_interpreter_eval::eval::{ForkEvalExt, ForkParseArgs}; use rain_interpreter_eval::fork::Forker; use rain_interpreter_eval::fork::NewForkedEvm; use std::sync::Arc; diff --git a/crates/common/src/transaction.rs b/crates/common/src/transaction.rs index cf60b1812f..c06cd13381 100644 --- a/crates/common/src/transaction.rs +++ b/crates/common/src/transaction.rs @@ -166,6 +166,6 @@ pub async fn read_call( let tx = TransactionRequest::default() .to(contract) .input(call.abi_encode().into()); - let bytes = provider.call(tx).await?; + let bytes = provider.call(tx.into()).await?; C::abi_decode_returns(&bytes).map_err(|e| TransactionArgsError::AbiDecode(e.to_string())) } diff --git a/crates/common/src/unit_tests.rs b/crates/common/src/unit_tests.rs index da369e8587..8ea9d33a48 100644 --- a/crates/common/src/unit_tests.rs +++ b/crates/common/src/unit_tests.rs @@ -9,7 +9,7 @@ use proptest::{ use rain_interpreter_bindings::IInterpreterStoreV3::FullyQualifiedNamespace; use rain_interpreter_eval::{ error::ForkCallError, - eval::ForkEvalArgs, + eval::{ForkEvalArgs, ForkEvalExt}, fork::{Forker, NewForkedEvm}, trace::{RainEvalResultFromRawCallResultError, RainEvalResults}, }; diff --git a/crates/common/src/write_tx.rs b/crates/common/src/write_tx.rs index 07abad6092..e523c0dfa1 100644 --- a/crates/common/src/write_tx.rs +++ b/crates/common/src/write_tx.rs @@ -38,7 +38,7 @@ pub async fn execute_write_tx< ))); let pending_tx = provider - .send_transaction(tx_request) + .send_transaction(tx_request.into()) .await .map_err(|e| WriteTransactionError::Send(e.to_string()))? .with_required_confirmations(u64::from(confirmations)); diff --git a/crates/js_api/Cargo.toml b/crates/js_api/Cargo.toml index 275223c4dd..adeba22d61 100644 --- a/crates/js_api/Cargo.toml +++ b/crates/js_api/Cargo.toml @@ -21,6 +21,7 @@ raindex_app_settings = { workspace = true } raindex_subgraph_client = { workspace = true } raindex_bindings = { workspace = true } raindex_quote = { workspace = true } +wasm-bindgen = { workspace = true } wasm-bindgen-utils = { workspace = true } tokio = { workspace = true, features = [ "sync", @@ -41,6 +42,13 @@ getrandom = { workspace = true } rain-metadata = { workspace = true } rain-metaboard-subgraph = { workspace = true } +[target.wasm32-unknown-unknown.dependencies] +# Enables getrandom 0.4's wasm_js backend feature (pulled transitively by +# alloy-primitives); the .cargo/config getrandom_backend cfg only covers 0.2/0.3. +getrandom_v04 = { package = "getrandom", version = "0.4", features = [ + "wasm_js", +] } + [dev-dependencies] wasm-bindgen-test = "0.3" serde_json = { workspace = true } diff --git a/crates/quote/src/error.rs b/crates/quote/src/error.rs index ced1a3e432..c4dcfe4a2f 100644 --- a/crates/quote/src/error.rs +++ b/crates/quote/src/error.rs @@ -29,8 +29,6 @@ pub enum FailedQuote { #[derive(Debug, Error)] pub enum Error { - #[error(transparent)] - TransactionArgsError(#[from] raindex_common::transaction::TransactionArgsError), #[error(transparent)] UrlParseError(#[from] ParseError), #[error(transparent)] diff --git a/crates/quote/src/order_quotes.rs b/crates/quote/src/order_quotes.rs index eccaaf7aa9..358a91cb57 100644 --- a/crates/quote/src/order_quotes.rs +++ b/crates/quote/src/order_quotes.rs @@ -10,7 +10,6 @@ use alloy::primitives::{Address, U256}; use alloy::providers::Provider; use raindex_bindings::provider::mk_read_provider; use raindex_bindings::IRaindexV6::{OrderV4, QuoteV2, SignedContextV1}; -use raindex_common::transaction::TransactionArgsError; use raindex_subgraph_client::types::common::SgOrder; use serde::{Deserialize, Serialize}; use std::str::FromStr; @@ -76,12 +75,12 @@ pub async fn get_order_quotes( .iter() .map(|rpc| rpc.parse()) .collect::, _>>() - .map_err(TransactionArgsError::Url)?; - let provider = mk_read_provider(&urls).map_err(TransactionArgsError::ReadProvider)?; + .map_err(Error::UrlParseError)?; + let provider = mk_read_provider(&urls).map_err(Error::ReadProviderError)?; provider .get_block_number() .await - .map_err(TransactionArgsError::Transport)? + .map_err(|e| Error::TransportError(e.to_string()))? } }; @@ -629,9 +628,6 @@ amount price: 2 3; .await .unwrap_err(); - assert!(matches!( - err, - Error::TransactionArgsError(TransactionArgsError::Url(_)) - )); + assert!(matches!(err, Error::UrlParseError(_))); } } diff --git a/crates/test_fixtures/Cargo.toml b/crates/test_fixtures/Cargo.toml index ff4c432e37..cfe0b4d063 100644 --- a/crates/test_fixtures/Cargo.toml +++ b/crates/test_fixtures/Cargo.toml @@ -10,16 +10,18 @@ publish = false [dependencies] serde_json = { workspace = true } -rain_interpreter_test_fixtures = { package = "rainlang_test_fixtures", path = "../../lib/rain.interpreter/crates/test_fixtures" } +# Not published (publish = false), so it stays a git dep like rain-interpreter-eval, +# pinned to the same rainlang rev family as the published bindings/dispair/parser. +rain_interpreter_test_fixtures = { package = "rainlang_test_fixtures", git = "https://github.com/rainlanguage/rainlang", rev = "580205d244a94097b06602ecda36faedf54d7775" } rain-math-float.workspace = true alloy = { workspace = true, features = [ - "node-bindings", - "sol-types", - "rpc-types", - "provider-http", - "network", - "contract", - "signer-local", + "node-bindings", + "sol-types", + "rpc-types", + "provider-http", + "network", + "contract", + "signer-local", ] } [target.'cfg(target_family = "wasm")'.dependencies] diff --git a/crates/test_fixtures/src/lib.rs b/crates/test_fixtures/src/lib.rs index d16030cb62..10e41501a7 100644 --- a/crates/test_fixtures/src/lib.rs +++ b/crates/test_fixtures/src/lib.rs @@ -33,12 +33,12 @@ sol!( sol!( #![sol(all_derives = true, rpc = true)] - "../../lib/rain.interpreter/lib/rain.interpreter.interface/lib/forge-std/src/interfaces//IMulticall3.sol" + "../../dependencies/forge-std-1.16.1/src/interfaces/IMulticall3.sol" ); sol!( #![sol(all_derives = true, rpc = true)] - TOFUTokenDecimals, "../../lib/rain.interpreter/lib/rain.tofu.erc20-decimals/out/TOFUTokenDecimals.sol/TOFUTokenDecimals.json" + TOFUTokenDecimals, "../../out/TOFUTokenDecimals.sol/TOFUTokenDecimals.json" ); /// A local evm instance that wraps an Anvil instance and provider with diff --git a/flake.lock b/flake.lock index 632f0b9982..4a45635256 100644 --- a/flake.lock +++ b/flake.lock @@ -442,11 +442,11 @@ "solc": "solc_2" }, "locked": { - "lastModified": 1779209879, - "narHash": "sha256-9x9V41PmF1RQlM5R6SV6xbgVnP+qgW9mUyRC50RQ9G8=", + "lastModified": 1779906039, + "narHash": "sha256-NKMWv+iiirFgjOLPPlKsUA7chNzRrZd+6LFMei2M8HQ=", "owner": "rainlanguage", "repo": "rainix", - "rev": "d444279bc7346a6f4f7bd4a0b7f9900523b8f00e", + "rev": "660d0efe84a3ed1c8a7ef5b8493db53e4a12fe04", "type": "github" }, "original": { diff --git a/foundry.toml b/foundry.toml index 7c99dc4aa5..b622d6ad28 100644 --- a/foundry.toml +++ b/foundry.toml @@ -1,9 +1,8 @@ [profile.default] src = 'src' out = 'out' -# 'dependencies' for soldeer-managed packages, 'lib' kept for the -# remaining git submodule (sushixswap-v2, which isn't on soldeer). -libs = ['dependencies', 'lib'] +# All Solidity dependencies are Soldeer-managed; no git submodules remain. +libs = ['dependencies'] # See more config options https://github.com/foundry-rs/foundry/tree/master/config @@ -39,8 +38,6 @@ fs_permissions = [ remappings = [ # Custom remap so @openzeppelin packages' own internal imports resolve. "@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.6.1/", - # Submodule for sushixswap-v2 (not on Soldeer). - "sushixswap-v2/=lib/sushixswap-v2/", ] [dependencies] diff --git a/src/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.sol b/src/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.sol index 320c2fde1a..469d1cec3c 100644 --- a/src/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.sol +++ b/src/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {IRouteProcessor} from "sushixswap-v2/src/interfaces/IRouteProcessor.sol"; +import {IRouteProcessor} from "../../interface/IRouteProcessor.sol"; import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import {SafeERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol"; diff --git a/src/interface/IRouteProcessor.sol b/src/interface/IRouteProcessor.sol new file mode 100644 index 0000000000..96adc6056e --- /dev/null +++ b/src/interface/IRouteProcessor.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd +pragma solidity ^0.8.0; + +/// @title IRouteProcessor +/// @notice Minimal ABI surface for Sushi's RouteProcessor, vendored here so +/// raindex does not depend on the `sushixswap-v2` git submodule. The signatures +/// match Sushi's `IRouteProcessor` so the deterministic RouteProcessor4 +/// deployment can be called for ABI compatibility. +interface IRouteProcessor { + struct RouteProcessorData { + address tokenIn; + uint256 amountIn; + address tokenOut; + uint256 amountOutMin; + address to; + bytes route; + } + + /// @notice Process a swap with passed route on RouteProcessor + /// @param tokenIn The address of the token to swap from + /// @param amountIn The amount of token to swap from + /// @param tokenOut The address of the token to swap to + /// @param amountOutMin The minimum amount of token to receive + /// @param to The address to send the swapped token to + /// @param route The route to use for the swap + function processRoute( + address tokenIn, + uint256 amountIn, + address tokenOut, + uint256 amountOutMin, + address to, + bytes memory route + ) external payable returns (uint256 amountOut); +} diff --git a/test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.lossyRounding.t.sol b/test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.lossyRounding.t.sol index 17c55ff74f..1cc23d12a8 100644 --- a/test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.lossyRounding.t.sol +++ b/test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.lossyRounding.t.sol @@ -3,7 +3,7 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {IRouteProcessor} from "sushixswap-v2/src/interfaces/IRouteProcessor.sol"; +import {IRouteProcessor} from "src/interface/IRouteProcessor.sol"; import {RouteProcessorRaindexV6ArbOrderTaker} from "../../../src/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.sol"; import {Float} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; diff --git a/test/util/concrete/MockRouteProcessor.sol b/test/util/concrete/MockRouteProcessor.sol index 625ed18cbf..19ea7af8d3 100644 --- a/test/util/concrete/MockRouteProcessor.sol +++ b/test/util/concrete/MockRouteProcessor.sol @@ -4,7 +4,7 @@ pragma solidity =0.8.25; import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import {SafeERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol"; -import {IRouteProcessor} from "sushixswap-v2/src/interfaces/IRouteProcessor.sol"; +import {IRouteProcessor} from "src/interface/IRouteProcessor.sol"; /// @dev Mock route processor that pulls inputToken from sender and sends /// outputToken to the recipient. The route bytes are ignored. diff --git a/test/util/concrete/Refundoor.sol b/test/util/concrete/Refundoor.sol index 66a7a195ef..e804200743 100644 --- a/test/util/concrete/Refundoor.sol +++ b/test/util/concrete/Refundoor.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import "openzeppelin-contracts/contracts/utils/Address.sol"; +import {Address} from "@openzeppelin-contracts-5.6.1/utils/Address.sol"; contract Refundoor { fallback() external { diff --git a/test/util/concrete/TOFUTokenDecimalsArtifact.sol b/test/util/concrete/TOFUTokenDecimalsArtifact.sol new file mode 100644 index 0000000000..3a3c14896c --- /dev/null +++ b/test/util/concrete/TOFUTokenDecimalsArtifact.sol @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd +pragma solidity =0.8.25; + +import {TOFUTokenDecimals} from "rain-tofu-erc20-decimals-0.1.1/src/concrete/TOFUTokenDecimals.sol"; + +/// @dev Forces the concrete `TOFUTokenDecimals` from the rain-tofu-erc20-decimals +/// Soldeer dependency into raindex's compilation set so `forge build` emits +/// out/TOFUTokenDecimals.sol/TOFUTokenDecimals.json. The Rust test fixtures load +/// that artifact's deployed bytecode to mock the token on a local EVM. Referencing +/// the creation code keeps the import used and gives this file its own artifact. +library TOFUTokenDecimalsArtifact { + function creationCode() internal pure returns (bytes memory) { + return type(TOFUTokenDecimals).creationCode; + } +} From 87cba954c24dc219b46fcda9f886ff50a0add032 Mon Sep 17 00:00:00 2001 From: David Meister Date: Thu, 28 May 2026 15:04:42 +0000 Subject: [PATCH 10/27] Bump rainlang-eval 0.1.2 and rain-math-float 0.1.6 eval 0.1.2 pulls wasm-bindgen-utils 0.1.2 (fixes the wasm build); rain-math-float 0.1.6 moves onto revm 36, so the whole graph shares a single revm instead of linking revm 25 and 36 together. Co-Authored-By: Claude Opus 4.7 --- Cargo.lock | 711 ++++++----------------------------------------------- Cargo.toml | 2 +- 2 files changed, 78 insertions(+), 635 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f4bcf2bd43..3f64c7d93a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,17 +2,6 @@ # It is not intended for manual editing. version = 4 -[[package]] -name = "addchain" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2e69442aa5628ea6951fa33e24efe8313f4321a91bd729fc2f75bdfc858570" -dependencies = [ - "num-bigint 0.3.3", - "num-integer", - "num-traits", -] - [[package]] name = "addr2line" version = "0.24.2" @@ -286,7 +275,7 @@ dependencies = [ "either", "serde", "serde_with", - "sha2 0.10.9", + "sha2", ] [[package]] @@ -1135,7 +1124,7 @@ dependencies = [ "fnv", "hashbrown 0.15.4", "itertools 0.13.0", - "num-bigint 0.4.6", + "num-bigint", "num-integer", "num-traits", "zeroize", @@ -1152,7 +1141,7 @@ dependencies = [ "ark-serialize 0.3.0", "ark-std 0.3.0", "derivative", - "num-bigint 0.4.6", + "num-bigint", "num-traits", "paste", "rustc_version 0.3.3", @@ -1172,7 +1161,7 @@ dependencies = [ "derivative", "digest 0.10.7", "itertools 0.10.5", - "num-bigint 0.4.6", + "num-bigint", "num-traits", "paste", "rustc_version 0.4.1", @@ -1193,7 +1182,7 @@ dependencies = [ "digest 0.10.7", "educe", "itertools 0.13.0", - "num-bigint 0.4.6", + "num-bigint", "num-traits", "paste", "zeroize", @@ -1235,7 +1224,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" dependencies = [ - "num-bigint 0.4.6", + "num-bigint", "num-traits", "quote", "syn 1.0.109", @@ -1247,7 +1236,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" dependencies = [ - "num-bigint 0.4.6", + "num-bigint", "num-traits", "proc-macro2", "quote", @@ -1260,7 +1249,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" dependencies = [ - "num-bigint 0.4.6", + "num-bigint", "num-traits", "proc-macro2", "quote", @@ -1293,7 +1282,7 @@ dependencies = [ "ark-relations", "ark-std 0.5.0", "educe", - "num-bigint 0.4.6", + "num-bigint", "num-integer", "num-traits", "tracing", @@ -1329,7 +1318,7 @@ checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ "ark-std 0.4.0", "digest 0.10.7", - "num-bigint 0.4.6", + "num-bigint", ] [[package]] @@ -1342,7 +1331,7 @@ dependencies = [ "ark-std 0.5.0", "arrayvec", "digest 0.10.7", - "num-bigint 0.4.6", + "num-bigint", ] [[package]] @@ -1882,28 +1871,6 @@ dependencies = [ "wyz", ] -[[package]] -name = "blake3" -version = "1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" -dependencies = [ - "arrayref", - "arrayvec", - "cc", - "cfg-if", - "constant_time_eq", -] - -[[package]] -name = "block-buffer" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "generic-array", -] - [[package]] name = "block-buffer" version = "0.10.4" @@ -2254,12 +2221,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "constant_time_eq" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" - [[package]] name = "convert_case" version = "0.4.0" @@ -3061,27 +3022,10 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ - "byteorder", - "ff_derive", "rand_core 0.6.4", "subtle", ] -[[package]] -name = "ff_derive" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f10d12652036b0e99197587c6ba87a8fc3031986499973c030d8b44fcc151b60" -dependencies = [ - "addchain", - "num-bigint 0.3.3", - "num-integer", - "num-traits", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "figment" version = "0.10.19" @@ -3188,7 +3132,7 @@ dependencies = [ "eyre", "futures", "parking_lot", - "revm 36.0.0", + "revm", "serde", "serde_json", "thiserror 2.0.12", @@ -3317,12 +3261,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" -[[package]] -name = "gcd" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" - [[package]] name = "generator" version = "0.7.5" @@ -4170,15 +4108,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.13.0" @@ -4295,7 +4224,7 @@ dependencies = [ "elliptic-curve", "once_cell", "serdect", - "sha2 0.10.9", + "sha2", ] [[package]] @@ -4327,20 +4256,6 @@ dependencies = [ "log", ] -[[package]] -name = "kzg-rs" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9201effeea3fcc93b587904ae2df9ce97e433184b9d6d299e9ebc9830a546636" -dependencies = [ - "ff", - "hex", - "serde_arrays", - "sha2 0.10.9", - "sp1_bls12_381", - "spin", -] - [[package]] name = "lalrpop" version = "0.20.2" @@ -4421,52 +4336,6 @@ dependencies = [ "libc", ] -[[package]] -name = "libsecp256k1" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79019718125edc905a079a70cfa5f3820bc76139fc91d6f9abc27ea2a887139" -dependencies = [ - "arrayref", - "base64 0.22.1", - "digest 0.9.0", - "libsecp256k1-core", - "libsecp256k1-gen-ecmult", - "libsecp256k1-gen-genmult", - "rand 0.8.5", - "serde", - "sha2 0.9.9", -] - -[[package]] -name = "libsecp256k1-core" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451" -dependencies = [ - "crunchy", - "digest 0.9.0", - "subtle", -] - -[[package]] -name = "libsecp256k1-gen-ecmult" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809" -dependencies = [ - "libsecp256k1-core", -] - -[[package]] -name = "libsecp256k1-gen-genmult" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c" -dependencies = [ - "libsecp256k1-core", -] - [[package]] name = "libsqlite3-sys" version = "0.30.1" @@ -4782,7 +4651,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" dependencies = [ - "num-bigint 0.4.6", + "num-bigint", "num-complex", "num-integer", "num-iter", @@ -4790,17 +4659,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-bigint" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - [[package]] name = "num-bigint" version = "0.4.6" @@ -4852,7 +4710,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ - "num-bigint 0.4.6", + "num-bigint", "num-integer", "num-traits", ] @@ -4934,12 +4792,6 @@ version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "openssl" version = "0.10.73" @@ -5023,128 +4875,7 @@ dependencies = [ "ecdsa", "elliptic-curve", "primeorder", - "sha2 0.10.9", -] - -[[package]] -name = "p3-baby-bear" -version = "0.2.3-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7521838ecab2ddf4f7bc4ceebad06ec02414729598485c1ada516c39900820e8" -dependencies = [ - "num-bigint 0.4.6", - "p3-field", - "p3-mds", - "p3-poseidon2", - "p3-symmetric", - "rand 0.8.5", - "serde", -] - -[[package]] -name = "p3-dft" -version = "0.2.3-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46414daedd796f1eefcdc1811c0484e4bced5729486b6eaba9521c572c76761a" -dependencies = [ - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", - "tracing", -] - -[[package]] -name = "p3-field" -version = "0.2.3-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48948a0516b349e9d1cdb95e7236a6ee010c44e68c5cc78b4b92bf1c4022a0d9" -dependencies = [ - "itertools 0.12.1", - "num-bigint 0.4.6", - "num-traits", - "p3-util", - "rand 0.8.5", - "serde", -] - -[[package]] -name = "p3-matrix" -version = "0.2.3-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4de3f373589477cb735ea58e125898ed20935e03664b4614c7fac258b3c42f" -dependencies = [ - "itertools 0.12.1", - "p3-field", - "p3-maybe-rayon", - "p3-util", - "rand 0.8.5", - "serde", - "tracing", -] - -[[package]] -name = "p3-maybe-rayon" -version = "0.2.3-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3968ad1160310296eb04f91a5f4edfa38fe1d6b2b8cd6b5c64e6f9b7370979e" - -[[package]] -name = "p3-mds" -version = "0.2.3-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2356b1ed0add6d5dfbf7a338ce534a6fde827374394a52cec16a0840af6e97c9" -dependencies = [ - "itertools 0.12.1", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-symmetric", - "p3-util", - "rand 0.8.5", -] - -[[package]] -name = "p3-poseidon2" -version = "0.2.3-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da1eec7e1b6900581bedd95e76e1ef4975608dd55be9872c9d257a8a9651c3a" -dependencies = [ - "gcd", - "p3-field", - "p3-mds", - "p3-symmetric", - "rand 0.8.5", - "serde", -] - -[[package]] -name = "p3-symmetric" -version = "0.2.3-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edb439bea1d822623b41ff4b51e3309e80d13cadf8b86d16ffd5e6efb9fdc360" -dependencies = [ - "itertools 0.12.1", - "p3-field", - "serde", -] - -[[package]] -name = "p3-util" -version = "0.2.3-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c2c2010678b9332b563eaa38364915b585c1a94b5ca61e2c7541c087ddda5c" -dependencies = [ - "serde", -] - -[[package]] -name = "pairing" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fec4625e73cf41ef4bb6846cafa6d44736525f442ba45e407c4a000a13996f" -dependencies = [ - "group", + "sha2", ] [[package]] @@ -5280,38 +5011,17 @@ dependencies = [ "rustc_version 0.4.1", ] -[[package]] -name = "phf" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" -dependencies = [ - "phf_macros 0.11.3", - "phf_shared 0.11.3", - "serde", -] - [[package]] name = "phf" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" dependencies = [ - "phf_macros 0.13.1", + "phf_macros", "phf_shared 0.13.1", "serde", ] -[[package]] -name = "phf_generator" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" -dependencies = [ - "phf_shared 0.11.3", - "rand 0.8.5", -] - [[package]] name = "phf_generator" version = "0.13.1" @@ -5322,26 +5032,13 @@ dependencies = [ "phf_shared 0.13.1", ] -[[package]] -name = "phf_macros" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" -dependencies = [ - "phf_generator 0.11.3", - "phf_shared 0.11.3", - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "phf_macros" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" dependencies = [ - "phf_generator 0.13.1", + "phf_generator", "phf_shared 0.13.1", "proc-macro2", "quote", @@ -5762,7 +5459,7 @@ dependencies = [ "eyre", "foundry-fork-db", "rain-error-decoding", - "revm 36.0.0", + "revm", "revm-inspectors", "serde", "thiserror 1.0.69", @@ -5770,13 +5467,13 @@ dependencies = [ [[package]] name = "rain-math-float" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edf2d43bab7846c4abdd112af976e8093f7cb92a741f8a4e545035be10f42cb0" +checksum = "e8bdd3d50ec4e698d159648b7f2a4600d311465ad98d6d487475f44ed30a2b64" dependencies = [ "alloy", "getrandom 0.2.16", - "revm 25.0.0", + "revm", "serde", "thiserror 2.0.12", "wasm-bindgen", @@ -5987,7 +5684,7 @@ dependencies = [ "serde_bytes", "serde_json", "serde_yaml", - "sha2 0.10.9", + "sha2", "strict-yaml-rust", "tempfile", "thiserror 1.0.69", @@ -6039,7 +5736,7 @@ dependencies = [ "reqwest 0.12.20", "serde", "serde_json", - "sha2 0.10.9", + "sha2", "strict-yaml-rust", "thiserror 1.0.69", "tokio", @@ -6498,55 +6195,23 @@ dependencies = [ "web-sys", ] -[[package]] -name = "revm" -version = "25.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08fd78df29217546ddfd587fe313aff2bf86e57cfe0f18d16cb326d9f50ba54d" -dependencies = [ - "revm-bytecode 4.1.0", - "revm-context 6.0.0", - "revm-context-interface 6.0.0", - "revm-database 5.0.0", - "revm-database-interface 5.0.0", - "revm-handler 6.0.0", - "revm-inspector 6.0.0", - "revm-interpreter 21.0.0", - "revm-precompile 22.0.0", - "revm-primitives 19.2.0", - "revm-state 5.0.0", -] - [[package]] name = "revm" version = "36.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0abc15d09cd211e9e73410ada10134069c794d4bcdb787dfc16a1bf0939849c" dependencies = [ - "revm-bytecode 9.0.0", - "revm-context 15.0.0", - "revm-context-interface 16.0.0", - "revm-database 12.0.0", - "revm-database-interface 10.0.0", - "revm-handler 17.0.0", - "revm-inspector 17.0.0", - "revm-interpreter 34.0.0", - "revm-precompile 32.1.0", - "revm-primitives 22.1.0", - "revm-state 10.0.0", -] - -[[package]] -name = "revm-bytecode" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942fe4724cf552fd28db6b0a2ca5b79e884d40dd8288a4027ed1e9090e0c6f49" -dependencies = [ - "bitvec", - "once_cell", - "phf 0.11.3", - "revm-primitives 19.2.0", - "serde", + "revm-bytecode", + "revm-context", + "revm-context-interface", + "revm-database", + "revm-database-interface", + "revm-handler", + "revm-inspector", + "revm-interpreter", + "revm-precompile", + "revm-primitives", + "revm-state", ] [[package]] @@ -6556,24 +6221,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e86e468df3cf5cf59fa7ef71a3e9ccabb76bb336401ea2c0674f563104cf3c5e" dependencies = [ "bitvec", - "phf 0.13.1", - "revm-primitives 22.1.0", - "serde", -] - -[[package]] -name = "revm-context" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190f211f04c8030f5393cfcfa1569b88d5649f0f266bf4291981ba879fa6c5d1" -dependencies = [ - "cfg-if", - "derive-where", - "revm-bytecode 4.1.0", - "revm-context-interface 6.0.0", - "revm-database-interface 5.0.0", - "revm-primitives 19.2.0", - "revm-state 5.0.0", + "phf", + "revm-primitives", "serde", ] @@ -6586,27 +6235,11 @@ dependencies = [ "bitvec", "cfg-if", "derive-where", - "revm-bytecode 9.0.0", - "revm-context-interface 16.0.0", - "revm-database-interface 10.0.0", - "revm-primitives 22.1.0", - "revm-state 10.0.0", - "serde", -] - -[[package]] -name = "revm-context-interface" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42b7e7ff1154e6460cec025fe20dfe45f3325bbb905718643b6d053ec49da6e8" -dependencies = [ - "alloy-eip2930", - "alloy-eip7702", - "auto_impl", - "either", - "revm-database-interface 5.0.0", - "revm-primitives 19.2.0", - "revm-state 5.0.0", + "revm-bytecode", + "revm-context-interface", + "revm-database-interface", + "revm-primitives", + "revm-state", "serde", ] @@ -6620,23 +6253,9 @@ dependencies = [ "alloy-eip7702", "auto_impl", "either", - "revm-database-interface 10.0.0", - "revm-primitives 22.1.0", - "revm-state 10.0.0", - "serde", -] - -[[package]] -name = "revm-database" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9456d5cb165fef91c8b538d0115de50059d1cf352d160a1396894eac017a2a34" -dependencies = [ - "alloy-eips", - "revm-bytecode 4.1.0", - "revm-database-interface 5.0.0", - "revm-primitives 19.2.0", - "revm-state 5.0.0", + "revm-database-interface", + "revm-primitives", + "revm-state", "serde", ] @@ -6647,22 +6266,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c0a7d6da41061f2c50f99a2632571026b23684b5449ff319914151f4449b6c8" dependencies = [ "alloy-eips", - "revm-bytecode 9.0.0", - "revm-database-interface 10.0.0", - "revm-primitives 22.1.0", - "revm-state 10.0.0", - "serde", -] - -[[package]] -name = "revm-database-interface" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaeb608de31bfd0e64bf9b5b18ee70ac70094c8c045b28ae8ae8701608d17d34" -dependencies = [ - "auto_impl", - "revm-primitives 19.2.0", - "revm-state 5.0.0", + "revm-bytecode", + "revm-database-interface", + "revm-primitives", + "revm-state", "serde", ] @@ -6674,30 +6281,12 @@ checksum = "bd497a38a79057b94a049552cb1f925ad15078bc1a479c132aeeebd1d2ccc768" dependencies = [ "auto_impl", "either", - "revm-primitives 22.1.0", - "revm-state 10.0.0", + "revm-primitives", + "revm-state", "serde", "thiserror 2.0.12", ] -[[package]] -name = "revm-handler" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfeaecd909e6be655c36d21032ca932b347e60ec5849ee29e670d63aa97b6adb" -dependencies = [ - "auto_impl", - "revm-bytecode 4.1.0", - "revm-context 6.0.0", - "revm-context-interface 6.0.0", - "revm-database-interface 5.0.0", - "revm-interpreter 21.0.0", - "revm-precompile 22.0.0", - "revm-primitives 19.2.0", - "revm-state 5.0.0", - "serde", -] - [[package]] name = "revm-handler" version = "17.0.0" @@ -6706,34 +6295,17 @@ checksum = "9f1eed729ca9b228ae98688f352235871e9b8be3d568d488e4070f64c56e9d3d" dependencies = [ "auto_impl", "derive-where", - "revm-bytecode 9.0.0", - "revm-context 15.0.0", - "revm-context-interface 16.0.0", - "revm-database-interface 10.0.0", - "revm-interpreter 34.0.0", - "revm-precompile 32.1.0", - "revm-primitives 22.1.0", - "revm-state 10.0.0", + "revm-bytecode", + "revm-context", + "revm-context-interface", + "revm-database-interface", + "revm-interpreter", + "revm-precompile", + "revm-primitives", + "revm-state", "serde", ] -[[package]] -name = "revm-inspector" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4de1c6cddc7d62364dc9fa2f405c2c4637c933c5591addf09977ec8a156e4b23" -dependencies = [ - "auto_impl", - "revm-context 6.0.0", - "revm-database-interface 5.0.0", - "revm-handler 6.0.0", - "revm-interpreter 21.0.0", - "revm-primitives 19.2.0", - "revm-state 5.0.0", - "serde", - "serde_json", -] - [[package]] name = "revm-inspector" version = "17.0.0" @@ -6742,12 +6314,12 @@ checksum = "cbf5102391706513689f91cb3cb3d97b5f13a02e8647e6e9cb7620877ef84847" dependencies = [ "auto_impl", "either", - "revm-context 15.0.0", - "revm-database-interface 10.0.0", - "revm-handler 17.0.0", - "revm-interpreter 34.0.0", - "revm-primitives 22.1.0", - "revm-state 10.0.0", + "revm-context", + "revm-database-interface", + "revm-handler", + "revm-interpreter", + "revm-primitives", + "revm-state", "serde", "serde_json", ] @@ -6764,63 +6336,25 @@ dependencies = [ "alloy-sol-types 1.6.0", "anstyle", "colorchoice", - "revm 36.0.0", + "revm", "serde", "serde_json", "thiserror 2.0.12", ] -[[package]] -name = "revm-interpreter" -version = "21.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c3ca670eee335d9268a9100932ec1e09638bdd9b31eac9e22dec4de00f2cba" -dependencies = [ - "revm-bytecode 4.1.0", - "revm-context-interface 6.0.0", - "revm-primitives 19.2.0", - "serde", -] - [[package]] name = "revm-interpreter" version = "34.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf22f80612bb8f58fd1f578750281f2afadb6c93835b14ae6a4d6b75ca26f445" dependencies = [ - "revm-bytecode 9.0.0", - "revm-context-interface 16.0.0", - "revm-primitives 22.1.0", - "revm-state 10.0.0", + "revm-bytecode", + "revm-context-interface", + "revm-primitives", + "revm-state", "serde", ] -[[package]] -name = "revm-precompile" -version = "22.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4330c6982a2ef1d318cb10ce7e726a64e11e44fe1eac29d055de849a5e1e080e" -dependencies = [ - "ark-bls12-381", - "ark-bn254", - "ark-ec", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "aurora-engine-modexp", - "blst", - "c-kzg", - "cfg-if", - "k256", - "kzg-rs", - "libsecp256k1", - "once_cell", - "p256", - "revm-primitives 19.2.0", - "ripemd", - "secp256k1 0.30.0", - "sha2 0.10.9", -] - [[package]] name = "revm-precompile" version = "32.1.0" @@ -6839,21 +6373,10 @@ dependencies = [ "cfg-if", "k256", "p256", - "revm-primitives 22.1.0", + "revm-primitives", "ripemd", "secp256k1 0.31.1", - "sha2 0.10.9", -] - -[[package]] -name = "revm-primitives" -version = "19.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c1588093530ec4442461163be49c433c07a3235d1ca6f6799fef338dacc50d3" -dependencies = [ - "alloy-primitives 1.6.0", - "num_enum", - "serde", + "sha2", ] [[package]] @@ -6868,18 +6391,6 @@ dependencies = [ "serde", ] -[[package]] -name = "revm-state" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44320ccf53067136a83cdbc54f4b7529e8f61497666f31d6f5cfd9035a1cc08f" -dependencies = [ - "bitflags 2.11.1", - "revm-bytecode 4.1.0", - "revm-primitives 19.2.0", - "serde", -] - [[package]] name = "revm-state" version = "10.0.0" @@ -6888,8 +6399,8 @@ checksum = "d29404707763da607e5d6e4771cb203998c28159279c2f64cc32de08d2814651" dependencies = [ "alloy-eip7928", "bitflags 2.11.1", - "revm-bytecode 9.0.0", - "revm-primitives 22.1.0", + "revm-bytecode", + "revm-primitives", "serde", ] @@ -7078,7 +6589,7 @@ dependencies = [ "bytes", "fastrlp 0.3.1", "fastrlp 0.4.0", - "num-bigint 0.4.6", + "num-bigint", "num-integer", "num-traits", "parity-scale-codec", @@ -7165,7 +6676,7 @@ version = "8.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5bcdef0be6fe7f6fa333b1073c949729274b05f123a0ad7efcb8efd878e5c3b1" dependencies = [ - "sha2 0.10.9", + "sha2", "walkdir", ] @@ -7590,15 +7101,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "serde_arrays" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94a16b99c5ea4fe3daccd14853ad260ec00ea043b2708d1fd1da3106dcd8d9df" -dependencies = [ - "serde", -] - [[package]] name = "serde_bytes" version = "0.11.17" @@ -7780,19 +7282,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "sha2" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures 0.2.17", - "digest 0.9.0", - "opaque-debug", -] - [[package]] name = "sha2" version = "0.10.9" @@ -7882,7 +7371,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ - "num-bigint 0.4.6", + "num-bigint", "num-traits", "thiserror 2.0.12", "time", @@ -7919,52 +7408,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "sp1-lib" -version = "5.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0fd8bc101e5603ccf2dc1836ea06410f25ce2298755b2dac626add9be2424b4" -dependencies = [ - "bincode", - "serde", - "sp1-primitives", -] - -[[package]] -name = "sp1-primitives" -version = "5.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "699935774a5131c1a8b371108d0666c0c80c43611045fb77fae43f2f242676d5" -dependencies = [ - "bincode", - "blake3", - "cfg-if", - "hex", - "lazy_static", - "num-bigint 0.4.6", - "p3-baby-bear", - "p3-field", - "p3-poseidon2", - "p3-symmetric", - "serde", - "sha2 0.10.9", -] - -[[package]] -name = "sp1_bls12_381" -version = "0.8.0-sp1-5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac255e1704ebcdeec5e02f6a0ebc4d2e9e6b802161938330b6810c13a610c583" -dependencies = [ - "cfg-if", - "ff", - "group", - "pairing", - "rand_core 0.6.4", - "sp1-lib", - "subtle", -] - [[package]] name = "spin" version = "0.9.8" diff --git a/Cargo.toml b/Cargo.toml index ee22248da1..7169aa3eaa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -50,7 +50,7 @@ thirtyfour = "0.31.0" test-context = "0.3.0" portpicker = "0.1.1" rain-erc = "0.1.1" -rain-math-float = "0.1.5" +rain-math-float = "0.1.6" rain-error-decoding = "0.1.2" # Direct dep required: the #[wasm_bindgen] macro emits `::wasm_bindgen` paths, and # without a direct dep the 0.2.122 macro recurses without bound on opaque-class From b5c7655729758dce407e0f9a8ed60cb722153e58 Mon Sep 17 00:00:00 2001 From: David Meister Date: Thu, 28 May 2026 15:50:48 +0000 Subject: [PATCH 11/27] test_fixtures: deploy canonical TOFUTokenDecimals bytecode The orderbook (RaindexV6) reads token decimals via the TOFU singleton and its ensureDeployed() requires the deployed codehash to equal the libs TOFU_DECIMALS_EXPECTED_CODE_HASH. test_fixtures was set_code-ing raindexs own compile of TOFUTokenDecimals.sol, whose metadata hash differs, so every deposit/take reverted with TOFUTokenDecimalsNotDeployed. Deploy the canonical creation code from LibTOFUTokenDecimals instead, read its runtime, and place that at the deterministic singleton address. Fixes the ~32 take_orders e2e/single tests. Co-Authored-By: Claude Opus 4.7 --- crates/test_fixtures/src/lib.rs | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/crates/test_fixtures/src/lib.rs b/crates/test_fixtures/src/lib.rs index 10e41501a7..3f0aa4da70 100644 --- a/crates/test_fixtures/src/lib.rs +++ b/crates/test_fixtures/src/lib.rs @@ -113,11 +113,26 @@ impl LocalEvm { .wallet(signer_wallets[0].clone()) .connect_http(anvil.endpoint_url()); + // Deploy the canonical TOFUTokenDecimals creation code (from + // rain-tofu-erc20-decimals' LibTOFUTokenDecimals) to obtain its runtime, + // then place that at the deterministic singleton address. The lib's + // `ensureDeployed` checks the codehash against TOFU_DECIMALS_EXPECTED_CODE_HASH, + // which raindex's own compile of TOFUTokenDecimals.sol does not match. + let tofu_deployed = provider + .send_transaction(WithOtherFields::new( + TransactionRequest::default() + .with_deploy_code(decode(TOFU_DECIMALS_CREATION_CODE).unwrap()), + )) + .await + .unwrap() + .get_receipt() + .await + .unwrap() + .contract_address + .unwrap(); + let tofu_runtime = provider.get_code_at(tofu_deployed).await.unwrap(); provider - .anvil_set_code( - TOFU_TOKEN_DECIMALS_ADDRESS, - TOFUTokenDecimals::DEPLOYED_BYTECODE.clone(), - ) + .anvil_set_code(TOFU_TOKEN_DECIMALS_ADDRESS, tofu_runtime) .await .unwrap(); @@ -383,3 +398,9 @@ const MULTICALL3_ADDRESS: Address = address!("cA11bde05977b3631167028862bE2a1739 const MULTICALL3_BYTECODE: &str = "0x6080604052600436106100f35760003560e01c80634d2301cc1161008a578063a8b0574e11610059578063a8b0574e1461025a578063bce38bd714610275578063c3077fa914610288578063ee82ac5e1461029b57600080fd5b80634d2301cc146101ec57806372425d9d1461022157806382ad56cb1461023457806386d516e81461024757600080fd5b80633408e470116100c65780633408e47014610191578063399542e9146101a45780633e64a696146101c657806342cbb15c146101d957600080fd5b80630f28c97d146100f8578063174dea711461011a578063252dba421461013a57806327e86d6e1461015b575b600080fd5b34801561010457600080fd5b50425b6040519081526020015b60405180910390f35b61012d610128366004610a85565b6102ba565b6040516101119190610bbe565b61014d610148366004610a85565b6104ef565b604051610111929190610bd8565b34801561016757600080fd5b50437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0140610107565b34801561019d57600080fd5b5046610107565b6101b76101b2366004610c60565b610690565b60405161011193929190610cba565b3480156101d257600080fd5b5048610107565b3480156101e557600080fd5b5043610107565b3480156101f857600080fd5b50610107610207366004610ce2565b73ffffffffffffffffffffffffffffffffffffffff163190565b34801561022d57600080fd5b5044610107565b61012d610242366004610a85565b6106ab565b34801561025357600080fd5b5045610107565b34801561026657600080fd5b50604051418152602001610111565b61012d610283366004610c60565b61085a565b6101b7610296366004610a85565b610a1a565b3480156102a757600080fd5b506101076102b6366004610d18565b4090565b60606000828067ffffffffffffffff8111156102d8576102d8610d31565b60405190808252806020026020018201604052801561031e57816020015b6040805180820190915260008152606060208201528152602001906001900390816102f65790505b5092503660005b8281101561047757600085828151811061034157610341610d60565b6020026020010151905087878381811061035d5761035d610d60565b905060200281019061036f9190610d8f565b6040810135958601959093506103886020850185610ce2565b73ffffffffffffffffffffffffffffffffffffffff16816103ac6060870187610dcd565b6040516103ba929190610e32565b60006040518083038185875af1925050503d80600081146103f7576040519150601f19603f3d011682016040523d82523d6000602084013e6103fc565b606091505b50602080850191909152901515808452908501351761046d577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260846000fd5b5050600101610325565b508234146104e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d756c746963616c6c333a2076616c7565206d69736d6174636800000000000060448201526064015b60405180910390fd5b50505092915050565b436060828067ffffffffffffffff81111561050c5761050c610d31565b60405190808252806020026020018201604052801561053f57816020015b606081526020019060019003908161052a5790505b5091503660005b8281101561068657600087878381811061056257610562610d60565b90506020028101906105749190610e42565b92506105836020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166105a66020850185610dcd565b6040516105b4929190610e32565b6000604051808303816000865af19150503d80600081146105f1576040519150601f19603f3d011682016040523d82523d6000602084013e6105f6565b606091505b5086848151811061060957610609610d60565b602090810291909101015290508061067d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b50600101610546565b5050509250929050565b43804060606106a086868661085a565b905093509350939050565b6060818067ffffffffffffffff8111156106c7576106c7610d31565b60405190808252806020026020018201604052801561070d57816020015b6040805180820190915260008152606060208201528152602001906001900390816106e55790505b5091503660005b828110156104e657600084828151811061073057610730610d60565b6020026020010151905086868381811061074c5761074c610d60565b905060200281019061075e9190610e76565b925061076d6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166107906040850185610dcd565b60405161079e929190610e32565b6000604051808303816000865af19150503d80600081146107db576040519150601f19603f3d011682016040523d82523d6000602084013e6107e0565b606091505b506020808401919091529015158083529084013517610851577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b50600101610714565b6060818067ffffffffffffffff81111561087657610876610d31565b6040519080825280602002602001820160405280156108bc57816020015b6040805180820190915260008152606060208201528152602001906001900390816108945790505b5091503660005b82811015610a105760008482815181106108df576108df610d60565b602002602001015190508686838181106108fb576108fb610d60565b905060200281019061090d9190610e42565b925061091c6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff1661093f6020850185610dcd565b60405161094d929190610e32565b6000604051808303816000865af19150503d806000811461098a576040519150601f19603f3d011682016040523d82523d6000602084013e61098f565b606091505b506020830152151581528715610a07578051610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b506001016108c3565b5050509392505050565b6000806060610a2b60018686610690565b919790965090945092505050565b60008083601f840112610a4b57600080fd5b50813567ffffffffffffffff811115610a6357600080fd5b6020830191508360208260051b8501011115610a7e57600080fd5b9250929050565b60008060208385031215610a9857600080fd5b823567ffffffffffffffff811115610aaf57600080fd5b610abb85828601610a39565b90969095509350505050565b6000815180845260005b81811015610aed57602081850181015186830182015201610ad1565b81811115610aff576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015610bb1578583037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001895281518051151584528401516040858501819052610b9d81860183610ac7565b9a86019a9450505090830190600101610b4f565b5090979650505050505050565b602081526000610bd16020830184610b32565b9392505050565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015610c52577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452610c40868351610ac7565b95509284019290840190600101610c06565b509398975050505050505050565b600080600060408486031215610c7557600080fd5b83358015158114610c8557600080fd5b9250602084013567ffffffffffffffff811115610ca157600080fd5b610cad86828701610a39565b9497909650939450505050565b838152826020820152606060408201526000610cd96060830184610b32565b95945050505050565b600060208284031215610cf457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610bd157600080fd5b600060208284031215610d2a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112610dc357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e0257600080fd5b83018035915067ffffffffffffffff821115610e1d57600080fd5b602001915036819003821315610a7e57600080fd5b8183823760009101908152919050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112610dc357600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610dc357600080fdfea2646970667358221220bb2b5c71a328032f97c676ae39a1ec2148d3e5d6f73d95e9b17910152d61f16264736f6c634300080c0033"; const TOFU_TOKEN_DECIMALS_ADDRESS: Address = address!("0x200e12D10bb0c5E4a17e7018f0F1161919bb9389"); + +/// Canonical TOFUTokenDecimals creation code, copied verbatim from +/// rain-tofu-erc20-decimals' `LibTOFUTokenDecimals.TOFU_DECIMALS_EXPECTED_CREATION_CODE`. +/// Deploying this produces the runtime whose codehash equals the lib's +/// `TOFU_DECIMALS_EXPECTED_CODE_HASH`, which `ensureDeployed` requires. +const TOFU_DECIMALS_CREATION_CODE: &str = "6080604052348015600e575f80fd5b5061044b8061001c5f395ff3fe608060405234801561000f575f80fd5b506004361061004a575f3560e01c80630782d7e11461004e57806354636d2b14610078578063b7bad1b11461009d578063f5c36eaf146100b0575b5f80fd5b61006161005c366004610363565b6100c3565b60405161006f929190610403565b60405180910390f35b61008b610086366004610363565b6100d8565b60405160ff909116815260200161006f565b6100616100ab366004610363565b6100e9565b61008b6100be366004610363565b6100f5565b5f806100cf5f84610100565b91509150915091565b5f6100e35f836101f0565b92915050565b5f806100cf5f84610281565b5f6100e35f83610356565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526020838152604080832081518083019092525460ff8082161515835261010090910416818301527f313ce56700000000000000000000000000000000000000000000000000000000808452839283908190816004818a5afa915060203d1015610182575f91505b811561019857505f5160ff811115610198575f91505b816101af57505050602001516003925090506101e9565b83516101c3575f955093506101e992505050565b836020015160ff1681146101d85760026101db565b60015b846020015195509550505050505b9250929050565b5f805f6101fd8585610281565b909250905060018260038111156102165761021661039d565b1415801561023557505f8260038111156102325761023261039d565b14155b156102795783826040517fee07877f000000000000000000000000000000000000000000000000000000008152600401610270929190610421565b60405180910390fd5b949350505050565b5f805f8061028f8686610100565b90925090505f8260038111156102a7576102a761039d565b0361034b576040805180820182526001815260ff838116602080840191825273ffffffffffffffffffffffffffffffffffffffff8a165f908152908b9052939093209151825493517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009094169015157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff161761010093909116929092029190911790555b909590945092505050565b5f805f6101fd8585610100565b5f60208284031215610373575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610396575f80fd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600481106103ff577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b6040810161041182856103ca565b60ff831660208301529392505050565b73ffffffffffffffffffffffffffffffffffffffff831681526040810161039660208301846103ca56"; From 6d64b579402c4d3e205772f675817e1eb9789255 Mon Sep 17 00:00:00 2001 From: David Meister Date: Fri, 29 May 2026 07:45:59 +0000 Subject: [PATCH 12/27] Fix serialize snapshot padding + replay error variant The SERIALIZED_STATE snapshot lost its base64 padding and was stale after the flate2 bump; restore the correct gzip bytes so the URL_SAFE decode round-trips. Update the bad-fork-URL assertion to expect rain-forker's ExecutorError (connection/setup failures), replacing the old foundry forker's Eyre variant. Co-Authored-By: Claude Opus 4.7 --- crates/common/src/raindex_order_builder/state_management.rs | 2 +- crates/common/src/replays.rs | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/crates/common/src/raindex_order_builder/state_management.rs b/crates/common/src/raindex_order_builder/state_management.rs index 642398d10b..ca1ebf04db 100644 --- a/crates/common/src/raindex_order_builder/state_management.rs +++ b/crates/common/src/raindex_order_builder/state_management.rs @@ -399,7 +399,7 @@ mod tests { use raindex_app_settings::{network::NetworkCfg, order::VaultType, yaml::YamlParsableHash}; use std::str::FromStr; - const SERIALIZED_STATE: &str = "H4sIAAAAAAAA_2NigABOKJ2UmZeSmZeuawjlMzAwQ2lDAwN0RUaMUAEDBjgLxmCD0iX52al5xthMw64SlccD5RXn56bq5qWWlOcXZcP0yULpjJKSAit9_Zz85MScjPziEisLAwtT_aKCZN3SopxqkApGEMkIs9o1xEMEyhQyCauYgEYwCjGyQ6VDQG5QMGZkgfG9_YwZGJjgnkFzuyHcCkNLS5ArUWSN4LJGlpY6UGaEYXZEUUFeuWegaXGuUamrh3N4SmmmY2m2c36gX0iEZ0RQbnaZYZVBqm65rTgsLFJzUpNLdMGG6qakFuTkV-am5pUAAINPx5HKAQAA"; + const SERIALIZED_STATE: &str = "H4sIAAAAAAAA_21QXWvCMBRt3NgY7EkGexrsByw0qROssIchgiIIStG-ahu0JE1Km1o__oQ_Was3FYv34Z5zc07uvUnDusYb4DKSYSRXmFomngApIXWTg-CAWBUz5AVQK85k61G3x8776h2qTMUMS6YLlXJz7wtwrXXStW2hgoVYq0x3O6TTttMkwHkqDqUDlRmZ0X1v8AG0-TvbHmsJNdEryF65w3cLPZt6ND6_pGHd4m5bWo2grovqqlOpjuv-APUp99NEFsNJO4udvD_ozcM8-s95T03Gnj_0pzHf0D1huPj7NH_BBAs0vjTFIUuE2sVM6hODT8eRygEAAA=="; fn encode_state(state: &SerializedBuilderState) -> String { let bytes = bincode::serialize(state).unwrap(); diff --git a/crates/common/src/replays.rs b/crates/common/src/replays.rs index a5c148f603..42eb45a281 100644 --- a/crates/common/src/replays.rs +++ b/crates/common/src/replays.rs @@ -260,7 +260,9 @@ amount price: 2 1; assert!(matches!( err, - Err(TradeReplayerError::ForkerError(ForkCallError::Eyre(_))) + Err(TradeReplayerError::ForkerError( + ForkCallError::ExecutorError(_) + )) )); let local_evm = LocalEvm::new().await; From 045cc2976dcaf43a59231686c759097237e0e790 Mon Sep 17 00:00:00 2001 From: David Meister Date: Fri, 29 May 2026 07:56:54 +0000 Subject: [PATCH 13/27] Remove git submodules; all Solidity deps are Soldeer-managed The lib/ submodules (sushixswap-v2, rain.interpreter, rain.raindex.interface, rain.deploy) are fully replaced by Soldeer dependencies under dependencies/, resolved via remappings.txt. Drop the submodules, the now-empty .gitmodules, the stale Cargo workspace exclude, the prep-base.sh submodule init, and flip CI checkout submodules flags to false. Co-Authored-By: Claude Opus 4.7 --- .github/workflows/copilot-setup-steps.yml | 2 +- .github/workflows/deploy-subgraph.yaml | 2 +- .github/workflows/git-clean.yaml | 2 +- .github/workflows/manual-rs-release.yml | 2 +- .github/workflows/manual-sol-artifacts.yaml | 2 +- .github/workflows/rainix.yaml | 2 +- .github/workflows/test-subgraph.yml | 2 +- .github/workflows/test-ui-components.yaml | 2 +- .github/workflows/test-webapp.yaml | 2 +- .github/workflows/vercel-docs-preview.yaml | 2 +- .github/workflows/vercel-docs-prod.yaml | 2 +- .github/workflows/vercel-preview.yaml | 2 +- .github/workflows/vercel-prod.yaml | 2 +- .gitmodules | 12 ------------ Cargo.toml | 1 - lib/rain.deploy | 1 - lib/rain.interpreter | 1 - lib/rain.raindex.interface | 1 - lib/sushixswap-v2 | 1 - prep-base.sh | 2 -- 20 files changed, 13 insertions(+), 32 deletions(-) delete mode 100644 .gitmodules delete mode 160000 lib/rain.deploy delete mode 160000 lib/rain.interpreter delete mode 160000 lib/rain.raindex.interface delete mode 160000 lib/sushixswap-v2 diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml index fbe1899776..79258550cc 100644 --- a/.github/workflows/copilot-setup-steps.yml +++ b/.github/workflows/copilot-setup-steps.yml @@ -16,7 +16,7 @@ jobs: steps: - uses: actions/checkout@v4 with: - submodules: true + submodules: false fetch-depth: 0 - uses: nixbuild/nix-quick-install-action@v30 with: diff --git a/.github/workflows/deploy-subgraph.yaml b/.github/workflows/deploy-subgraph.yaml index 762d7ee18d..09ee687d1e 100644 --- a/.github/workflows/deploy-subgraph.yaml +++ b/.github/workflows/deploy-subgraph.yaml @@ -13,7 +13,7 @@ jobs: steps: - uses: actions/checkout@v4 with: - submodules: true + submodules: false fetch-depth: 0 - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 diff --git a/.github/workflows/git-clean.yaml b/.github/workflows/git-clean.yaml index 554700e9bf..fc00ff0243 100644 --- a/.github/workflows/git-clean.yaml +++ b/.github/workflows/git-clean.yaml @@ -16,7 +16,7 @@ jobs: steps: - uses: actions/checkout@v4 with: - submodules: true + submodules: false fetch-depth: 0 - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 diff --git a/.github/workflows/manual-rs-release.yml b/.github/workflows/manual-rs-release.yml index 3a8274883e..23a8a506a4 100644 --- a/.github/workflows/manual-rs-release.yml +++ b/.github/workflows/manual-rs-release.yml @@ -10,7 +10,7 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 - submodules: true + submodules: false - uses: nixbuild/nix-quick-install-action@v30 with: nix_conf: | diff --git a/.github/workflows/manual-sol-artifacts.yaml b/.github/workflows/manual-sol-artifacts.yaml index c621345397..11b380707a 100644 --- a/.github/workflows/manual-sol-artifacts.yaml +++ b/.github/workflows/manual-sol-artifacts.yaml @@ -22,7 +22,7 @@ jobs: steps: - uses: actions/checkout@v4 with: - submodules: true + submodules: false fetch-depth: 0 - uses: nixbuild/nix-quick-install-action@v30 with: diff --git a/.github/workflows/rainix.yaml b/.github/workflows/rainix.yaml index cca0c41962..19ef618a92 100644 --- a/.github/workflows/rainix.yaml +++ b/.github/workflows/rainix.yaml @@ -50,7 +50,7 @@ jobs: steps: - uses: actions/checkout@v4 with: - submodules: true + submodules: false fetch-depth: 0 - name: Free disk space if: matrix.os == 'ubuntu-latest' diff --git a/.github/workflows/test-subgraph.yml b/.github/workflows/test-subgraph.yml index 127feab56e..f455c6115e 100644 --- a/.github/workflows/test-subgraph.yml +++ b/.github/workflows/test-subgraph.yml @@ -18,7 +18,7 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 - submodules: true + submodules: false - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 - uses: nixbuild/nix-quick-install-action@v30 diff --git a/.github/workflows/test-ui-components.yaml b/.github/workflows/test-ui-components.yaml index b59c8eda42..ee772ad32e 100644 --- a/.github/workflows/test-ui-components.yaml +++ b/.github/workflows/test-ui-components.yaml @@ -18,7 +18,7 @@ jobs: steps: - uses: actions/checkout@v2 with: - submodules: true + submodules: false fetch-depth: 0 - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 diff --git a/.github/workflows/test-webapp.yaml b/.github/workflows/test-webapp.yaml index 7607c68446..cdb80ebc63 100644 --- a/.github/workflows/test-webapp.yaml +++ b/.github/workflows/test-webapp.yaml @@ -18,7 +18,7 @@ jobs: steps: - uses: actions/checkout@v2 with: - submodules: true + submodules: false fetch-depth: 0 - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 diff --git a/.github/workflows/vercel-docs-preview.yaml b/.github/workflows/vercel-docs-preview.yaml index 6dc49d3bb0..800de1c7ff 100644 --- a/.github/workflows/vercel-docs-preview.yaml +++ b/.github/workflows/vercel-docs-preview.yaml @@ -20,7 +20,7 @@ jobs: steps: - uses: actions/checkout@v4 with: - submodules: true + submodules: false fetch-depth: 0 - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 diff --git a/.github/workflows/vercel-docs-prod.yaml b/.github/workflows/vercel-docs-prod.yaml index 5536e0460f..b394703c48 100644 --- a/.github/workflows/vercel-docs-prod.yaml +++ b/.github/workflows/vercel-docs-prod.yaml @@ -17,7 +17,7 @@ jobs: steps: - uses: actions/checkout@v4 with: - submodules: true + submodules: false fetch-depth: 0 - uses: DeterminateSystems/nix-installer-action@main with: diff --git a/.github/workflows/vercel-preview.yaml b/.github/workflows/vercel-preview.yaml index 9b6deedb66..62464ebd00 100644 --- a/.github/workflows/vercel-preview.yaml +++ b/.github/workflows/vercel-preview.yaml @@ -34,7 +34,7 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 with: - submodules: true + submodules: false fetch-depth: 0 - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 diff --git a/.github/workflows/vercel-prod.yaml b/.github/workflows/vercel-prod.yaml index 9652752e3b..187da97453 100644 --- a/.github/workflows/vercel-prod.yaml +++ b/.github/workflows/vercel-prod.yaml @@ -17,7 +17,7 @@ jobs: steps: - uses: actions/checkout@v2 with: - submodules: true + submodules: false fetch-depth: 0 - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index ababdd4141..0000000000 --- a/.gitmodules +++ /dev/null @@ -1,12 +0,0 @@ -[submodule "lib/sushixswap-v2"] - path = lib/sushixswap-v2 - url = https://github.com/rainprotocol/sushixswap-v2 -[submodule "lib/rain.interpreter"] - path = lib/rain.interpreter - url = https://github.com/rainlanguage/rain.interpreter -[submodule "lib/rain.raindex.interface"] - path = lib/rain.raindex.interface - url = https://github.com/rainlanguage/rain.raindex.interface -[submodule "lib/rain.deploy"] - path = lib/rain.deploy - url = https://github.com/rainlanguage/rain.deploy diff --git a/Cargo.toml b/Cargo.toml index 7169aa3eaa..8a3e654ac8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,5 @@ [workspace] members = ["crates/*"] -exclude = ["lib/rain.interpreter", "lib/rain.raindex.interface"] resolver = "2" [workspace.package] diff --git a/lib/rain.deploy b/lib/rain.deploy deleted file mode 160000 index 43a6ed3a98..0000000000 --- a/lib/rain.deploy +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 43a6ed3a98f0141e1963b4b9136e8c80e2889bd1 diff --git a/lib/rain.interpreter b/lib/rain.interpreter deleted file mode 160000 index bbd39eaefb..0000000000 --- a/lib/rain.interpreter +++ /dev/null @@ -1 +0,0 @@ -Subproject commit bbd39eaefb0087f6c877d92cb53cdfd95f34452d diff --git a/lib/rain.raindex.interface b/lib/rain.raindex.interface deleted file mode 160000 index 9e2da33b47..0000000000 --- a/lib/rain.raindex.interface +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 9e2da33b477e16bb2c2dc16b29de98d4cbe9dd94 diff --git a/lib/sushixswap-v2 b/lib/sushixswap-v2 deleted file mode 160000 index ca38c64cf7..0000000000 --- a/lib/sushixswap-v2 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ca38c64cf7c3042f6427414d7bff61c54293da51 diff --git a/prep-base.sh b/prep-base.sh index fd0bd89847..49030a517b 100755 --- a/prep-base.sh +++ b/prep-base.sh @@ -20,8 +20,6 @@ keep=( -k PUBLIC_WALLETCONNECT_PROJECT_ID ) -git submodule update --init --recursive - nix develop -c forge soldeer install nix develop -c forge build From 0e7a58bc653da7f03029e6d3941f5067e7db1b93 Mon Sep 17 00:00:00 2001 From: David Meister Date: Fri, 29 May 2026 07:57:51 +0000 Subject: [PATCH 14/27] Gitignore local .pre-commit-config.yaml Co-Authored-By: Claude Opus 4.7 --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index c83d6007f4..1322af041b 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,6 @@ packages/raindex/esm.d.ts .cursor/ dependencies/ + +# Local pre-commit hook config +.pre-commit-config.yaml From 3f1078f93a807876b37cf14a26bdbd0521904a81 Mon Sep 17 00:00:00 2001 From: David Meister Date: Fri, 29 May 2026 08:02:17 +0000 Subject: [PATCH 15/27] Update no-rpc-response assertion for alloy transport error After the alloy bump the unreachable-RPC error surfaces as reqwest's "error sending request" rather than the old multi-provider fallback "all providers failed to handle the request" phrasing. Co-Authored-By: Claude Opus 4.7 --- crates/cli/src/commands/order/calldata.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/crates/cli/src/commands/order/calldata.rs b/crates/cli/src/commands/order/calldata.rs index 62a05bda99..eab39f35c0 100644 --- a/crates/cli/src/commands/order/calldata.rs +++ b/crates/cli/src/commands/order/calldata.rs @@ -559,8 +559,6 @@ _ _: 0 0; }; let err = add_order_calldata.execute().await.unwrap_err(); - assert!(err - .to_string() - .contains("all providers failed to handle the request")); + assert!(err.to_string().contains("error sending request")); } } From 528e4e124e59cf6d11464fb5e57786cd742ba88d Mon Sep 17 00:00:00 2001 From: David Meister Date: Fri, 29 May 2026 10:39:24 +0000 Subject: [PATCH 16/27] Update quote-debugger fork-error assertion for rain-forker A failing fork RPC now surfaces rain-forker's "Executor error: HTTP error 400 ..." instead of the old foundry forker's "could not instantiate forked environment" phrasing. Co-Authored-By: Claude Opus 4.7 --- crates/quote/src/quote_debug.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/quote/src/quote_debug.rs b/crates/quote/src/quote_debug.rs index e4e3fbd99e..619804c414 100644 --- a/crates/quote/src/quote_debug.rs +++ b/crates/quote/src/quote_debug.rs @@ -508,7 +508,7 @@ _: 1; assert!(matches!( res, Err(QuoteDebuggerError::ForkerError(err)) - if err.to_string().to_lowercase().contains("could not instantiate forked environment") + if err.to_string().to_lowercase().contains("http error 400") )); } } From e25a17f1b5b3b9570ea15a8b64daeb9eaad87f39 Mon Sep 17 00:00:00 2001 From: David Meister Date: Fri, 29 May 2026 15:13:23 +0000 Subject: [PATCH 17/27] Fix CI: getrandom wasm, error-enum boxing, codehash regen, fmt - bump rain-math-float 0.1.6 -> 0.1.7 (boxed FloatError::DecimalFloat) - common: add getrandom_v04 (wasm_js) so the standalone wasm-pack build works; box erc20::Error in RaindexError / RaindexOrderBuilderError to clear clippy::result_large_err; drop an unused import - js_api: box RaindexOrderBuilderError in the wasm wrapper; allow dead_code on the wasm-only #[wasm_bindgen_test] modules; drop a needless mut - quote: drop unused test imports - regenerate src/generated/*.pointers.sol for the optimizer_runs=800 bytecode (fixes testRuntimeCode* / testExpectedCodeHash*) - forge fmt 5 test files Co-Authored-By: Claude Opus 4.7 --- Cargo.lock | 5 +++-- Cargo.toml | 2 +- crates/common/Cargo.toml | 7 +++++++ crates/common/src/raindex_client/mod.rs | 8 +++++++- crates/common/src/raindex_order_builder/mod.rs | 8 +++++++- crates/common/src/unit_tests.rs | 1 - crates/js_api/src/raindex_order_builder/mod.rs | 12 +++++++++++- crates/js_api/src/registry.rs | 5 ++++- crates/js_api/src/yaml/mod.rs | 3 +++ crates/quote/src/quote.rs | 3 +-- .../GenericPoolRaindexV6FlashBorrower.pointers.sol | 6 +++--- src/generated/RaindexV6.pointers.sol | 8 ++++---- src/generated/RaindexV6SubParser.pointers.sol | 8 ++++---- ...RouteProcessorRaindexV6ArbOrderTaker.pointers.sol | 6 +++--- test/concrete/raindex/RaindexV6.addOrder.mock.t.sol | 4 +++- test/concrete/raindex/RaindexV6.deposit.entask.t.sol | 7 ++++++- test/concrete/raindex/RaindexV6.entask.t.sol | 7 ++++++- .../concrete/raindex/RaindexV6.withdraw.entask.t.sol | 7 ++++++- test/concrete/raindex/RaindexV6.withdraw.t.sol | 4 +++- 19 files changed, 82 insertions(+), 29 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3f64c7d93a..3360c47198 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5467,9 +5467,9 @@ dependencies = [ [[package]] name = "rain-math-float" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8bdd3d50ec4e698d159648b7f2a4600d311465ad98d6d487475f44ed30a2b64" +checksum = "557abda705cbe7f155c0d383bd7a24e2fce0230bc1218527b8ea667c582c0bb7" dependencies = [ "alloy", "getrandom 0.2.16", @@ -5658,6 +5658,7 @@ dependencies = [ "flate2", "futures", "getrandom 0.2.16", + "getrandom 0.4.2", "gloo-timers 0.2.6", "httpmock", "itertools 0.14.0", diff --git a/Cargo.toml b/Cargo.toml index 8a3e654ac8..4506ae851b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,7 +49,7 @@ thirtyfour = "0.31.0" test-context = "0.3.0" portpicker = "0.1.1" rain-erc = "0.1.1" -rain-math-float = "0.1.6" +rain-math-float = "0.1.7" rain-error-decoding = "0.1.2" # Direct dep required: the #[wasm_bindgen] macro emits `::wasm_bindgen` paths, and # without a direct dep the 0.2.122 macro recurses without bound on opaque-class diff --git a/crates/common/Cargo.toml b/crates/common/Cargo.toml index a71f99a0e9..98ba28232a 100644 --- a/crates/common/Cargo.toml +++ b/crates/common/Cargo.toml @@ -75,6 +75,13 @@ tokio = { workspace = true, features = [ ] } serde-wasm-bindgen = "0.4" getrandom = { workspace = true } +# alloy's `rand` feature pulls getrandom 0.4 transitively (via alloy-primitives), +# which needs the `wasm_js` feature on wasm — the .cargo/config getrandom_backend +# cfg only covers 0.2/0.3. common is built standalone by the wasm-pack browser +# tests, so it must enable this itself rather than rely on js_api. +getrandom_v04 = { package = "getrandom", version = "0.4", features = [ + "wasm_js", +] } wasm-bindgen-test = "0.3" wasm-bindgen-futures = "0.4" diff --git a/crates/common/src/raindex_client/mod.rs b/crates/common/src/raindex_client/mod.rs index b85c9255ca..60ace8e102 100644 --- a/crates/common/src/raindex_client/mod.rs +++ b/crates/common/src/raindex_client/mod.rs @@ -476,7 +476,7 @@ pub enum RaindexError { #[error("Invalid vault balance change type: {0}")] InvalidVaultBalanceChangeType(String), #[error(transparent)] - Erc20(#[from] crate::erc20::Error), + Erc20(Box), #[error("Float error: {0}")] Float(#[from] FloatError), #[error("Failed to parse an integer: {0}")] @@ -542,6 +542,12 @@ impl From for RaindexError { } } +impl From for RaindexError { + fn from(err: crate::erc20::Error) -> Self { + Self::Erc20(Box::new(err)) + } +} + impl From for RaindexError { fn from(err: serde_wasm_bindgen::Error) -> Self { RaindexError::SerdeError(err.into()) diff --git a/crates/common/src/raindex_order_builder/mod.rs b/crates/common/src/raindex_order_builder/mod.rs index 573fcd8d59..b2763b5a36 100644 --- a/crates/common/src/raindex_order_builder/mod.rs +++ b/crates/common/src/raindex_order_builder/mod.rs @@ -324,7 +324,7 @@ pub enum RaindexOrderBuilderError { #[error(transparent)] AddOrderArgsError(#[from] crate::add_order::AddOrderArgsError), #[error(transparent)] - ERC20Error(#[from] crate::erc20::Error), + ERC20Error(Box), #[error(transparent)] SolTypesError(#[from] alloy::sol_types::Error), #[error(transparent)] @@ -345,6 +345,12 @@ pub enum RaindexOrderBuilderError { MetaboardSubgraphClientError(#[from] MetaboardSubgraphClientError), } +impl From for RaindexOrderBuilderError { + fn from(err: crate::erc20::Error) -> Self { + Self::ERC20Error(Box::new(err)) + } +} + impl RaindexOrderBuilderError { pub fn to_readable_msg(&self) -> String { match self { diff --git a/crates/common/src/unit_tests.rs b/crates/common/src/unit_tests.rs index 8ea9d33a48..f1d405d14b 100644 --- a/crates/common/src/unit_tests.rs +++ b/crates/common/src/unit_tests.rs @@ -1,5 +1,4 @@ use alloy::primitives::U256; -use alloy::providers::Provider; use dotrain::{error::ComposeError, RainDocument, Rebind}; use futures::TryFutureExt; use proptest::{ diff --git a/crates/js_api/src/raindex_order_builder/mod.rs b/crates/js_api/src/raindex_order_builder/mod.rs index 0557e87c90..356501cb97 100644 --- a/crates/js_api/src/raindex_order_builder/mod.rs +++ b/crates/js_api/src/raindex_order_builder/mod.rs @@ -477,13 +477,19 @@ impl RaindexOrderBuilder { #[derive(Error, Debug)] pub enum RaindexOrderBuilderWasmError { #[error(transparent)] - BuilderError(#[from] RaindexOrderBuilderError), + BuilderError(Box), #[error("JavaScript error: {0}")] JsError(String), #[error(transparent)] SerdeWasmBindgenError(#[from] serde_wasm_bindgen::Error), } +impl From for RaindexOrderBuilderWasmError { + fn from(err: RaindexOrderBuilderError) -> Self { + Self::BuilderError(Box::new(err)) + } +} + impl RaindexOrderBuilderWasmError { pub fn to_readable_msg(&self) -> String { match self { @@ -511,6 +517,10 @@ impl From for WasmEncodedError { #[cfg(test)] mod tests { + // Helpers/tests below are consumed by #[wasm_bindgen_test] cases, which + // don't register as native #[test]s, so they read as dead on the native + // clippy target (rainix-rs-static). + #![allow(dead_code)] use super::*; use raindex_app_settings::order_builder::OrderBuilderPresetCfg; use raindex_app_settings::spec_version::SpecVersion; diff --git a/crates/js_api/src/registry.rs b/crates/js_api/src/registry.rs index 250fd78484..68e66682d2 100644 --- a/crates/js_api/src/registry.rs +++ b/crates/js_api/src/registry.rs @@ -762,6 +762,9 @@ impl DotrainRegistry { #[cfg(test)] mod tests { + // #[wasm_bindgen_test] helpers/cases read as dead on the native clippy + // target (rainix-rs-static); they execute under the wasm test jobs. + #![allow(dead_code)] use super::*; use raindex_app_settings::spec_version::SpecVersion; use std::collections::HashMap; @@ -1598,7 +1601,7 @@ _ _: 1 1; assert!(registry.order_urls.contains_key("second-order")); assert_eq!(registry.orders.len(), 2); - let mut builder1 = registry + let builder1 = registry .get_order_builder("first-order".to_string(), "flare".to_string(), None, None) .await .unwrap(); diff --git a/crates/js_api/src/yaml/mod.rs b/crates/js_api/src/yaml/mod.rs index 596e2ea335..5b723bda00 100644 --- a/crates/js_api/src/yaml/mod.rs +++ b/crates/js_api/src/yaml/mod.rs @@ -210,6 +210,9 @@ impl From for WasmEncodedError { #[cfg(test)] pub(crate) mod tests { + // #[wasm_bindgen_test] helpers/cases read as dead on the native clippy + // target (rainix-rs-static); they execute under the wasm test jobs. + #![allow(dead_code)] use super::*; use raindex_app_settings::spec_version::SpecVersion; use wasm_bindgen_test::wasm_bindgen_test; diff --git a/crates/quote/src/quote.rs b/crates/quote/src/quote.rs index 90515f8c74..33a6bde186 100644 --- a/crates/quote/src/quote.rs +++ b/crates/quote/src/quote.rs @@ -309,10 +309,9 @@ impl BatchQuoteSpec { #[cfg(test)] mod tests { use super::*; - use alloy::hex; use alloy::hex::ToHexExt; + use alloy::primitives::keccak256; use alloy::primitives::Bytes; - use alloy::primitives::{address, keccak256}; use alloy::primitives::{hex::encode_prefixed, U256}; use alloy::sol_types::{SolCall, SolValue}; use httpmock::{Method::POST, MockServer}; diff --git a/src/generated/GenericPoolRaindexV6FlashBorrower.pointers.sol b/src/generated/GenericPoolRaindexV6FlashBorrower.pointers.sol index a7ba008e3a..bf6720072c 100644 --- a/src/generated/GenericPoolRaindexV6FlashBorrower.pointers.sol +++ b/src/generated/GenericPoolRaindexV6FlashBorrower.pointers.sol @@ -10,12 +10,12 @@ pragma solidity ^0.8.25; // file needs the contract to exist so that it can be compiled. /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0xe982d66f503e20de83c2a5bbbb8b724e43dc7bddf70b55d58bdaecf7141c9c25); +bytes32 constant BYTECODE_HASH = bytes32(0x321fb211c7c8e2d33819ad0a17e217837d44a2d5ec930895b00953833c3f7fc0); /// @dev The deterministic deploy address of the contract when deployed via /// the Zoltu factory. -address constant DEPLOYED_ADDRESS = address(0x09B61aC1095680369320bE8B5cb566628B3844dD); +address constant DEPLOYED_ADDRESS = address(0x9eD80a6dead43111DFc5a0D6cE7eFFF3656A2497); /// @dev The runtime bytecode of the contract. bytes constant RUNTIME_CODE = - hex"608060405260043610610034575f3560e01c806301ffc9a71461003d57806323e30c8b146100715780638c18e4ba1461009e57005b3661003b57005b005b348015610048575f80fd5b5061005c61005736600461163a565b6100b1565b60405190151581526020015b60405180910390f35b34801561007c575f80fd5b5061009061008b3660046116c3565b6100e7565b604051908152602001610068565b61003b6100ac36600461173a565b610204565b5f6001600160e01b031982166323e30c8b60e01b14806100e157506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f33737242ce1ffe34297921c54cd7f9343c411e1e77591461012257604051625e1e6f60e51b81523360048201526024015b60405180910390fd5b6001600160a01b0387163014610156576040516322c7df1960e21b81526001600160a01b0388166004820152602401610119565b5f8061016484860186611d3e565b915091506101728282610507565b6040516334e3942b60e11b815233906369c7285690610195908590600401611f57565b60408051808303815f875af11580156101b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d491906120d5565b507f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd99a9950505050505050505050565b61020c61057b565b61021b610218826120f7565b50565b6102286080850185612160565b90505f0361024957604051639c95219f60e01b815260040160405180910390fd5b5f84848460405160200161025f939291906123e4565b60408051601f1981840301815291905290505f61027f6080870187612160565b5f81811061028f5761028f6125f6565b90506020028101906102a1919061260a565b6102ab9080612628565b6102b990606081019061263c565b6102c66080890189612160565b5f8181106102d6576102d66125f6565b90506020028101906102e8919061260a565b604001358181106102fb576102fb6125f6565b6103119260206040909202019081019150612682565b90505f6103216080880188612160565b5f818110610331576103316125f6565b9050602002810190610343919061260a565b61034d9080612628565b61035b90604081019061263c565b61036860808a018a612160565b5f818110610378576103786125f6565b905060200281019061038a919061260a565b6020013581811061039d5761039d6125f6565b6103b39260206040909202019081019150612682565b90505f6103bf826105a9565b90505f6103cb846105a9565b90505f6103d98a358361062d565b90506103f06001600160a01b0385168c5f19610669565b6104056001600160a01b0386168c5f19610669565b604051632e7ff4ef60e11b81526001600160a01b038c1690635cffe9de90610437903090899086908c9060040161269d565b6020604051808303815f875af1158015610453573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061047791906126ce565b610494576040516349088f5960e11b815260040160405180910390fd5b6104a86001600160a01b0386168c5f610669565b6104bc6001600160a01b0385168c5f610669565b6104d16104c8886120f7565b858588866106e3565b50505050505061050060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b5f82608001515f8151811061051e5761051e6125f6565b60200260200101515f01516060015183608001515f81518110610543576105436125f6565b6020026020010151604001518151811061055f5761055f6125f6565b60200260200101515f01519050610576818361097d565b505050565b6105836109d9565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f6105b2610a1d565b6040516354636d2b60e01b81526001600160a01b038316600482015273200e12d10bb0c5e4a17e7018f0f1161919bb9389906354636d2b906024016020604051808303815f875af1158015610609573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e191906126e9565b5f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8316601b0b60e084901d610660828286610aa8565b95945050505050565b6106758383835f610aec565b6105765761068683835f6001610aec565b6106ae57604051635274afe760e01b81526001600160a01b0384166004820152602401610119565b6106bb8383836001610aec565b61057657604051635274afe760e01b81526001600160a01b0384166004820152602401610119565b6040805160018082528183019092525f91816020015b60608152602001906001900390816106f9575050604080516003808252608082019092529192505f919060208201606080368337019050506040516370a0823160e01b81523060048201529091505f906001600160a01b038816906370a0823190602401602060405180830381865afa158015610778573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061079c9190612709565b905080156107b8576107b86001600160a01b0388163383610b4e565b5f6107c38288610b5b565b50905080835f815181106107d9576107d96125f6565b602090810291909101015250506040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa15801561082a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084e9190612709565b9050801561086a5761086a6001600160a01b0386163383610b4e565b5f6108758286610b5b565b509050808360018151811061088c5761088c6125f6565b60209081029190910101525047905080156108ab576108ab3382610b9c565b6108b781601119610c13565b826002815181106108ca576108ca6125f6565b6020026020010181815250505080825f815181106108ea576108ea6125f6565b60209081029190910101526040805160018082528183019092525f91816020015b6040805160a0810182525f918101828152606080830193909352608082018390528152602081019190915281526020019060019003908161090b57905050905087815f8151811061095e5761095e6125f6565b60200260200101819052506109738382610c54565b5050505050505050565b5f805f838060200190518101906109949190612720565b919450925090506109b06001600160a01b038616845f19610669565b6109c46001600160a01b0383168247610e18565b506105006001600160a01b038616845f610669565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054600203610a1b57604051633ee5aeb560e01b815260040160405180910390fd5b565b73200e12d10bb0c5e4a17e7018f0f1161919bb93893b1580610a74575073200e12d10bb0c5e4a17e7018f0f1161919bb93893f7f1de7d717526cba131d684e312dedbf0852adef9cced9e36798ae4937f7145d4114155b15610a1b576040516373e6d7b360e01b815273200e12d10bb0c5e4a17e7018f0f1161919bb93896004820152602401610119565b5f805f610ab6868686610ebe565b9150915080610ae15760405162bc8ecf60e31b81526004810187905260248101869052604401610119565b5090505b9392505050565b60405163095ea7b360e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f51148316610b42578383151615610b36573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b6106bb8383836001610fbd565b5f805f805f610b6a8787611007565b9250925092505f80610b7c8585611063565b9150915081838015610b8b5750815b9650965050505050505b9250929050565b80471015610bc65760405163cf47918160e01b815247600482015260248101829052604401610119565b610bdf828260405180602001604052805f815250611150565b15610be8575050565b3d15610bfa57610bf6611165565b5050565b60405163d6bda27560e01b815260040160405180910390fd5b5f805f610c208585611063565b9150915080610c4c576040516322c9f7bb60e01b81526004810186905260248101859052604401610119565b509392505050565b335f8181523060209081526040808320815160a0810183528083018581526060808301879052608083018190529082528185015282518581529384018581528484019093529093909291905b865181101561097357868181518110610cbb57610cbb6125f6565b602002602001015193505f845f015160400151511115610e10575f845f01515f01516001600160a01b031663d04dfe236040518060e00160405280885f0151602001516001600160a01b03168152602001898152602001885f01516040015181526020015f8152602001610d338d8a60200151611170565b8152602001878152602001868152506040518263ffffffff1660e01b8152600401610d5e9190612806565b5f60405180830381865afa158015610d78573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d9f91908101906128fe565b9150505f81511115610e0e5784516020015160405163012c676d60e21b81526001600160a01b03909116906304b19db490610de0908a9085906004016129aa565b5f604051808303815f87803b158015610df7575f80fd5b505af1158015610e09573d5f803e3d5ffd5b505050505b505b600101610ca0565b606081471015610e445760405163cf47918160e01b815247600482015260248101839052604401610119565b5f610e50858486611150565b9050808015610e7157505f3d1180610e7157505f856001600160a01b03163b115b15610e8657610e7e611452565b915050610ae5565b8015610eb057604051639996b31560e01b81526001600160a01b0386166004820152602401610119565b3d15610bfa57610c4c611165565b5f805f851215610eeb57604051634a7d166b60e01b81526004810186905260248101859052604401610119565b845f03610efd57505f90506001610fb5565b8460ff8416850185811215610f2f5760405163d556b11160e01b81526004810188905260248101879052604401610119565b5f805f831215610f7b57604c19831215610f52575f809550955050505050610fb5565b825f03600a0a9150818481610f6957610f696129ca565b0495505084029091149150610fb59050565b5f831315610faa57610f8e83600a612ad2565b9150610f9a8285612add565b955060019450610fb59350505050565b509193506001925050505b935093915050565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f51148316610b42578383151615610b36573d5f823e3d81fd5b5f808060ff841681037f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86111561105257600a860460018201600a88065f149350935093505061105c565b8593509150600190505b9250925092565b5f601b83900b83148383826110c7577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e10000000000000000008605156110a757620186a0860595506005850194505b8586601b0b146110c257600a860595508460010194506110a7565b6110dd565b855f036110dd57505f925060019150610b959050565b848560030b14611120575f8512156110fd57505f9250829150610b959050565b60405163d556b11160e01b81526004810183905260248101829052604401610119565b50507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1791509250929050565b5f805f83516020850186885af1949350505050565b6040513d5f823e3d81fd5b60605f825167ffffffffffffffff81111561118d5761118d6117e1565b6040519080825280602002602001820160405280156111b6578160200160208202803683370190505b5090505f808451116111c8575f6111ce565b83516001015b85516001010190505f8167ffffffffffffffff8111156111f0576111f06117e1565b60405190808252806020026020018201604052801561122357816020015b606081526020019060019003908161120e5790505b5090505f611247604080516002815233602082015230818301526060810190915290565b828281518110611259576112596125f6565b60200260200101819052505f5b87518110156112b6578180600101925050878181518110611289576112896125f6565b60200260200101518383815181106112a3576112a36125f6565b6020908102919091010152600101611266565b50855115611448578080600101915050838282815181106112d9576112d96125f6565b60200260200101819052505f5b865181101561144657611395878281518110611304576113046125f6565b60200260200101515f01516113726113408a8581518110611327576113276125f6565b6020026020010151602001518051602090810291012090565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c902090565b898481518110611384576113846125f6565b60200260200101516040015161146b565b6113b557604051630a57f30960e31b815260048101829052602401610119565b8681815181106113c7576113c76125f6565b60200260200101515f01516001600160a01b03165f1b8582815181106113ef576113ef6125f6565b6020026020010181815250508180600101925050868181518110611415576114156125f6565b602002602001015160200151838381518110611433576114336125f6565b60209081029190910101526001016112e6565b505b5095945050505050565b6040513d81523d5f602083013e3d602001810160405290565b5f836001600160a01b03163b5f036114c9575f8061148985856114db565b5090925090505f8160038111156114a2576114a2612af4565b1480156114c05750856001600160a01b0316826001600160a01b0316145b92505050610ae5565b6114d4848484611521565b9050610ae5565b5f805f8351604103611512576020840151604085015160608601515f1a61150488828585611572565b95509550955050505061105c565b505081515f915060029061105c565b805160408051630b135d3f60e11b8082526004820186905260248201929092525f92906020820185604483015e60205f60648401838a5afa9050825f5114601f3d1116811693505050509392505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156115ab57505f91506003905082611630565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156115fc573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661162757505f925060019150829050611630565b92505f91508190505b9450945094915050565b5f6020828403121561164a575f80fd5b81356001600160e01b031981168114610ae5575f80fd5b6001600160a01b0381168114610218575f80fd5b803561168081611661565b919050565b5f8083601f840112611695575f80fd5b50813567ffffffffffffffff8111156116ac575f80fd5b602083019150836020828501011115610b95575f80fd5b5f805f805f8060a087890312156116d8575f80fd5b86356116e381611661565b955060208701356116f381611661565b94506040870135935060608701359250608087013567ffffffffffffffff81111561171c575f80fd5b61172889828a01611685565b979a9699509497509295939492505050565b5f805f805f6080868803121561174e575f80fd5b853561175981611661565b9450602086013567ffffffffffffffff80821115611775575f80fd5b9087019060c0828a031215611788575f80fd5b9094506040870135908082111561179d575f80fd5b6117a989838a01611685565b909550935060608801359150808211156117c1575f80fd5b508601604081890312156117d3575f80fd5b809150509295509295909350565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611818576118186117e1565b60405290565b6040805190810167ffffffffffffffff81118282101715611818576118186117e1565b6040516080810167ffffffffffffffff81118282101715611818576118186117e1565b60405160a0810167ffffffffffffffff81118282101715611818576118186117e1565b60405160c0810167ffffffffffffffff81118282101715611818576118186117e1565b604051601f8201601f1916810167ffffffffffffffff811182821017156118d3576118d36117e1565b604052919050565b8015158114610218575f80fd5b8035611680816118db565b5f67ffffffffffffffff82111561190c5761190c6117e1565b5060051b60200190565b5f67ffffffffffffffff82111561192f5761192f6117e1565b50601f01601f191660200190565b5f82601f83011261194c575f80fd5b813561195f61195a82611916565b6118aa565b818152846020838601011115611973575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6060828403121561199f575f80fd5b6119a76117f5565b905081356119b481611661565b815260208201356119c481611661565b6020820152604082013567ffffffffffffffff8111156119e2575f80fd5b6119ee8482850161193d565b60408301525092915050565b5f82601f830112611a09575f80fd5b81356020611a1961195a836118f3565b82815260069290921b84018101918181019086841115611a37575f80fd5b8286015b84811015611a7d5760408189031215611a52575f80fd5b611a5a61181e565b8135611a6581611661565b81528185013585820152835291830191604001611a3b565b509695505050505050565b5f82601f830112611a97575f80fd5b81356020611aa761195a836118f3565b82815260059290921b84018101918181019086841115611ac5575f80fd5b8286015b84811015611a7d57803567ffffffffffffffff80821115611ae8575f80fd5b908801906060828b03601f19011215611aff575f80fd5b611b076117f5565b86830135611b1481611661565b815260408381013583811115611b28575f80fd5b8401603f81018d13611b38575f80fd5b88810135611b4861195a826118f3565b81815260059190911b82018301908a8101908f831115611b66575f80fd5b928401925b82841015611b845783358252928b0192908b0190611b6b565b858c0152505050606084013583811115611b9c575f80fd5b611baa8d8a8388010161193d565b918301919091525085525050918301918301611ac9565b5f82601f830112611bd0575f80fd5b81356020611be061195a836118f3565b82815260059290921b84018101918181019086841115611bfe575f80fd5b8286015b84811015611a7d57803567ffffffffffffffff80821115611c21575f80fd5b90880190601f196080838c0382011215611c39575f80fd5b611c41611841565b8784013583811115611c51575f80fd5b840160a0818e0384011215611c64575f80fd5b611c6c611864565b9250611c79898201611675565b8352604081013584811115611c8c575f80fd5b611c9a8e8b8385010161198f565b8a8501525060608082013585811115611cb1575f80fd5b611cbf8f8c838601016119fa565b604086015250608082013585811115611cd6575f80fd5b611ce48f8c838601016119fa565b828601525060a0820135608085015283835260408601358a8401528086013560408401526080860135935084841115611d1b575f80fd5b611d298e8b86890101611a88565b90830152508652505050918301918301611c02565b5f8060408385031215611d4f575f80fd5b823567ffffffffffffffff80821115611d66575f80fd5b9084019060c08287031215611d79575f80fd5b611d81611887565b823581526020830135602082015260408301356040820152611da5606084016118e8565b6060820152608083013582811115611dbb575f80fd5b611dc788828601611bc1565b60808301525060a083013582811115611dde575f80fd5b611dea8882860161193d565b60a08301525093506020850135915080821115611e05575f80fd5b50611e128582860161193d565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f815180845260208085019450602084015f5b83811015611e8d57815180516001600160a01b031688528301518388015260409096019590820190600101611e5d565b509495945050505050565b5f815180845260208085019450602084015f5b83811015611e8d57815187529582019590820190600101611eab565b5f82825180855260208086019550808260051b8401018186015f5b84811015611f4a57601f19868403018952815160606001600160a01b038251168552858201518187870152611f1982870182611e98565b91505060408083015192508582038187015250611f368183611e1c565b9a86019a9450505090830190600101611ee2565b5090979650505050505050565b5f602080835260e08301845182850152818501516040818187015280870151915060608281880152808801519250608083151560808901526080890151935060a060c060a08a01528585518088526101009750878b019150878160051b8c010189880197505f5b828110156120a6578c820360ff190184528851805187845280516001600160a01b03908116898601528d82015188860189905280518216610120870152808f01519091166101408601528a015161016085018a9052612021610180860182611e1c565b90508a820151607f19808784030160c088015261203e8383611e4a565b92508b8401519150808784030160e08801525061205b8282611e4a565b915050888201518d8601528d8301518e8601528a8301518b8601528983015192508481038a86015261208d8184611ec7565b9b8e019b968e0196945050506001919091019050611fbe565b5060a08d01518c8203601f190160c08e015299506120c4818b611e1c565b9d9c50505050505050505050505050565b5f80604083850312156120e6575f80fd5b505080516020909101519092909150565b5f60408236031215612107575f80fd5b61210f61181e565b823567ffffffffffffffff80821115612126575f80fd5b6121323683870161198f565b83526020850135915080821115612147575f80fd5b5061215436828601611a88565b60208301525092915050565b5f808335601e19843603018112612175575f80fd5b83018035915067ffffffffffffffff82111561218f575f80fd5b6020019150600581901b3603821315610b95575f80fd5b5f808335601e198436030181126121bb575f80fd5b830160208101925035905067ffffffffffffffff8111156121da575f80fd5b8060051b3603821315610b95575f80fd5b5f8235605e198336030181126121ff575f80fd5b90910192915050565b5f808335601e1984360301811261221d575f80fd5b830160208101925035905067ffffffffffffffff81111561223c575f80fd5b803603821315610b95575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f808335601e19843603018112612287575f80fd5b830160208101925035905067ffffffffffffffff8111156122a6575f80fd5b8060061b3603821315610b95575f80fd5b8183525f60208085019450825f5b85811015611e8d5781356122d881611661565b6001600160a01b031687528183013583880152604096870196909101906001016122c5565b8183526020808401935f91600585811b8301820185855b888110156123d657858303601f19018a5261232f82896121eb565b6060813561233c81611661565b6001600160a01b03168552612353828801836121a6565b82898801528083880152608092507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561238d575f80fd5b871b8082888501378601905060406123a784820185612208565b94508388840301828901526123bf848401868361224a565b9e8a019e9750505093870193505050600101612314565b509098975050505050505050565b5f604080835261010080840187358386015260206060818a013581880152848a01356080880152808a0135612418816118db565b151560a088015261242c60808b018b6121a6565b60c0898101529384905261012093848901600582901b8a018601835f5b848110156125a6578c830361011f19018452813536879003607e1901811261246f575f80fd5b8601803536829003609e19018112612485575f80fd5b608085528101803561249681611661565b6001600160a01b0380821660808801526124b28c8401846121eb565b915060a08088015281356124c581611661565b8116878e0152818c01356124d881611661565b166101408701526124eb818f0182612208565b91508a6101608801526125036101808801838361224a565b9150506125128e830183612272565b607f19808985030160c08a015261252a8483856122b7565b93506125388d860186612272565b93509150808985030160e08a0152506125528383836122b7565b9250505060808201358d8701528a8301358b8701528d8301358e87015261257b8a8401846121a6565b935091508581038a8701526125918184846122fd565b968b0196955050509188019150600101612449565b50506125b560a08f018f612208565b8c8303603f190160e08e0152995097506125d0818a8a61224a565b98505050505050858403818701525050506125ec81858761224a565b9695505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f8235607e1983360301811261261e575f80fd5b9190910192915050565b5f8235609e1983360301811261261e575f80fd5b5f808335601e19843603018112612651575f80fd5b83018035915067ffffffffffffffff82111561266b575f80fd5b6020019150600681901b3603821315610b95575f80fd5b5f60208284031215612692575f80fd5b8135610ae581611661565b5f6001600160a01b038087168352808616602084015250836040830152608060608301526125ec6080830184611e1c565b5f602082840312156126de575f80fd5b8151610ae5816118db565b5f602082840312156126f9575f80fd5b815160ff81168114610ae5575f80fd5b5f60208284031215612719575f80fd5b5051919050565b5f805f60608486031215612732575f80fd5b835161273d81611661565b602085015190935061274e81611661565b604085015190925067ffffffffffffffff81111561276a575f80fd5b8401601f8101861361277a575f80fd5b805161278861195a82611916565b81815287602083850101111561279c575f80fd5b8160208401602083015e5f602083830101528093505050509250925092565b5f8282518085526020808601955060208260051b840101602086015f5b84811015611f4a57601f198684030189526127f4838351611e98565b988401989250908301906001016127d8565b602081526001600160a01b038251166020820152602082015160408201525f604083015160e0606084015261283f610100840182611e1c565b9050606084015160808401526080840151601f19808584030160a086015261286783836127bb565b925060a08601519150808584030160c08601526128848383611e98565b925060c08601519150808584030160e0860152506106608282611e98565b5f82601f8301126128b1575f80fd5b815160206128c161195a836118f3565b8083825260208201915060208460051b8701019350868411156128e2575f80fd5b602086015b84811015611a7d57805183529183019183016128e7565b5f806040838503121561290f575f80fd5b825167ffffffffffffffff80821115612926575f80fd5b818501915085601f830112612939575f80fd5b8151602061294961195a836118f3565b82815260059290921b84018101918181019089841115612967575f80fd5b948201945b838610156129855785518252948201949082019061296c565b9188015191965090935050508082111561299d575f80fd5b50611e12858286016128a2565b828152604060208201525f6129c26040830184611e98565b949350505050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115612a2c57815f1904821115612a1257612a126129de565b80851615612a1f57918102915b93841c93908002906129f7565b509250929050565b5f82612a42575060016100e1565b81612a4e57505f6100e1565b8160018114612a645760028114612a6e57612a8a565b60019150506100e1565b60ff841115612a7f57612a7f6129de565b50506001821b6100e1565b5060208310610133831016604e8410600b8410161715612aad575081810a6100e1565b612ab783836129f2565b805f1904821115612aca57612aca6129de565b029392505050565b5f610ae58383612a34565b80820281158282048414176100e1576100e16129de565b634e487b7160e01b5f52602160045260245ffd"; + hex"608060405260043610610034575f3560e01c806301ffc9a71461003d57806323e30c8b146100715780638c18e4ba1461009e57005b3661003b57005b005b348015610048575f80fd5b5061005c6100573660046116a4565b6100b1565b60405190151581526020015b60405180910390f35b34801561007c575f80fd5b5061009061008b36600461172d565b6100e7565b604051908152602001610068565b61003b6100ac3660046117a4565b610204565b5f6001600160e01b031982166323e30c8b60e01b14806100e157506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f3373a560e58c77b8a841f80b4741ad08e9260edcab9f1461012257604051625e1e6f60e51b81523360048201526024015b60405180910390fd5b6001600160a01b0387163014610156576040516322c7df1960e21b81526001600160a01b0388166004820152602401610119565b5f8061016484860186611da8565b915091506101728282610507565b6040516334e3942b60e11b815233906369c7285690610195908590600401611fc1565b60408051808303815f875af11580156101b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d4919061213f565b507f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd99a9950505050505050505050565b61020c61057b565b61021b61021882612161565b50565b61022860808501856121ca565b90505f0361024957604051639c95219f60e01b815260040160405180910390fd5b5f84848460405160200161025f9392919061244e565b60408051601f1981840301815291905290505f61027f60808701876121ca565b5f81811061028f5761028f612660565b90506020028101906102a19190612674565b6102ab9080612692565b6102b99060608101906126a6565b6102c660808901896121ca565b5f8181106102d6576102d6612660565b90506020028101906102e89190612674565b604001358181106102fb576102fb612660565b61031192602060409092020190810191506126ec565b90505f61032160808801886121ca565b5f81811061033157610331612660565b90506020028101906103439190612674565b61034d9080612692565b61035b9060408101906126a6565b61036860808a018a6121ca565b5f81811061037857610378612660565b905060200281019061038a9190612674565b6020013581811061039d5761039d612660565b6103b392602060409092020190810191506126ec565b90505f6103bf826105a9565b90505f6103cb846105a9565b90505f6103d98a358361062d565b90506103f06001600160a01b0385168c5f19610669565b6104056001600160a01b0386168c5f19610669565b604051632e7ff4ef60e11b81526001600160a01b038c1690635cffe9de90610437903090899086908c90600401612707565b6020604051808303815f875af1158015610453573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104779190612738565b610494576040516349088f5960e11b815260040160405180910390fd5b6104a86001600160a01b0386168c5f610669565b6104bc6001600160a01b0385168c5f610669565b6104d16104c888612161565b858588866106e3565b50505050505061050060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b5f82608001515f8151811061051e5761051e612660565b60200260200101515f01516060015183608001515f8151811061054357610543612660565b6020026020010151604001518151811061055f5761055f612660565b60200260200101515f01519050610576818361097d565b505050565b6105836109d9565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f6105b2610a1d565b6040516354636d2b60e01b81526001600160a01b038316600482015273200e12d10bb0c5e4a17e7018f0f1161919bb9389906354636d2b906024016020604051808303815f875af1158015610609573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e19190612753565b5f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8316601b0b60e084901d610660828286610aa8565b95945050505050565b6106758383835f610aec565b6105765761068683835f6001610aec565b6106ae57604051635274afe760e01b81526001600160a01b0384166004820152602401610119565b6106bb8383836001610aec565b61057657604051635274afe760e01b81526001600160a01b0384166004820152602401610119565b6040805160018082528183019092525f91816020015b60608152602001906001900390816106f9575050604080516003808252608082019092529192505f919060208201606080368337019050506040516370a0823160e01b81523060048201529091505f906001600160a01b038816906370a0823190602401602060405180830381865afa158015610778573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061079c9190612773565b905080156107b8576107b86001600160a01b0388163383610b4e565b5f6107c38288610b5b565b50905080835f815181106107d9576107d9612660565b602090810291909101015250506040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa15801561082a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084e9190612773565b9050801561086a5761086a6001600160a01b0386163383610b4e565b5f6108758286610b5b565b509050808360018151811061088c5761088c612660565b60209081029190910101525047905080156108ab576108ab3382610b9c565b6108b781601119610c13565b826002815181106108ca576108ca612660565b6020026020010181815250505080825f815181106108ea576108ea612660565b60209081029190910101526040805160018082528183019092525f91816020015b6040805160a0810182525f918101828152606080830193909352608082018390528152602081019190915281526020019060019003908161090b57905050905087815f8151811061095e5761095e612660565b60200260200101819052506109738382610c54565b5050505050505050565b5f805f83806020019051810190610994919061278a565b919450925090506109b06001600160a01b038616845f19610669565b6109c46001600160a01b0383168247610e18565b506105006001600160a01b038616845f610669565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054600203610a1b57604051633ee5aeb560e01b815260040160405180910390fd5b565b73200e12d10bb0c5e4a17e7018f0f1161919bb93893b1580610a74575073200e12d10bb0c5e4a17e7018f0f1161919bb93893f7f1de7d717526cba131d684e312dedbf0852adef9cced9e36798ae4937f7145d4114155b15610a1b576040516373e6d7b360e01b815273200e12d10bb0c5e4a17e7018f0f1161919bb93896004820152602401610119565b5f805f610ab6868686610ebe565b9150915080610ae15760405162bc8ecf60e31b81526004810187905260248101869052604401610119565b5090505b9392505050565b60405163095ea7b360e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f51148316610b42578383151615610b36573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b6106bb8383836001611027565b5f805f805f610b6a8787611071565b9250925092505f80610b7c85856110cd565b9150915081838015610b8b5750815b9650965050505050505b9250929050565b80471015610bc65760405163cf47918160e01b815247600482015260248101829052604401610119565b610bdf828260405180602001604052805f8152506111ba565b15610be8575050565b3d15610bfa57610bf66111cf565b5050565b60405163d6bda27560e01b815260040160405180910390fd5b5f805f610c2085856110cd565b9150915080610c4c576040516322c9f7bb60e01b81526004810186905260248101859052604401610119565b509392505050565b335f8181523060209081526040808320815160a0810183528083018581526060808301879052608083018190529082528185015282518581529384018581528484019093529093909291905b865181101561097357868181518110610cbb57610cbb612660565b602002602001015193505f845f015160400151511115610e10575f845f01515f01516001600160a01b031663d04dfe236040518060e00160405280885f0151602001516001600160a01b03168152602001898152602001885f01516040015181526020015f8152602001610d338d8a602001516111da565b8152602001878152602001868152506040518263ffffffff1660e01b8152600401610d5e9190612870565b5f60405180830381865afa158015610d78573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d9f9190810190612968565b9150505f81511115610e0e5784516020015160405163012c676d60e21b81526001600160a01b03909116906304b19db490610de0908a908590600401612a14565b5f604051808303815f87803b158015610df7575f80fd5b505af1158015610e09573d5f803e3d5ffd5b505050505b505b600101610ca0565b606081471015610e445760405163cf47918160e01b815247600482015260248101839052604401610119565b5f610e508584866111ba565b9050808015610e7157505f3d1180610e7157505f856001600160a01b03163b115b15610e8657610e7e6114bc565b915050610ae5565b8015610eb057604051639996b31560e01b81526001600160a01b0386166004820152602401610119565b3d15610bfa57610c4c6111cf565b5f805f851215610eeb57604051634a7d166b60e01b81526004810186905260248101859052604401610119565b845f03610efd57505f9050600161101f565b8460ff8416850185811215610f2f5760405163d556b11160e01b81526004810188905260248101879052604401610119565b5f805f831215610f7b57604c19831215610f52575f80955095505050505061101f565b825f03600a0a9150818481610f6957610f69612a34565b049550508402909114915061101f9050565b5f83131561101457604d831315610fb85760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610119565b82600a0a9150815f1981610fce57610fce612a34565b048411156110025760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610119565b509190910292506001915061101f9050565b509193506001925050505b935093915050565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f51148316610b42578383151615610b36573d5f823e3d81fd5b5f808060ff841681037f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8611156110bc57600a860460018201600a88065f14935093509350506110c6565b8593509150600190505b9250925092565b5f601b83900b8314838382611131577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e100000000000000000086051561111157620186a0860595506005850194505b8586601b0b1461112c57600a86059550846001019450611111565b611147565b855f0361114757505f925060019150610b959050565b848560030b1461118a575f85121561116757505f9250829150610b959050565b60405163d556b11160e01b81526004810183905260248101829052604401610119565b50507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1791509250929050565b5f805f83516020850186885af1949350505050565b6040513d5f823e3d81fd5b60605f825167ffffffffffffffff8111156111f7576111f761184b565b604051908082528060200260200182016040528015611220578160200160208202803683370190505b5090505f80845111611232575f611238565b83516001015b85516001010190505f8167ffffffffffffffff81111561125a5761125a61184b565b60405190808252806020026020018201604052801561128d57816020015b60608152602001906001900390816112785790505b5090505f6112b1604080516002815233602082015230818301526060810190915290565b8282815181106112c3576112c3612660565b60200260200101819052505f5b87518110156113205781806001019250508781815181106112f3576112f3612660565b602002602001015183838151811061130d5761130d612660565b60209081029190910101526001016112d0565b508551156114b25780806001019150508382828151811061134357611343612660565b60200260200101819052505f5b86518110156114b0576113ff87828151811061136e5761136e612660565b60200260200101515f01516113dc6113aa8a858151811061139157611391612660565b6020026020010151602001518051602090810291012090565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c902090565b8984815181106113ee576113ee612660565b6020026020010151604001516114d5565b61141f57604051630a57f30960e31b815260048101829052602401610119565b86818151811061143157611431612660565b60200260200101515f01516001600160a01b03165f1b85828151811061145957611459612660565b602002602001018181525050818060010192505086818151811061147f5761147f612660565b60200260200101516020015183838151811061149d5761149d612660565b6020908102919091010152600101611350565b505b5095945050505050565b6040513d81523d5f602083013e3d602001810160405290565b5f836001600160a01b03163b5f03611533575f806114f38585611545565b5090925090505f81600381111561150c5761150c612a48565b14801561152a5750856001600160a01b0316826001600160a01b0316145b92505050610ae5565b61153e84848461158b565b9050610ae5565b5f805f835160410361157c576020840151604085015160608601515f1a61156e888285856115dc565b9550955095505050506110c6565b505081515f91506002906110c6565b805160408051630b135d3f60e11b8082526004820186905260248201929092525f92906020820185604483015e60205f60648401838a5afa9050825f5114601f3d1116811693505050509392505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561161557505f9150600390508261169a565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611666573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661169157505f92506001915082905061169a565b92505f91508190505b9450945094915050565b5f602082840312156116b4575f80fd5b81356001600160e01b031981168114610ae5575f80fd5b6001600160a01b0381168114610218575f80fd5b80356116ea816116cb565b919050565b5f8083601f8401126116ff575f80fd5b50813567ffffffffffffffff811115611716575f80fd5b602083019150836020828501011115610b95575f80fd5b5f805f805f8060a08789031215611742575f80fd5b863561174d816116cb565b9550602087013561175d816116cb565b94506040870135935060608701359250608087013567ffffffffffffffff811115611786575f80fd5b61179289828a016116ef565b979a9699509497509295939492505050565b5f805f805f608086880312156117b8575f80fd5b85356117c3816116cb565b9450602086013567ffffffffffffffff808211156117df575f80fd5b9087019060c0828a0312156117f2575f80fd5b90945060408701359080821115611807575f80fd5b61181389838a016116ef565b9095509350606088013591508082111561182b575f80fd5b5086016040818903121561183d575f80fd5b809150509295509295909350565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156118825761188261184b565b60405290565b6040805190810167ffffffffffffffff811182821017156118825761188261184b565b6040516080810167ffffffffffffffff811182821017156118825761188261184b565b60405160a0810167ffffffffffffffff811182821017156118825761188261184b565b60405160c0810167ffffffffffffffff811182821017156118825761188261184b565b604051601f8201601f1916810167ffffffffffffffff8111828210171561193d5761193d61184b565b604052919050565b8015158114610218575f80fd5b80356116ea81611945565b5f67ffffffffffffffff8211156119765761197661184b565b5060051b60200190565b5f67ffffffffffffffff8211156119995761199961184b565b50601f01601f191660200190565b5f82601f8301126119b6575f80fd5b81356119c96119c482611980565b611914565b8181528460208386010111156119dd575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608284031215611a09575f80fd5b611a1161185f565b90508135611a1e816116cb565b81526020820135611a2e816116cb565b6020820152604082013567ffffffffffffffff811115611a4c575f80fd5b611a58848285016119a7565b60408301525092915050565b5f82601f830112611a73575f80fd5b81356020611a836119c48361195d565b82815260069290921b84018101918181019086841115611aa1575f80fd5b8286015b84811015611ae75760408189031215611abc575f80fd5b611ac4611888565b8135611acf816116cb565b81528185013585820152835291830191604001611aa5565b509695505050505050565b5f82601f830112611b01575f80fd5b81356020611b116119c48361195d565b82815260059290921b84018101918181019086841115611b2f575f80fd5b8286015b84811015611ae757803567ffffffffffffffff80821115611b52575f80fd5b908801906060828b03601f19011215611b69575f80fd5b611b7161185f565b86830135611b7e816116cb565b815260408381013583811115611b92575f80fd5b8401603f81018d13611ba2575f80fd5b88810135611bb26119c48261195d565b81815260059190911b82018301908a8101908f831115611bd0575f80fd5b928401925b82841015611bee5783358252928b0192908b0190611bd5565b858c0152505050606084013583811115611c06575f80fd5b611c148d8a838801016119a7565b918301919091525085525050918301918301611b33565b5f82601f830112611c3a575f80fd5b81356020611c4a6119c48361195d565b82815260059290921b84018101918181019086841115611c68575f80fd5b8286015b84811015611ae757803567ffffffffffffffff80821115611c8b575f80fd5b90880190601f196080838c0382011215611ca3575f80fd5b611cab6118ab565b8784013583811115611cbb575f80fd5b840160a0818e0384011215611cce575f80fd5b611cd66118ce565b9250611ce38982016116df565b8352604081013584811115611cf6575f80fd5b611d048e8b838501016119f9565b8a8501525060608082013585811115611d1b575f80fd5b611d298f8c83860101611a64565b604086015250608082013585811115611d40575f80fd5b611d4e8f8c83860101611a64565b828601525060a0820135608085015283835260408601358a8401528086013560408401526080860135935084841115611d85575f80fd5b611d938e8b86890101611af2565b90830152508652505050918301918301611c6c565b5f8060408385031215611db9575f80fd5b823567ffffffffffffffff80821115611dd0575f80fd5b9084019060c08287031215611de3575f80fd5b611deb6118f1565b823581526020830135602082015260408301356040820152611e0f60608401611952565b6060820152608083013582811115611e25575f80fd5b611e3188828601611c2b565b60808301525060a083013582811115611e48575f80fd5b611e54888286016119a7565b60a08301525093506020850135915080821115611e6f575f80fd5b50611e7c858286016119a7565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f815180845260208085019450602084015f5b83811015611ef757815180516001600160a01b031688528301518388015260409096019590820190600101611ec7565b509495945050505050565b5f815180845260208085019450602084015f5b83811015611ef757815187529582019590820190600101611f15565b5f82825180855260208086019550808260051b8401018186015f5b84811015611fb457601f19868403018952815160606001600160a01b038251168552858201518187870152611f8382870182611f02565b91505060408083015192508582038187015250611fa08183611e86565b9a86019a9450505090830190600101611f4c565b5090979650505050505050565b5f602080835260e08301845182850152818501516040818187015280870151915060608281880152808801519250608083151560808901526080890151935060a060c060a08a01528585518088526101009750878b019150878160051b8c010189880197505f5b82811015612110578c820360ff190184528851805187845280516001600160a01b03908116898601528d82015188860189905280518216610120870152808f01519091166101408601528a015161016085018a905261208b610180860182611e86565b90508a820151607f19808784030160c08801526120a88383611eb4565b92508b8401519150808784030160e0880152506120c58282611eb4565b915050888201518d8601528d8301518e8601528a8301518b8601528983015192508481038a8601526120f78184611f31565b9b8e019b968e0196945050506001919091019050612028565b5060a08d01518c8203601f190160c08e0152995061212e818b611e86565b9d9c50505050505050505050505050565b5f8060408385031215612150575f80fd5b505080516020909101519092909150565b5f60408236031215612171575f80fd5b612179611888565b823567ffffffffffffffff80821115612190575f80fd5b61219c368387016119f9565b835260208501359150808211156121b1575f80fd5b506121be36828601611af2565b60208301525092915050565b5f808335601e198436030181126121df575f80fd5b83018035915067ffffffffffffffff8211156121f9575f80fd5b6020019150600581901b3603821315610b95575f80fd5b5f808335601e19843603018112612225575f80fd5b830160208101925035905067ffffffffffffffff811115612244575f80fd5b8060051b3603821315610b95575f80fd5b5f8235605e19833603018112612269575f80fd5b90910192915050565b5f808335601e19843603018112612287575f80fd5b830160208101925035905067ffffffffffffffff8111156122a6575f80fd5b803603821315610b95575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f808335601e198436030181126122f1575f80fd5b830160208101925035905067ffffffffffffffff811115612310575f80fd5b8060061b3603821315610b95575f80fd5b8183525f60208085019450825f5b85811015611ef7578135612342816116cb565b6001600160a01b0316875281830135838801526040968701969091019060010161232f565b8183526020808401935f91600585811b8301820185855b8881101561244057858303601f19018a526123998289612255565b606081356123a6816116cb565b6001600160a01b031685526123bd82880183612210565b82898801528083880152608092507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111156123f7575f80fd5b871b80828885013786019050604061241184820185612272565b945083888403018289015261242984840186836122b4565b9e8a019e975050509387019350505060010161237e565b509098975050505050505050565b5f604080835261010080840187358386015260206060818a013581880152848a01356080880152808a013561248281611945565b151560a088015261249660808b018b612210565b60c0898101529384905261012093848901600582901b8a018601835f5b84811015612610578c830361011f19018452813536879003607e190181126124d9575f80fd5b8601803536829003609e190181126124ef575f80fd5b6080855281018035612500816116cb565b6001600160a01b03808216608088015261251c8c840184612255565b915060a080880152813561252f816116cb565b8116878e0152818c0135612542816116cb565b16610140870152612555818f0182612272565b91508a61016088015261256d610180880183836122b4565b91505061257c8e8301836122dc565b607f19808985030160c08a0152612594848385612321565b93506125a28d8601866122dc565b93509150808985030160e08a0152506125bc838383612321565b9250505060808201358d8701528a8301358b8701528d8301358e8701526125e58a840184612210565b935091508581038a8701526125fb818484612367565b968b01969550505091880191506001016124b3565b505061261f60a08f018f612272565b8c8303603f190160e08e01529950975061263a818a8a6122b4565b98505050505050858403818701525050506126568185876122b4565b9695505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f8235607e19833603018112612688575f80fd5b9190910192915050565b5f8235609e19833603018112612688575f80fd5b5f808335601e198436030181126126bb575f80fd5b83018035915067ffffffffffffffff8211156126d5575f80fd5b6020019150600681901b3603821315610b95575f80fd5b5f602082840312156126fc575f80fd5b8135610ae5816116cb565b5f6001600160a01b038087168352808616602084015250836040830152608060608301526126566080830184611e86565b5f60208284031215612748575f80fd5b8151610ae581611945565b5f60208284031215612763575f80fd5b815160ff81168114610ae5575f80fd5b5f60208284031215612783575f80fd5b5051919050565b5f805f6060848603121561279c575f80fd5b83516127a7816116cb565b60208501519093506127b8816116cb565b604085015190925067ffffffffffffffff8111156127d4575f80fd5b8401601f810186136127e4575f80fd5b80516127f26119c482611980565b818152876020838501011115612806575f80fd5b8160208401602083015e5f602083830101528093505050509250925092565b5f8282518085526020808601955060208260051b840101602086015f5b84811015611fb457601f1986840301895261285e838351611f02565b98840198925090830190600101612842565b602081526001600160a01b038251166020820152602082015160408201525f604083015160e060608401526128a9610100840182611e86565b9050606084015160808401526080840151601f19808584030160a08601526128d18383612825565b925060a08601519150808584030160c08601526128ee8383611f02565b925060c08601519150808584030160e0860152506106608282611f02565b5f82601f83011261291b575f80fd5b8151602061292b6119c48361195d565b8083825260208201915060208460051b87010193508684111561294c575f80fd5b602086015b84811015611ae75780518352918301918301612951565b5f8060408385031215612979575f80fd5b825167ffffffffffffffff80821115612990575f80fd5b818501915085601f8301126129a3575f80fd5b815160206129b36119c48361195d565b82815260059290921b840181019181810190898411156129d1575f80fd5b948201945b838610156129ef578551825294820194908201906129d6565b91880151919650909350505080821115612a07575f80fd5b50611e7c8582860161290c565b828152604060208201525f612a2c6040830184611f02565b949350505050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd"; diff --git a/src/generated/RaindexV6.pointers.sol b/src/generated/RaindexV6.pointers.sol index 42e8a3c91d..2fa97af570 100644 --- a/src/generated/RaindexV6.pointers.sol +++ b/src/generated/RaindexV6.pointers.sol @@ -10,16 +10,16 @@ pragma solidity ^0.8.25; // file needs the contract to exist so that it can be compiled. /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0x05c4c5cd666dbff68b8694f1c185be755eb199752d4dbc009df19f1c2b4c1d92); +bytes32 constant BYTECODE_HASH = bytes32(0xac3eb006e3bbcd11656814bcb005c0d72dc424387bfb70976a56a521a53bcd6c); /// @dev The deterministic deploy address of the contract when deployed via /// the Zoltu factory. -address constant DEPLOYED_ADDRESS = address(0x7242ce1ffe34297921c54cD7f9343c411E1E7759); +address constant DEPLOYED_ADDRESS = address(0xa560e58C77B8A841f80B4741Ad08E9260Edcab9F); /// @dev The creation bytecode of the contract. bytes constant CREATION_CODE = - hex"6080604052348015600e575f80fd5b5060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055615b8d806100405f395ff3fe608060405234801561000f575f80fd5b50600436106100f0575f3560e01c8063613255ab11610093578063ac9650d811610063578063ac9650d81461022b578063d7e442ec1461024b578063d9d98ce41461025e578063fa50118214610273575f80fd5b8063613255ab146101ad57806369c72856146101c0578063709fb8a5146101e85780639235084d146101fb575f80fd5b80632fbc4ba0116100ce5780632fbc4ba01461015157806341d1514f146101665780635cffe9de14610187578063607461191461019a575f80fd5b806301ffc9a7146100f45780631f69cb751461011c5780632cb77e9f1461012f575b5f80fd5b61010761010236600461458d565b610286565b60405190151581526020015b60405180910390f35b61010761012a3660046145f5565b6102bc565b61010761013d366004614660565b5f9081526020819052604090205460011490565b61016461015f366004614696565b610404565b005b6101796101743660046146fb565b61054a565b604051908152602001610113565b610107610195366004614739565b61055e565b6101646101a8366004614696565b61065e565b6101796101bb3660046147d0565b6107f1565b6101d36101ce366004614801565b610859565b60408051928352602083019190915201610113565b6101076101f6366004614833565b610efc565b61020e61020936600461487d565b6111c5565b604080519315158452602084019290925290820152606001610113565b61023e6102393660046148b4565b611286565b6040516101139190614921565b6101646102593660046148b4565b61136c565b61017961026c366004614983565b5f92915050565b610164610281366004614df5565b6113c6565b5f6001600160e01b0319821663e414309160e01b14806102b657506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f6102c5611865565b6102d260208501856147d0565b6001600160a01b0316336001600160a01b031614610321576102f760208501856147d0565b6040516335252be360e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b5f61033361032e86614eaf565b611880565b5f818152602081905260409020549091505f19016103e6575f818152602081905260408082209190915551600192507f09d18501db0080ca2d6cd7c17fa7255daff4b2d503ea93b76ff68b6752ea8e639061039390339084908990614ffc565b60405180910390a16040805160028152602081018390523381830152606081019091526103e6906103d7905b60408051600181526020810192909252818101905290565b6103e185876150c0565b6118af565b506103fd60015f80516020615b6d83398151915255565b9392505050565b61040c611865565b33858561041a838383611a7d565b610424865f611ab3565b610459576040516306dde9c360e41b81523360048201526001600160a01b038916602482015260448101889052606401610318565b5f80610466338b8a611aed565b604080513381526001600160a01b038e1660208201529081018c90526060810183905291935091507f7f9dfa19cf1cc2f806f2f860fbc9c056b601fb1afc0e9b843dfe5c63616268e69060800160405180910390a15f806104c9338d8d8d611bc7565b909250905087156105265760408051600581526001600160a01b038e1660208201528082018d9052606081018490526080810183905260ff851660a082015260c081019091526105269061051c906103bf565b6103e18a8c6150c0565b5050505050505061054360015f80516020615b6d83398151915255565b5050505050565b5f610556848484611cb7565b949350505050565b5f6105736001600160a01b0386168786611e60565b6040516323e30c8b60e01b81525f906001600160a01b038816906323e30c8b906105ab9033908a908a9087908b908b90600401615180565b6020604051808303815f875af11580156105c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105eb91906151c4565b90507f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9811461063057604051630b6c58a960e31b815260048101829052602401610318565b610651873061063f5f896151ef565b6001600160a01b038a16929190611e95565b5060019695505050505050565b610666611865565b338585610674838383611a7d565b5f8080806106828a82611ab3565b6106b657604051623a3a4d60e21b81523360048201526001600160a01b038d166024820152604481018c9052606401610318565b5f6106c2338e8e611cb7565b90506106ce8b82611ed1565b94506106dc338e8e88611eed565b90935091505f6106ed338f88611f64565b80965081925050507f8045c25080b0868951141ed0a91720bcad09a8364a2b3109ee1fd49c1f0bc8b8338f8f8f8a8660405161075f969594939291906001600160a01b03968716815294909516602085015260408401929092526060830152608082015260a081019190915260c00190565b60405180910390a1505060408051600681526001600160a01b038e1660208201528082018d9052606081018490526080810183905260a081018c905260ff851660c0820152600160e08201908152610100820182905261012082019092529089156107d2576107d2816103e18c8e6150c0565b50505050505050505061054360015f80516020615b6d83398151915255565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610835573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b691906151c4565b5f80610863611865565b6108706080840184615202565b90505f0361089157604051639c95219f60e01b815260040160405180910390fd5b6108996144b5565b6108a16144e1565b5f6108af6080870187615202565b5f8181106108bf576108bf615248565b90506020028101906108d1919061525c565b6108db908061527a565b6108e990604081019061528e565b6108f66080890189615202565b5f81811061090657610906615248565b9050602002810190610918919061525c565b6020013581811061092b5761092b615248565b61094192602060409092020190810191506147d0565b90505f6109516080880188615202565b5f81811061096157610961615248565b9050602002810190610973919061525c565b61097d908061527a565b61098b90606081019061528e565b61099860808a018a615202565b5f8181106109a8576109a8615248565b90506020028101906109ba919061525c565b604001358181106109cd576109cd615248565b6109e392602060409092020190810191506147d0565b905060605f6109f560808a018a615202565b6040805160206001939093018302810190915293508a01359150610a1b9050815f611ab3565b610a385760405163315f9e2360e21b815260040160405180910390fd5b5f5b610a4760808b018b615202565b905081108015610a5c5750610a5c825f611ab3565b15610db957610a6e60808b018b615202565b82818110610a7e57610a7e615248565b9050602002810190610a90919061525c565b610a99906152d4565b9650865f01519550846001600160a01b03168660400151886020015181518110610ac557610ac5615248565b60200260200101515f01516001600160a01b0316141580610b1c5750836001600160a01b03168660600151886040015181518110610b0557610b05615248565b60200260200101515f01516001600160a01b031614155b15610b3a5760405163936bb5ad60e01b815260040160405180910390fd5b610b4d8688602001518960400151612027565b5f610b5787611880565b5f81815260208190526040902054909150610bbc578651604080513381526001600160a01b03909216602083015281018290527fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f39060600160405180910390a1610db0565b5f610bd6888a602001518b60400151338d60600151612099565b6060810151909150610bec9060408e0135611ab3565b15610c42578751604080513381526001600160a01b03909216602083015281018390527fe3151dc8cb7a54ffc4baabd28c1f241c94d510b5e5b502491ac3cad6c16316d5906060015b60405180910390a1610dae565b60408101516001600160e01b0316610c9c578751604080513381526001600160a01b03909216602083015281018390527f500b713857325f9e6dcb52ae832eca9109d107ed1aae9cb4928b4c1e13f051aa90606001610c35565b5f808d6060016020810190610cb1919061536a565b15610cea576040830151610cc59087611ed1565b6060840151909250610cd79083612657565b9050610ce386836126a5565b9550610d3b565b5f610d068460400151856060015161265790919063ffffffff16565b9050610d128188611ed1565b9150610d2b8460600151836126d590919063ffffffff16565b9250610d3787836126a5565b9650505b610d458c82612705565b9b50610d518d83612705565b9c50610d5e818385612735565b7f194f1feb3b4d7076a2c272e774e792e0c48bb8c7aa1a9a3671c1cd6da9e6b4c1338c8484604051610d939493929190615492565b60405180910390a15050845160010180865260200285018190525b505b50600101610a3a565b505f9050610dcd60808a0160608b0161536a565b610dd75786610dd9565b875b9050610de6818a356128fd565b15610e0e5760405163573b6f4160e01b81528935600482015260248101829052604401610318565b50610e1a338389611f64565b505f9050610e2b60a08a018a61557c565b90501115610e99573363691f9ed783858a8a610e4a60a08f018f61557c565b6040518763ffffffff1660e01b8152600401610e6b96959493929190615180565b5f604051808303815f87803b158015610e82575f80fd5b505af1158015610e94573d5f803e3d5ffd5b505050505b610ea4338488611aed565b50505f5b8151811015610edb57610ed3828281518110610ec657610ec6615248565b6020026020010151612937565b600101610ea8565b505050505050610ef760015f80516020615b6d83398151915255565b915091565b5f610f05611865565b610f12602085018561528e565b90505f03610f3357604051636c44ef8f60e01b815260040160405180910390fd5b610f40604085018561528e565b90505f03610f615760405163540e5f0b60e01b815260040160405180910390fd5b6040805160a081019091523381525f9060208101610f7f87806155bf565b610f88906155d3565b8152602001868060200190610f9d919061528e565b808060200260200160405190810160405280939291908181526020015f905b82821015610fe857610fd9604083028601368190038101906155de565b81526020019060010190610fbc565b5050509183525050602001611000604088018861528e565b808060200260200160405190810160405280939291908181526020015f905b8282101561104b5761103c604083028601368190038101906155de565b8152602001906001019061101f565b50505050508152602001866060013581525090505f61106982611880565b5f818152602081905260409020549091501580156111ab575f828152602081905260409081902060019055835190517f87491344dfbcf91f6cbbc610cbbeedc85313d37a02df0c93527f7ea5f8db717f916110c791859087906155f8565b60405180910390a15f6110dd60a089018961557c565b905011156111795761112e6110f560a089018961557c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250612b7a92505050565b82517fd46c2c56b35c8210e9e712ec3f02242d5fc90187c0ac8ed80cc33626846ec369908361116060a08b018b61557c565b604051611170949392919061561f565b60405180910390a15b6040805160028152602081018490523381830152606081019091526111ab906111a1906103bf565b6103e187896150c0565b925050506103fd60015f80516020615b6d83398151915255565b5f8080806111df6111d6868061527a565b61032e90614eaf565b5f8181526020819052604090205490915060011461120657505f925082915081905061127f565b61122b611213868061527a565b61121c90614eaf565b86602001358760400135612027565b5f611268611239878061527a565b61124290614eaf565b602088013560408901353361125a60608c018c615202565b61126391615651565b612099565b905060018160400151826060015194509450945050505b9193909250565b604080515f8152602081019091526060908267ffffffffffffffff8111156112b0576112b06149ad565b6040519080825280602002602001820160405280156112e357816020015b60608152602001906001900390816112ce5790505b5091505f5b838110156113645761133f3086868481811061130657611306615248565b9050602002810190611318919061557c565b8560405160200161132b9392919061565d565b604051602081830303815290604052612ba5565b83828151811061135157611351615248565b60209081029190910101526001016112e8565b505092915050565b611374611865565b604080515f808252602082019092526113ac916113a1565b606081526020019060019003908161138c5790505b506103e183856150c0565b6113c260015f80516020615b6d83398151915255565b5050565b6113ce611865565b835185516001600160a01b039182169116036113fd57604051630a98f1f360e21b815260040160405180910390fd5b836040015183604001358151811061141757611417615248565b60200260200101515f01516001600160a01b0316856060015184602001358151811061144557611445615248565b60200260200101515f01516001600160a01b03161415806114be575060408501518051843590811061147957611479615248565b60200260200101515f01516001600160a01b031684606001518460600135815181106114a7576114a7615248565b60200260200101515f01516001600160a01b031614155b156114dc5760405163936bb5ad60e01b815260040160405180910390fd5b84606001518360200135815181106114f6576114f6615248565b60200260200101515f01516001600160a01b03168560400151845f01358151811061152357611523615248565b60200260200101515f01516001600160a01b03160361155557604051631cd2f1c760e21b815260040160405180910390fd5b5f805f61156188611880565b81526020019081526020015f2054036115d1577fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f333865f01516115a388611880565b604080516001600160a01b0394851681529390921660208401529082015260600160405180910390a161184f565b5f805f6115dd87611880565b81526020019081526020015f20540361161f577fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f333855f01516115a387611880565b7f6fa7f4c28634b0a9d6831401c45ae468195fb63aed07308935c35374ff5d9e39338686866040516116549493929190615680565b60405180910390a15f61167486855f01358660200135885f015186612099565b90505f61168f86866040013587606001358a5f015188612099565b90505f61169c8383612c45565b90506116b08160400151825f015185612735565b6116c38160600151826020015184612735565b606081015181515f916116d691906126a5565b90505f6116f4836040015184602001516126a590919063ffffffff16565b9050611700825f6128fd565b806117105750611710815f6128fd565b1561172e57604051630d86822160e01b815260040160405180910390fd5b611762338b606001518a602001358151811061174c5761174c615248565b60200260200101515f01518a6080013585611bc7565b5050611798338a606001518a606001358151811061178257611782615248565b60200260200101515f01518a60a0013584611bc7565b5050604080513381528451602080830191909152850151818301529084015160608083019190915284015160808201527fd9fa84dd790c969daa5c33d8050dc06b4a9b59d5b42e2be5f5e8ae20447f618d925060a001905060405180910390a161180183612937565b61180a82612937565b80516001600160e01b031615801561182d575060208101516001600160e01b0316155b1561184b576040516321badf1f60e01b815260040160405180910390fd5b5050505b61054360015f80516020615b6d83398151915255565b61186d612c93565b60025f80516020615b6d83398151915255565b5f8160405160200161189291906156fc565b604051602081830303815290604052805190602001209050919050565b335f8181523060209081526040808320815160a0810183528083018581526060808301879052608083018190529082528185015282518581529384018581528484019093529093909291905b8651811015611a735786818151811061191657611916615248565b602002602001015193505f845f015160400151511115611a6b575f845f01515f01516001600160a01b031663d04dfe236040518060e00160405280885f0151602001516001600160a01b03168152602001898152602001885f01516040015181526020015f815260200161198e8d8a60200151612cc4565b8152602001878152602001868152506040518263ffffffff1660e01b81526004016119b99190615766565b5f60405180830381865afa1580156119d3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119fa919081019061585e565b9150505f81511115611a695784516020015160405163012c676d60e21b81526001600160a01b03909116906304b19db490611a3b908a908590600401615914565b5f604051808303815f87803b158015611a52575f80fd5b505af1158015611a64573d5f803e3d5ffd5b505050505b505b6001016118fb565b5050505050505050565b80611aae576040516305dbdfd960e41b81526001600160a01b03808516600483015283166024820152604401610318565b505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d611ae184848484612fa6565b12979650505050505050565b5f805f80611afa8661307a565b90925090506001826003811115611b1357611b1361592c565b14158015611b3257505f826003811115611b2f57611b2f61592c565b14155b15611b5457858260405163ee07877f60e01b8152600401610318929190615940565b611b5e855f6128fd565b15611b7c57604051632eaefac360e21b815260040160405180910390fd5b5f80611b888784613107565b9150915080611b9d57611b9a82615979565b91505b8115611bb857611bb86001600160a01b0389168a3085611e95565b5093509150505b935093915050565b5f80611bd383826128fd565b15611bf45760405163793a8f5560e01b815260048101849052602401610318565b83611c1257611c04868685611f64565b505f9250829150611cae9050565b6001600160a01b038087165f908152600160209081526040808320938916835292815282822087835290529081205490611c4c8286612705565b9050611c58815f6128fd565b15611c795760405163c5e12af560e01b815260048101829052602401610318565b6001600160a01b038089165f908152600160209081526040808320938b16835292815282822089835290522081905590925090505b94509492505050565b5f8115611cf157506001600160a01b038084165f9081526001602090815260408083209386168352928152828220848352905220546103fd565b5f80611cfc85613134565b90925090506001826003811115611d1557611d1561592c565b14158015611d3457505f826003811115611d3157611d3161592c565b14155b15611d5657848260405163ee07877f60e01b8152600401610318929190615940565b6040516370a0823160e01b81526001600160a01b0387811660048301525f91611dca918816906370a0823190602401602060405180830381865afa158015611da0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc491906151c4565b83613193565b604051636eb1769f60e11b81526001600160a01b0389811660048301523060248301529192505f91611e48919089169063dd62ed3e90604401602060405180830381865afa158015611e1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e4291906151c4565b846131b7565b509050611e558282611ed1565b9450505050506103fd565b611e6d83838360016131f7565b611aae57604051635274afe760e01b81526001600160a01b0384166004820152602401610318565b611ea3848484846001613259565b611ecb57604051635274afe760e01b81526001600160a01b0385166004820152602401610318565b50505050565b5f611edc83836128fd565b611ee657816103fd565b5090919050565b5f80611ef983826128fd565b15611f1a5760405163793a8f5560e01b815260048101849052602401610318565b83611f2a57611c04868685611aed565b6001600160a01b038087165f908152600160209081526040808320938916835292815282822087835290529081205490611c4c82866126a5565b5f805f80611f718661307a565b90925090506001826003811115611f8a57611f8a61592c565b14158015611fa957505f826003811115611fa657611fa661592c565b14155b15611fcb57858260405163ee07877f60e01b8152600401610318929190615940565b611fd5855f6128fd565b15611ff357604051632d1671a360e11b815260040160405180910390fd5b5f611ffe8683613107565b509050801561201b5761201b6001600160a01b0388168983611e60565b97909650945050505050565b8260600151818151811061203d5761203d615248565b60200260200101515f01516001600160a01b03168360400151838151811061206757612067615248565b60200260200101515f01516001600160a01b031603611aae57604051631cd2f1c760e21b815260040160405180910390fd5b6120a1614548565b5f6120ab87611880565b60408051600480825260a082019092529192506060915f91816020015b60608152602001906001900390816120c85790505089516040805160038152602081018790526001600160a01b0392831681830152918916606083015260808201905290915081600180038151811061212357612123615248565b60200260200101819052505f806121598b604001518b8151811061214957612149615248565b60200260200101515f0151613134565b909250905060018260038111156121725761217261592c565b1415801561219157505f82600381111561218e5761218e61592c565b14155b156121d3578a604001518a815181106121ac576121ac615248565b60200260200101515f01518260405163ee07877f60e01b8152600401610318929190615940565b5f6122238c5f01518d604001518d815181106121f1576121f1615248565b60200260200101515f01518e604001518e8151811061221257612212615248565b602002602001015160200151611cb7565b90506122b28c604001518c8151811061223e5761223e615248565b60200260200101515f01516001600160a01b03165f1b8360ff165f1b8e604001518e8151811061227057612270615248565b602002602001015160200151845f801b60408051600581526020810196909652858101949094526060850192909252608084015260a083015260c08201905290565b846001600303815181106122c8576122c8615248565b60200260200101819052505050505f806122f18b606001518a8151811061214957612149615248565b9092509050600182600381111561230a5761230a61592c565b1415801561232957505f8260038111156123265761232661592c565b14155b15612344578a6060015189815181106121ac576121ac615248565b5f6123838c5f01518d606001518c8151811061236257612362615248565b60200260200101515f01518e606001518d8151811061221257612212615248565b90506123d08c606001518b8151811061239e5761239e615248565b60200260200101515f01516001600160a01b03165f1b8360ff165f1b8e606001518d8151811061227057612270615248565b846001600403815181106123e6576123e6615248565b60200260200101819052505050506123fe8186612cc4565b9150505f885f01516001600160a01b031690505f808a602001515f01516001600160a01b031663d04dfe236040518060e001604052808e60200151602001516001600160a01b0316815260200161245e87305f9182526020526040902090565b81526020018e602001516040015181526020015f81526020018781526020015f67ffffffffffffffff811115612496576124966149ad565b6040519080825280602002602001820160405280156124bf578160200160208202803683370190505b5081526020015f6040519080825280602002602001820160405280156124ef578160200160208202803683370190505b508152506040518263ffffffff1660e01b815260040161250f9190615766565b5f60405180830381865afa158015612529573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612550919081019061585e565b9150915060028251101561257c578151604051630fbb8e5560e21b815260040161031891815260200190565b6020820151604083015160608d015180515f91908d9081106125a0576125a0615248565b602002602001015190505f6125c08f5f0151835f01518460200151611cb7565b90506125cc8382611ed1565b6040805160028152602081018390528082018790526060810190915290935091506125f49050565b8660028151811061260757612607615248565b60200260200101819052506040518060e001604052808e81526020018c81526020018281526020018381526020018781526020018681526020018481525097505050505050505095945050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480612687868686866132c6565b915091505f61269683836133e5565b509a9950505050505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480612687868686866134bd565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480612687868686866134e7565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d848061268786868686613a24565b82816080015160038151811061274d5761274d615248565b602002602001015160048151811061276757612767615248565b60200260200101818152505081816080015160048151811061278b5761278b615248565b60200260200101516004815181106127a5576127a5615248565b602002602001018181525050612834815f01515f015182608001516003815181106127d2576127d2615248565b60200260200101515f815181106127eb576127eb615248565b60200260200101515f1c836080015160038151811061280c5761280c615248565b602002602001015160028151811061282657612826615248565b602002602001015186611bc7565b50506128b9815f01515f0151826080015160048151811061285757612857615248565b60200260200101515f8151811061287057612870615248565b60200260200101515f1c836080015160048151811061289157612891615248565b60200260200101516002815181106128ab576128ab615248565b602002602001015185611eed565b50507f4cb6e22a3e7e651d7cf0376cff48f20f5007a54147777865be7f5f6c38c50f4a3382608001516040516128f0929190615991565b60405180910390a1505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d61292b84848484612fa6565b13979650505050505050565b60c081015151156129b1578051602090810151015160a082015160c083015160405163012c676d60e21b81526001600160a01b03909316926304b19db492612983929091600401615914565b5f604051808303815f87803b15801561299a575f80fd5b505af11580156129ac573d5f803e3d5ffd5b505050505b5f815f0151602001515f01516001600160a01b031663d04dfe236040518060e00160405280855f015160200151602001516001600160a01b03168152602001612a078660a00151305f9182526020526040902090565b8152602001855f01516020015160400151815260200160018152602001856080015181526020015f67ffffffffffffffff811115612a4757612a476149ad565b604051908082528060200260200182016040528015612a70578160200160208202803683370190505b5081526020015f604051908082528060200260200182016040528015612aa0578160200160208202803683370190505b508152506040518263ffffffff1660e01b8152600401612ac09190615766565b5f60405180830381865afa158015612ada573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612b01919081019061585e565b9150505f815111156113c2578151602090810151015160a083015160405163012c676d60e21b81526001600160a01b03909216916304b19db491612b49918590600401615914565b5f604051808303815f87803b158015612b60575f80fd5b505af1158015612b72573d5f803e3d5ffd5b505050505050565b612b8381613b22565b612ba25780604051630c89984b60e31b815260040161031891906159b2565b50565b60605f612bb28484613b50565b9050808015612bd357505f3d1180612bd357505f846001600160a01b03163b115b15612be857612be0613b63565b9150506102b6565b8015612c1257604051639996b31560e01b81526001600160a01b0385166004820152602401610318565b3d15612c2557612c20613b7c565b612c3e565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b604080516080810182525f808252602082018190529181018290526060810191909152612c728383613b87565b82526040820152612c838284613b87565b6020830152606082015292915050565b5f80516020615b6d83398151915254600203612cc257604051633ee5aeb560e01b815260040160405180910390fd5b565b60605f825167ffffffffffffffff811115612ce157612ce16149ad565b604051908082528060200260200182016040528015612d0a578160200160208202803683370190505b5090505f80845111612d1c575f612d22565b83516001015b85516001010190505f8167ffffffffffffffff811115612d4457612d446149ad565b604051908082528060200260200182016040528015612d7757816020015b6060815260200190600190039081612d625790505b5090505f612d9b604080516002815233602082015230818301526060810190915290565b828281518110612dad57612dad615248565b60200260200101819052505f5b8751811015612e0a578180600101925050878181518110612ddd57612ddd615248565b6020026020010151838381518110612df757612df7615248565b6020908102919091010152600101612dba565b50855115612f9c57808060010191505083828281518110612e2d57612e2d615248565b60200260200101819052505f5b8651811015612f9a57612ee9878281518110612e5857612e58615248565b60200260200101515f0151612ec6612e948a8581518110612e7b57612e7b615248565b6020026020010151602001518051602090810291012090565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c902090565b898481518110612ed857612ed8615248565b602002602001015160400151613bf0565b612f0957604051630a57f30960e31b815260048101829052602401610318565b868181518110612f1b57612f1b615248565b60200260200101515f01516001600160a01b03165f1b858281518110612f4357612f43615248565b6020026020010181815250508180600101925050868181518110612f6957612f69615248565b602002602001015160200151838381518110612f8757612f87615248565b6020908102919091010152600101612e3a565b505b5095945050505050565b5f8085158415178187128286121817858414178015612fcb5786859250925050611cae565b505f85841315612fdf575092949193919260015b8386035f8112604c8213178015613012578215613004575f8994509450505050611cae565b885f94509450505050611cae565b600a82900a8981028a82828161302a5761302a6159c4565b0514613056578415613046575f8b965096505050505050611cae565b8a5f965096505050505050611cae565b841561306b578896509450611cae9350505050565b9550879450611cae9350505050565b5f80613084613c60565b60405163b7bad1b160e01b81526001600160a01b038416600482015273200e12d10bb0c5e4a17e7018f0f1161919bb93899063b7bad1b19060240160408051808303815f875af11580156130da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130fe91906159d8565b91509150915091565b5f806001600160e01b038416601b0b60e085901d613126828287613ceb565b9350935050505b9250929050565b5f8061313e613c60565b604051630782d7e160e01b81526001600160a01b038416600482015273200e12d10bb0c5e4a17e7018f0f1161919bb938990630782d7e1906024016040805180830381865afa1580156130da573d5f803e3d5ffd5b5f805f6131a08585613de7565b915091506131ae8282613e30565b95945050505050565b5f805f805f6131c68787613e71565b9250925092505f806131d885856133e5565b91509150818380156131e75750815b9650965050505050509250929050565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661324d578383151615613241573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f511483166132b55783831516156132a9573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b5f80851584151780156132de575f92505f91506133db565b6132e88487615a18565b91505f6132f488613eb4565b90505f61330087613eb4565b90505f61330d8383613ee2565b5090505f6f0785ee10d5da46d900f436a000000000821115613342576f0785ee10d5da46d900f436a000000000820491506025015b670de0b6b3a764000082111561336357670de0b6b3a7640000820491506012015b633b9aca0082111561337c57633b9aca00820491506009015b61271082111561339157612710820491506004015b81156133a557600a82049150600101613391565b6133af8187615a18565b95506133d18b8a6133cb87876133c687600a615b17565b613efe565b89613fca565b9097509550505050505b5094509492505050565b5f601b83900b8314838382613449577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e100000000000000000086051561342957620186a0860595506005850194505b8586601b0b1461344457600a86059550846001019450613429565b61345f565b855f0361345f57505f92506001915061312d9050565b848560030b146134a2575f85121561347f57505f925082915061312d9050565b60405163d556b11160e01b81526004810183905260248101829052604401610318565b50506001600160e01b03841660e084901b1791509250929050565b5f806134c9848461406a565b90945092506134da86868686613a24565b9150915094509492505050565b5f80835f0361351357604051637a97930f60e01b81526004810187905260248101869052604401610318565b855f0361352457505f905080611cae565b5f805f806135328a8a6140bf565b919b509950915061354388886140bf565b919950975090505f6135548b613eb4565b90505f6135608a613eb4565b90507f161bcca7119915b50764b4abe86529797775a5f1719510000000000000000000604c818310156139255784156135b757507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b9050604b6138fd565b6f4b3b4ca85a86c47a098a2240000000008310156136e357678ac7230489e80000831015613647576402540be40083101561361557620186a08310156136055750620186a0905060056138be565b506402540be4009050600a6138be565b655af3107a40008310156136345750655af3107a40009050600e6138be565b50678ac7230489e80000905060136138be565b6b204fce5e3e250261100000008310156136995769152d02c7e14af6800000831015613682575069152d02c7e14af6800000905060176138be565b506b204fce5e3e250261100000009050601c6138be565b6d314dc6448d9338c15b0a000000008310156136c857506d314dc6448d9338c15b0a00000000905060216138be565b506f4b3b4ca85a86c47a098a224000000000905060266138be565b780197d4df19d605767337e9f14d3eec8920e4000000000000008310156137db5773af298d050e4395d69670b12b7f41000000000000831015613776577172cb5bd86321e38cb6ce6682e8000000000083101561375757507172cb5bd86321e38cb6ce6682e800000000009050602b6138be565b5073af298d050e4395d69670b12b7f41000000000000905060306138be565b76010b46c6cdd6e3e0828f4db456ff0c8ea00000000000008310156137b7575076010b46c6cdd6e3e0828f4db456ff0c8ea0000000000000905060356138be565b50780197d4df19d605767337e9f14d3eec8920e4000000000000009050603a6138be565b7c03b58e88c75313ec9d329eaaa18fb92f75215b17100000000000000000831015613871577a026e4d30eccc3215dd8f3157d27e23acbdcfe6800000000000000083101561384957507a026e4d30eccc3215dd8f3157d27e23acbdcfe680000000000000009050603f6138be565b507c03b58e88c75313ec9d329eaaa18fb92f75215b17100000000000000000905060446138be565b7e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca0000000000000000008310156138be57507e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca000000000000000000905060495b8183116138d357600a820491505f19016138be565b815f036138fd576040516305e51ecb60e01b8152600481018d9052602481018c9052604401610318565b85613925576040516305e51ecb60e01b8152600481018f9052602481018e9052604401610318565b80600160ff1b018d1261393c57808d039c5061397a565b600160ff1b9c90038c015f81131561397a57806001600160ff1b03038b1361396757998a019961397a565b5f80995099505050505050505050611cae565b5f808e12801561398957505f8c135b156139aa57600160ff1b8e01808d136139a2575f6139a6565b808d035b9150505b8b818f010397506139c78f8e6139c1888789613efe565b8b613fca565b90995097505f811315613a1157604c8113156139f1575f809a509a50505050505050505050611cae565b80600a0a8981613a0357613a036159c4565b059850885f03613a11575f97505b50969850949650611cae95505050505050565b5f8085158415178015613a5057865f03613a445784849250925050611cae565b86869250925050611cae565b613a5a8787614319565b9097509550613a698585614319565b909550935085841315613a7d579395929492935b838603604c811115613a96578787935093505050611cae565b80600a0a8681613aa857613aa86159c4565b0595505086850180881860ff90811c151589881890911c15168015613b1157876001600160ff1b0303613af85760405163d556b11160e01b8152600481018a905260248101899052604401610318565b600a968790059690980586019760019790970196613b15565b8198505b5096979596505050505050565b5f600882511015613b3457505f919050565b506008015167ffffffffffffffff1667ff0a89c674ee78741490565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f80613ba48460600151856040015161265790919063ffffffff16565b915083604001519050613bc4836040015183611ab390919063ffffffff16565b1561312d5782604001519150613be78460600151836126d590919063ffffffff16565b90509250929050565b5f836001600160a01b03163b5f03613c4e575f80613c0e8585614356565b5090925090505f816003811115613c2757613c2761592c565b148015613c455750856001600160a01b0316826001600160a01b0316145b925050506103fd565b613c5984848461439c565b90506103fd565b73200e12d10bb0c5e4a17e7018f0f1161919bb93893b1580613cb7575073200e12d10bb0c5e4a17e7018f0f1161919bb93893f7f1de7d717526cba131d684e312dedbf0852adef9cced9e36798ae4937f7145d4114155b15612cc2576040516373e6d7b360e01b815273200e12d10bb0c5e4a17e7018f0f1161919bb93896004820152602401610318565b5f805f851215613d1857604051634a7d166b60e01b81526004810186905260248101859052604401610318565b845f03613d2a57505f90506001611bbf565b8460ff8416850185811215613d5c5760405163d556b11160e01b81526004810188905260248101879052604401610318565b5f805f831215613da857604c19831215613d7f575f809550955050505050611bbf565b825f03600a0a9150818481613d9657613d966159c4565b0495505084029091149150611bbf9050565b5f831315613dd757613dbb83600a615b17565b9150613dc78285615b22565b955060019450611bbf9350505050565b8360019550955050505050611bbf565b5f805f805f613df68787613e71565b92509250925080613e2457604051636238bcb360e11b81526004810184905260248101839052604401610318565b50909590945092505050565b5f805f613e3d85856133e5565b9150915080613e69576040516322c9f7bb60e01b81526004810186905260248101859052604401610318565b509392505050565b5f808060ff841681036001600160ff1b03861115613ea357600a860460018201600a88065f1493509350935050613ead565b8593509150600190505b9250925092565b5f80821215613ed957600160ff1b8203613ed35750600160ff1b919050565b505f0390565b5090565b919050565b5f805f1983850993909202808410938190039390930393915050565b5f805f613f0b8686613ee2565b91509150815f03613f2f57838181613f2557613f256159c4565b04925050506103fd565b838210613f605760405163362ced0960e11b8152600481018790526024810186905260448101859052606401610318565b5f84868809600186198101871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103025f82900382900490920185841190960395909502919093039390930492909217029150509392505050565b5f805f8587181215614046576001600160ff1b0384111561403357613ff76001600160ff1b0360016151ef565b840361400b5750600160ff1b905081611cae565b614016600a85615b39565b61401f90615b58565b61402a846001615a18565b91509150611cae565b61403c84615b58565b8391509150611cae565b6001600160ff1b038411156140605761401f600a85615b39565b5082905081611cae565b5f80600160ff1b84036140b5576001600160ff1b0383036140a85760405163d556b11160e01b81526004810185905260248101849052604401610318565b600a840593508260010192505b50505f9190910391565b5f805f845f036140d757505f91508190506001613ead565b7546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b85055f036142c4576f4b3b4ca85a86c47a098a224000000000850515801561413957507f80000000000000000000000000000000000000000000000000000000000000268412155b1561415a576f4b3b4ca85a86c47a098a224000000000850294506026840393505b7728c87cb5c89a2571ebfdcb54864ada834a0000000000000085051580156141a257507f80000000000000000000000000000000000000000000000000000000000000138412155b156141bb57678ac7230489e80000850294506013840393505b7b097edd871cfda3a5697758bf0e3cbb5ac5741c640000000000000000850515801561420757507f800000000000000000000000000000000000000000000000000000000000000a8412155b1561421d576402540be40085029450600a840393505b7e3899162693736ac531a5a58f1fbb4b746504382ca7e4000000000000000000850515801561426c57507f80000000000000000000000000000000000000000000000000000000000000028412155b156142825760648502945060028403935061421d565b7546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b85051580156142b257506001600160ff1b018412155b156142c457600a850294506001840393505b600a808602908105861480156142e157506001600160ff1b018512155b156142f0578095506001850394505b50939492935050507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b8305151590565b5f805f805f61432887876140bf565b92509250925080613e24576040516305e51ecb60e01b81526004810188905260248101879052604401610318565b5f805f835160410361438d576020840151604085015160608601515f1a61437f888285856143ed565b955095509550505050613ead565b505081515f9150600290613ead565b805160408051630b135d3f60e11b8082526004820186905260248201929092525f92906020820185604483015e60205f60648401838a5afa9050825f5114601f3d1116811693505050509392505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561442657505f915060039050826144ab565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015614477573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b0381166144a257505f9250600191508290506144ab565b92505f91508190505b9450945094915050565b60405180608001604052806144c86144e1565b81526020015f81526020015f8152602001606081525090565b6040518060a001604052805f6001600160a01b0316815260200161452f60405180606001604052805f6001600160a01b031681526020015f6001600160a01b03168152602001606081525090565b8152606060208201819052604082018190525f91015290565b6040518060e0016040528061455b6144e1565b81526020015f81526020015f80191681526020015f8019168152602001606081526020015f8152602001606081525090565b5f6020828403121561459d575f80fd5b81356001600160e01b0319811681146103fd575f80fd5b5f8083601f8401126145c4575f80fd5b50813567ffffffffffffffff8111156145db575f80fd5b6020830191508360208260051b850101111561312d575f80fd5b5f805f60408486031215614607575f80fd5b833567ffffffffffffffff8082111561461e575f80fd5b9085019060a08288031215614631575f80fd5b90935060208501359080821115614646575f80fd5b50614653868287016145b4565b9497909650939450505050565b5f60208284031215614670575f80fd5b5035919050565b6001600160a01b0381168114612ba2575f80fd5b8035613edd81614677565b5f805f805f608086880312156146aa575f80fd5b85356146b581614677565b94506020860135935060408601359250606086013567ffffffffffffffff8111156146de575f80fd5b6146ea888289016145b4565b969995985093965092949392505050565b5f805f6060848603121561470d575f80fd5b833561471881614677565b9250602084013561472881614677565b929592945050506040919091013590565b5f805f805f6080868803121561474d575f80fd5b853561475881614677565b9450602086013561476881614677565b935060408601359250606086013567ffffffffffffffff8082111561478b575f80fd5b818801915088601f83011261479e575f80fd5b8135818111156147ac575f80fd5b8960208285010111156147bd575f80fd5b9699959850939650602001949392505050565b5f602082840312156147e0575f80fd5b81356103fd81614677565b5f60c082840312156147fb575f80fd5b50919050565b5f60208284031215614811575f80fd5b813567ffffffffffffffff811115614827575f80fd5b610556848285016147eb565b5f805f60408486031215614845575f80fd5b833567ffffffffffffffff8082111561485c575f80fd5b614868878388016147eb565b94506020860135915080821115614646575f80fd5b5f6020828403121561488d575f80fd5b813567ffffffffffffffff8111156148a3575f80fd5b8201608081850312156103fd575f80fd5b5f80602083850312156148c5575f80fd5b823567ffffffffffffffff8111156148db575f80fd5b6148e7858286016145b4565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b8281101561497657603f198886030184526149648583516148f3565b94509285019290850190600101614948565b5092979650505050505050565b5f8060408385031215614994575f80fd5b823561499f81614677565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156149e4576149e46149ad565b60405290565b6040805190810167ffffffffffffffff811182821017156149e4576149e46149ad565b60405160a0810167ffffffffffffffff811182821017156149e4576149e46149ad565b604051601f8201601f1916810167ffffffffffffffff81118282101715614a5957614a596149ad565b604052919050565b5f82601f830112614a70575f80fd5b813567ffffffffffffffff811115614a8a57614a8a6149ad565b614a9d601f8201601f1916602001614a30565b818152846020838601011115614ab1575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608284031215614add575f80fd5b614ae56149c1565b90508135614af281614677565b81526020820135614b0281614677565b6020820152604082013567ffffffffffffffff811115614b20575f80fd5b614b2c84828501614a61565b60408301525092915050565b5f67ffffffffffffffff821115614b5157614b516149ad565b5060051b60200190565b5f60408284031215614b6b575f80fd5b614b736149ea565b90508135614b8081614677565b808252506020820135602082015292915050565b5f82601f830112614ba3575f80fd5b81356020614bb8614bb383614b38565b614a30565b8083825260208201915060208460061b870101935086841115614bd9575f80fd5b602086015b84811015614bfe57614bf08882614b5b565b835291830191604001614bde565b509695505050505050565b5f60a08284031215614c19575f80fd5b614c21614a0d565b9050614c2c8261468b565b8152602082013567ffffffffffffffff80821115614c48575f80fd5b614c5485838601614acd565b60208401526040840135915080821115614c6c575f80fd5b614c7885838601614b94565b60408401526060840135915080821115614c90575f80fd5b50614c9d84828501614b94565b6060830152506080820135608082015292915050565b5f614cc0614bb384614b38565b8381529050602080820190600585811b850187811115614cde575f80fd5b855b81811015614dcb57803567ffffffffffffffff80821115614cff575f80fd5b908801906060828c031215614d12575f80fd5b614d1a6149c1565b8235614d2581614677565b81528287013582811115614d37575f80fd5b8301601f81018d13614d47575f80fd5b8035614d55614bb382614b38565b81815290881b8201890190898101908f831115614d70575f80fd5b928a01925b82841015614d8e5783358252928a0192908a0190614d75565b848b01525060409150508381013583811115614da8575f80fd5b614db48e828701614a61565b918301919091525087525050938301938301614ce0565b50505050509392505050565b5f82601f830112614de6575f80fd5b6103fd83833560208501614cb3565b5f805f805f6101408688031215614e0a575f80fd5b853567ffffffffffffffff80821115614e21575f80fd5b614e2d89838a01614c09565b96506020880135915080821115614e42575f80fd5b614e4e89838a01614c09565b9550614e5d8960408a016147eb565b9450610100880135915080821115614e73575f80fd5b614e7f89838a01614dd7565b9350610120880135915080821115614e95575f80fd5b50614ea288828901614dd7565b9150509295509295909350565b5f6102b63683614c09565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8135614eee81614677565b6001600160a01b039081168452602083013590614f0a82614677565b166020840152604082013536839003601e19018112614f27575f80fd5b820160208101903567ffffffffffffffff811115614f43575f80fd5b803603821315614f51575f80fd5b606060408601526131ae606086018284614eba565b5f808335601e19843603018112614f7b575f80fd5b830160208101925035905067ffffffffffffffff811115614f9a575f80fd5b8060061b360382131561312d575f80fd5b8183525f60208085019450825f5b85811015614ff1578135614fcc81614677565b6001600160a01b03168752818301358388015260409687019690910190600101614fb9565b509495945050505050565b5f6001600160a01b03808616835284602084015260606040840152833561502281614677565b166060830152602083013536849003605e1901811261503f575f80fd5b60a060808401526150566101008401858301614ee2565b90506150656040850185614f66565b605f19808685030160a087015261507d848385614fab565b935061508c6060880188614f66565b93509150808685030160c0870152506150a6838383614fab565b92505050608084013560e084015280915050949350505050565b5f6150cd614bb384614b38565b80848252602080830192508560051b8501368111156150ea575f80fd5b855b8181101561517457803567ffffffffffffffff8082111561510b575f80fd5b81890191506040823603121561511f575f80fd5b6151276149ea565b823582811115615135575f80fd5b61514136828601614acd565b8252508583013582811115615154575f80fd5b61516036828601614dd7565b8288015250875250509382019382016150ec565b50919695505050505050565b5f6001600160a01b03808916835280881660208401525085604083015284606083015260a060808301526151b860a083018486614eba565b98975050505050505050565b5f602082840312156151d4575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156102b6576102b66151db565b5f808335601e19843603018112615217575f80fd5b83018035915067ffffffffffffffff821115615231575f80fd5b6020019150600581901b360382131561312d575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235607e19833603018112615270575f80fd5b9190910192915050565b5f8235609e19833603018112615270575f80fd5b5f808335601e198436030181126152a3575f80fd5b83018035915067ffffffffffffffff8211156152bd575f80fd5b6020019150600681901b360382131561312d575f80fd5b5f608082360312156152e4575f80fd5b6040516080810167ffffffffffffffff8282108183111715615308576153086149ad565b81604052843591508082111561531c575f80fd5b61532836838701614c09565b835260208501356020840152604085013560408401526060850135915080821115615351575f80fd5b5061535e36828601614dd7565b60608301525092915050565b5f6020828403121561537a575f80fd5b813580151581146103fd575f80fd5b5f815180845260208085019450602084015f5b83811015614ff157815180516001600160a01b03168852830151838801526040909601959082019060010161539c565b5f6001600160a01b03808351168452602083015160a060208601528181511660a08601528160208201511660c08601526040810151915050606060e08501526154196101008501826148f3565b9050604083015184820360408601526154328282615389565b9150506060830151848203606086015261544c8282615389565b915050608083015160808501528091505092915050565b5f815180845260208085019450602084015f5b83811015614ff157815187529582019590820190600101615476565b5f6001600160a01b038087168352602060808185015286516080808601526154be6101008601826153cc565b90508188015160a086015260408089015160c08701526060808a0151607f198885030160e08901528381518086528686019150868160051b87010187840193505f5b8281101561555a57601f1988830301845284518a815116835289810151878b85015261552e88850182615463565b91890151848303858b015291905061554681836148f3565b968b0196958b019593505050600101615500565b5080995050505050505050505083604083015282606083015295945050505050565b5f808335601e19843603018112615591575f80fd5b83018035915067ffffffffffffffff8211156155ab575f80fd5b60200191503681900382131561312d575f80fd5b5f8235605e19833603018112615270575f80fd5b5f6102b63683614acd565b5f604082840312156155ee575f80fd5b6103fd8383614b5b565b6001600160a01b0384168152826020820152606060408201525f6131ae60608301846153cc565b6001600160a01b0385168152836020820152606060408201525f615647606083018486614eba565b9695505050505050565b5f6103fd368484614cb3565b828482375f8382015f815283518060208601835e5f910190815295945050505050565b5f6101206001600160a01b03871683528060208401526156a2818401876153cc565b905082810360408401526156b681866153cc565b9150508235606083015260208301356080830152604083013560a0830152606083013560c0830152608083013560e083015260a083013561010083015295945050505050565b602081525f6103fd60208301846153cc565b5f8282518085526020808601955060208260051b840101602086015f5b8481101561575957601f19868403018952615747838351615463565b9884019892509083019060010161572b565b5090979650505050505050565b602081526001600160a01b038251166020820152602082015160408201525f604083015160e0606084015261579f6101008401826148f3565b9050606084015160808401526080840151601f19808584030160a08601526157c7838361570e565b925060a08601519150808584030160c08601526157e48383615463565b925060c08601519150808584030160e0860152506131ae8282615463565b5f82601f830112615811575f80fd5b81516020615821614bb383614b38565b8083825260208201915060208460051b870101935086841115615842575f80fd5b602086015b84811015614bfe5780518352918301918301615847565b5f806040838503121561586f575f80fd5b825167ffffffffffffffff80821115615886575f80fd5b818501915085601f830112615899575f80fd5b815160206158a9614bb383614b38565b82815260059290921b840181019181810190898411156158c7575f80fd5b948201945b838610156158e5578551825294820194908201906158cc565b918801519196509093505050808211156158fd575f80fd5b5061590a85828601615802565b9150509250929050565b828152604060208201525f6105566040830184615463565b634e487b7160e01b5f52602160045260245ffd5b6001600160a01b0383168152604081016004831061596c57634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f6001820161598a5761598a6151db565b5060010190565b6001600160a01b0383168152604060208201525f610556604083018461570e565b602081525f6103fd60208301846148f3565b634e487b7160e01b5f52601260045260245ffd5b5f80604083850312156159e9575f80fd5b8251600481106159f7575f80fd5b602084015190925060ff81168114615a0d575f80fd5b809150509250929050565b8082018281125f831280158216821582161715611364576113646151db565b600181815b80851115615a7157815f1904821115615a5757615a576151db565b80851615615a6457918102915b93841c9390800290615a3c565b509250929050565b5f82615a87575060016102b6565b81615a9357505f6102b6565b8160018114615aa95760028114615ab357615acf565b60019150506102b6565b60ff841115615ac457615ac46151db565b50506001821b6102b6565b5060208310610133831016604e8410600b8410161715615af2575081810a6102b6565b615afc8383615a37565b805f1904821115615b0f57615b0f6151db565b029392505050565b5f6103fd8383615a79565b80820281158282048414176102b6576102b66151db565b5f82615b5357634e487b7160e01b5f52601260045260245ffd5b500490565b5f600160ff1b8201613ed357613ed36151db56fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00"; + hex"6080604052348015600e575f80fd5b5060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055615c24806100405f395ff3fe608060405234801561000f575f80fd5b50600436106100f0575f3560e01c8063613255ab11610093578063ac9650d811610063578063ac9650d81461022b578063d7e442ec1461024b578063d9d98ce41461025e578063fa50118214610273575f80fd5b8063613255ab146101ad57806369c72856146101c0578063709fb8a5146101e85780639235084d146101fb575f80fd5b80632fbc4ba0116100ce5780632fbc4ba01461015157806341d1514f146101665780635cffe9de14610187578063607461191461019a575f80fd5b806301ffc9a7146100f45780631f69cb751461011c5780632cb77e9f1461012f575b5f80fd5b61010761010236600461463b565b610286565b60405190151581526020015b60405180910390f35b61010761012a3660046146a3565b6102bc565b61010761013d36600461470e565b5f9081526020819052604090205460011490565b61016461015f366004614744565b610404565b005b6101796101743660046147a9565b61054a565b604051908152602001610113565b6101076101953660046147e7565b61055e565b6101646101a8366004614744565b61065e565b6101796101bb36600461487e565b6107f1565b6101d36101ce3660046148af565b610859565b60408051928352602083019190915201610113565b6101076101f63660046148e1565b610efc565b61020e61020936600461492b565b6111c5565b604080519315158452602084019290925290820152606001610113565b61023e610239366004614962565b611286565b60405161011391906149cf565b610164610259366004614962565b61136c565b61017961026c366004614a31565b5f92915050565b610164610281366004614ea3565b6113c6565b5f6001600160e01b0319821663e414309160e01b14806102b657506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f6102c5611865565b6102d2602085018561487e565b6001600160a01b0316336001600160a01b031614610321576102f7602085018561487e565b6040516335252be360e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b5f61033361032e86614f5d565b611880565b5f818152602081905260409020549091505f19016103e6575f818152602081905260408082209190915551600192507f09d18501db0080ca2d6cd7c17fa7255daff4b2d503ea93b76ff68b6752ea8e6390610393903390849089906150aa565b60405180910390a16040805160028152602081018390523381830152606081019091526103e6906103d7905b60408051600181526020810192909252818101905290565b6103e1858761516e565b6118af565b506103fd60015f80516020615c0483398151915255565b9392505050565b61040c611865565b33858561041a838383611a7d565b610424865f611ab3565b610459576040516306dde9c360e41b81523360048201526001600160a01b038916602482015260448101889052606401610318565b5f80610466338b8a611aed565b604080513381526001600160a01b038e1660208201529081018c90526060810183905291935091507f7f9dfa19cf1cc2f806f2f860fbc9c056b601fb1afc0e9b843dfe5c63616268e69060800160405180910390a15f806104c9338d8d8d611bc7565b909250905087156105265760408051600581526001600160a01b038e1660208201528082018d9052606081018490526080810183905260ff851660a082015260c081019091526105269061051c906103bf565b6103e18a8c61516e565b5050505050505061054360015f80516020615c0483398151915255565b5050505050565b5f610556848484611cb7565b949350505050565b5f6105736001600160a01b0386168786611e60565b6040516323e30c8b60e01b81525f906001600160a01b038816906323e30c8b906105ab9033908a908a9087908b908b9060040161522e565b6020604051808303815f875af11580156105c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105eb9190615272565b90507f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9811461063057604051630b6c58a960e31b815260048101829052602401610318565b610651873061063f5f8961529d565b6001600160a01b038a16929190611e95565b5060019695505050505050565b610666611865565b338585610674838383611a7d565b5f8080806106828a82611ab3565b6106b657604051623a3a4d60e21b81523360048201526001600160a01b038d166024820152604481018c9052606401610318565b5f6106c2338e8e611cb7565b90506106ce8b82611ed1565b94506106dc338e8e88611eed565b90935091505f6106ed338f88611f64565b80965081925050507f8045c25080b0868951141ed0a91720bcad09a8364a2b3109ee1fd49c1f0bc8b8338f8f8f8a8660405161075f969594939291906001600160a01b03968716815294909516602085015260408401929092526060830152608082015260a081019190915260c00190565b60405180910390a1505060408051600681526001600160a01b038e1660208201528082018d9052606081018490526080810183905260a081018c905260ff851660c0820152600160e08201908152610100820182905261012082019092529089156107d2576107d2816103e18c8e61516e565b50505050505050505061054360015f80516020615c0483398151915255565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610835573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b69190615272565b5f80610863611865565b61087060808401846152b0565b90505f0361089157604051639c95219f60e01b815260040160405180910390fd5b610899614563565b6108a161458f565b5f6108af60808701876152b0565b5f8181106108bf576108bf6152f6565b90506020028101906108d1919061530a565b6108db9080615328565b6108e990604081019061533c565b6108f660808901896152b0565b5f818110610906576109066152f6565b9050602002810190610918919061530a565b6020013581811061092b5761092b6152f6565b610941926020604090920201908101915061487e565b90505f61095160808801886152b0565b5f818110610961576109616152f6565b9050602002810190610973919061530a565b61097d9080615328565b61098b90606081019061533c565b61099860808a018a6152b0565b5f8181106109a8576109a86152f6565b90506020028101906109ba919061530a565b604001358181106109cd576109cd6152f6565b6109e3926020604090920201908101915061487e565b905060605f6109f560808a018a6152b0565b6040805160206001939093018302810190915293508a01359150610a1b9050815f611ab3565b610a385760405163315f9e2360e21b815260040160405180910390fd5b5f5b610a4760808b018b6152b0565b905081108015610a5c5750610a5c825f611ab3565b15610db957610a6e60808b018b6152b0565b82818110610a7e57610a7e6152f6565b9050602002810190610a90919061530a565b610a9990615382565b9650865f01519550846001600160a01b03168660400151886020015181518110610ac557610ac56152f6565b60200260200101515f01516001600160a01b0316141580610b1c5750836001600160a01b03168660600151886040015181518110610b0557610b056152f6565b60200260200101515f01516001600160a01b031614155b15610b3a5760405163936bb5ad60e01b815260040160405180910390fd5b610b4d8688602001518960400151612027565b5f610b5787611880565b5f81815260208190526040902054909150610bbc578651604080513381526001600160a01b03909216602083015281018290527fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f39060600160405180910390a1610db0565b5f610bd6888a602001518b60400151338d60600151612099565b6060810151909150610bec9060408e0135611ab3565b15610c42578751604080513381526001600160a01b03909216602083015281018390527fe3151dc8cb7a54ffc4baabd28c1f241c94d510b5e5b502491ac3cad6c16316d5906060015b60405180910390a1610dae565b60408101516001600160e01b0316610c9c578751604080513381526001600160a01b03909216602083015281018390527f500b713857325f9e6dcb52ae832eca9109d107ed1aae9cb4928b4c1e13f051aa90606001610c35565b5f808d6060016020810190610cb19190615418565b15610cea576040830151610cc59087611ed1565b6060840151909250610cd79083612657565b9050610ce386836126a4565b9550610d3b565b5f610d068460400151856060015161265790919063ffffffff16565b9050610d128188611ed1565b9150610d2b8460600151836126d490919063ffffffff16565b9250610d3787836126a4565b9650505b610d458c82612704565b9b50610d518d83612704565b9c50610d5e818385612734565b7f194f1feb3b4d7076a2c272e774e792e0c48bb8c7aa1a9a3671c1cd6da9e6b4c1338c8484604051610d939493929190615540565b60405180910390a15050845160010180865260200285018190525b505b50600101610a3a565b505f9050610dcd60808a0160608b01615418565b610dd75786610dd9565b875b9050610de6818a356128fc565b15610e0e5760405163573b6f4160e01b81528935600482015260248101829052604401610318565b50610e1a338389611f64565b505f9050610e2b60a08a018a61562a565b90501115610e99573363691f9ed783858a8a610e4a60a08f018f61562a565b6040518763ffffffff1660e01b8152600401610e6b9695949392919061522e565b5f604051808303815f87803b158015610e82575f80fd5b505af1158015610e94573d5f803e3d5ffd5b505050505b610ea4338488611aed565b50505f5b8151811015610edb57610ed3828281518110610ec657610ec66152f6565b6020026020010151612936565b600101610ea8565b505050505050610ef760015f80516020615c0483398151915255565b915091565b5f610f05611865565b610f12602085018561533c565b90505f03610f3357604051636c44ef8f60e01b815260040160405180910390fd5b610f40604085018561533c565b90505f03610f615760405163540e5f0b60e01b815260040160405180910390fd5b6040805160a081019091523381525f9060208101610f7f878061566d565b610f8890615681565b8152602001868060200190610f9d919061533c565b808060200260200160405190810160405280939291908181526020015f905b82821015610fe857610fd96040830286013681900381019061568c565b81526020019060010190610fbc565b5050509183525050602001611000604088018861533c565b808060200260200160405190810160405280939291908181526020015f905b8282101561104b5761103c6040830286013681900381019061568c565b8152602001906001019061101f565b50505050508152602001866060013581525090505f61106982611880565b5f818152602081905260409020549091501580156111ab575f828152602081905260409081902060019055835190517f87491344dfbcf91f6cbbc610cbbeedc85313d37a02df0c93527f7ea5f8db717f916110c791859087906156a6565b60405180910390a15f6110dd60a089018961562a565b905011156111795761112e6110f560a089018961562a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250612b7992505050565b82517fd46c2c56b35c8210e9e712ec3f02242d5fc90187c0ac8ed80cc33626846ec369908361116060a08b018b61562a565b60405161117094939291906156cd565b60405180910390a15b6040805160028152602081018490523381830152606081019091526111ab906111a1906103bf565b6103e1878961516e565b925050506103fd60015f80516020615c0483398151915255565b5f8080806111df6111d68680615328565b61032e90614f5d565b5f8181526020819052604090205490915060011461120657505f925082915081905061127f565b61122b6112138680615328565b61121c90614f5d565b86602001358760400135612027565b5f6112686112398780615328565b61124290614f5d565b602088013560408901353361125a60608c018c6152b0565b611263916156ff565b612099565b905060018160400151826060015194509450945050505b9193909250565b604080515f8152602081019091526060908267ffffffffffffffff8111156112b0576112b0614a5b565b6040519080825280602002602001820160405280156112e357816020015b60608152602001906001900390816112ce5790505b5091505f5b838110156113645761133f30868684818110611306576113066152f6565b9050602002810190611318919061562a565b8560405160200161132b9392919061570b565b604051602081830303815290604052612ba4565b838281518110611351576113516152f6565b60209081029190910101526001016112e8565b505092915050565b611374611865565b604080515f808252602082019092526113ac916113a1565b606081526020019060019003908161138c5790505b506103e1838561516e565b6113c260015f80516020615c0483398151915255565b5050565b6113ce611865565b835185516001600160a01b039182169116036113fd57604051630a98f1f360e21b815260040160405180910390fd5b8360400151836040013581518110611417576114176152f6565b60200260200101515f01516001600160a01b03168560600151846020013581518110611445576114456152f6565b60200260200101515f01516001600160a01b03161415806114be5750604085015180518435908110611479576114796152f6565b60200260200101515f01516001600160a01b031684606001518460600135815181106114a7576114a76152f6565b60200260200101515f01516001600160a01b031614155b156114dc5760405163936bb5ad60e01b815260040160405180910390fd5b84606001518360200135815181106114f6576114f66152f6565b60200260200101515f01516001600160a01b03168560400151845f013581518110611523576115236152f6565b60200260200101515f01516001600160a01b03160361155557604051631cd2f1c760e21b815260040160405180910390fd5b5f805f61156188611880565b81526020019081526020015f2054036115d1577fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f333865f01516115a388611880565b604080516001600160a01b0394851681529390921660208401529082015260600160405180910390a161184f565b5f805f6115dd87611880565b81526020019081526020015f20540361161f577fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f333855f01516115a387611880565b7f6fa7f4c28634b0a9d6831401c45ae468195fb63aed07308935c35374ff5d9e3933868686604051611654949392919061572e565b60405180910390a15f61167486855f01358660200135885f015186612099565b90505f61168f86866040013587606001358a5f015188612099565b90505f61169c8383612c44565b90506116b08160400151825f015185612734565b6116c38160600151826020015184612734565b606081015181515f916116d691906126a4565b90505f6116f4836040015184602001516126a490919063ffffffff16565b9050611700825f6128fc565b806117105750611710815f6128fc565b1561172e57604051630d86822160e01b815260040160405180910390fd5b611762338b606001518a602001358151811061174c5761174c6152f6565b60200260200101515f01518a6080013585611bc7565b5050611798338a606001518a6060013581518110611782576117826152f6565b60200260200101515f01518a60a0013584611bc7565b5050604080513381528451602080830191909152850151818301529084015160608083019190915284015160808201527fd9fa84dd790c969daa5c33d8050dc06b4a9b59d5b42e2be5f5e8ae20447f618d925060a001905060405180910390a161180183612936565b61180a82612936565b80516001600160e01b031615801561182d575060208101516001600160e01b0316155b1561184b576040516321badf1f60e01b815260040160405180910390fd5b5050505b61054360015f80516020615c0483398151915255565b61186d612c92565b60025f80516020615c0483398151915255565b5f8160405160200161189291906157aa565b604051602081830303815290604052805190602001209050919050565b335f8181523060209081526040808320815160a0810183528083018581526060808301879052608083018190529082528185015282518581529384018581528484019093529093909291905b8651811015611a7357868181518110611916576119166152f6565b602002602001015193505f845f015160400151511115611a6b575f845f01515f01516001600160a01b031663d04dfe236040518060e00160405280885f0151602001516001600160a01b03168152602001898152602001885f01516040015181526020015f815260200161198e8d8a60200151612cc3565b8152602001878152602001868152506040518263ffffffff1660e01b81526004016119b99190615814565b5f60405180830381865afa1580156119d3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119fa919081019061590c565b9150505f81511115611a695784516020015160405163012c676d60e21b81526001600160a01b03909116906304b19db490611a3b908a9085906004016159c2565b5f604051808303815f87803b158015611a52575f80fd5b505af1158015611a64573d5f803e3d5ffd5b505050505b505b6001016118fb565b5050505050505050565b80611aae576040516305dbdfd960e41b81526001600160a01b03808516600483015283166024820152604401610318565b505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d611ae184848484612fa5565b12979650505050505050565b5f805f80611afa86613079565b90925090506001826003811115611b1357611b136159da565b14158015611b3257505f826003811115611b2f57611b2f6159da565b14155b15611b5457858260405163ee07877f60e01b81526004016103189291906159ee565b611b5e855f6128fc565b15611b7c57604051632eaefac360e21b815260040160405180910390fd5b5f80611b888784613106565b9150915080611b9d57611b9a82615a27565b91505b8115611bb857611bb86001600160a01b0389168a3085611e95565b5093509150505b935093915050565b5f80611bd383826128fc565b15611bf45760405163793a8f5560e01b815260048101849052602401610318565b83611c1257611c04868685611f64565b505f9250829150611cae9050565b6001600160a01b038087165f908152600160209081526040808320938916835292815282822087835290529081205490611c4c8286612704565b9050611c58815f6128fc565b15611c795760405163c5e12af560e01b815260048101829052602401610318565b6001600160a01b038089165f908152600160209081526040808320938b16835292815282822089835290522081905590925090505b94509492505050565b5f8115611cf157506001600160a01b038084165f9081526001602090815260408083209386168352928152828220848352905220546103fd565b5f80611cfc85613133565b90925090506001826003811115611d1557611d156159da565b14158015611d3457505f826003811115611d3157611d316159da565b14155b15611d5657848260405163ee07877f60e01b81526004016103189291906159ee565b6040516370a0823160e01b81526001600160a01b0387811660048301525f91611dca918816906370a0823190602401602060405180830381865afa158015611da0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc49190615272565b83613192565b604051636eb1769f60e11b81526001600160a01b0389811660048301523060248301529192505f91611e48919089169063dd62ed3e90604401602060405180830381865afa158015611e1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e429190615272565b846131b6565b509050611e558282611ed1565b9450505050506103fd565b611e6d83838360016131f6565b611aae57604051635274afe760e01b81526001600160a01b0384166004820152602401610318565b611ea3848484846001613258565b611ecb57604051635274afe760e01b81526001600160a01b0385166004820152602401610318565b50505050565b5f611edc83836128fc565b611ee657816103fd565b5090919050565b5f80611ef983826128fc565b15611f1a5760405163793a8f5560e01b815260048101849052602401610318565b83611f2a57611c04868685611aed565b6001600160a01b038087165f908152600160209081526040808320938916835292815282822087835290529081205490611c4c82866126a4565b5f805f80611f7186613079565b90925090506001826003811115611f8a57611f8a6159da565b14158015611fa957505f826003811115611fa657611fa66159da565b14155b15611fcb57858260405163ee07877f60e01b81526004016103189291906159ee565b611fd5855f6128fc565b15611ff357604051632d1671a360e11b815260040160405180910390fd5b5f611ffe8683613106565b509050801561201b5761201b6001600160a01b0388168983611e60565b97909650945050505050565b8260600151818151811061203d5761203d6152f6565b60200260200101515f01516001600160a01b031683604001518381518110612067576120676152f6565b60200260200101515f01516001600160a01b031603611aae57604051631cd2f1c760e21b815260040160405180910390fd5b6120a16145f6565b5f6120ab87611880565b60408051600480825260a082019092529192506060915f91816020015b60608152602001906001900390816120c85790505089516040805160038152602081018790526001600160a01b03928316818301529189166060830152608082019052909150816001800381518110612123576121236152f6565b60200260200101819052505f806121598b604001518b81518110612149576121496152f6565b60200260200101515f0151613133565b90925090506001826003811115612172576121726159da565b1415801561219157505f82600381111561218e5761218e6159da565b14155b156121d3578a604001518a815181106121ac576121ac6152f6565b60200260200101515f01518260405163ee07877f60e01b81526004016103189291906159ee565b5f6122238c5f01518d604001518d815181106121f1576121f16152f6565b60200260200101515f01518e604001518e81518110612212576122126152f6565b602002602001015160200151611cb7565b90506122b28c604001518c8151811061223e5761223e6152f6565b60200260200101515f01516001600160a01b03165f1b8360ff165f1b8e604001518e81518110612270576122706152f6565b602002602001015160200151845f801b60408051600581526020810196909652858101949094526060850192909252608084015260a083015260c08201905290565b846001600303815181106122c8576122c86152f6565b60200260200101819052505050505f806122f18b606001518a81518110612149576121496152f6565b9092509050600182600381111561230a5761230a6159da565b1415801561232957505f826003811115612326576123266159da565b14155b15612344578a6060015189815181106121ac576121ac6152f6565b5f6123838c5f01518d606001518c81518110612362576123626152f6565b60200260200101515f01518e606001518d81518110612212576122126152f6565b90506123d08c606001518b8151811061239e5761239e6152f6565b60200260200101515f01516001600160a01b03165f1b8360ff165f1b8e606001518d81518110612270576122706152f6565b846001600403815181106123e6576123e66152f6565b60200260200101819052505050506123fe8186612cc3565b9150505f885f01516001600160a01b031690505f808a602001515f01516001600160a01b031663d04dfe236040518060e001604052808e60200151602001516001600160a01b0316815260200161245e87305f9182526020526040902090565b81526020018e602001516040015181526020015f81526020018781526020015f67ffffffffffffffff81111561249657612496614a5b565b6040519080825280602002602001820160405280156124bf578160200160208202803683370190505b5081526020015f6040519080825280602002602001820160405280156124ef578160200160208202803683370190505b508152506040518263ffffffff1660e01b815260040161250f9190615814565b5f60405180830381865afa158015612529573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612550919081019061590c565b9150915060028251101561257c578151604051630fbb8e5560e21b815260040161031891815260200190565b6020820151604083015160608d015180515f91908d9081106125a0576125a06152f6565b602002602001015190505f6125c08f5f0151835f01518460200151611cb7565b90506125cc8382611ed1565b6040805160028152602081018390528082018790526060810190915290935091506125f49050565b86600281518110612607576126076152f6565b60200260200101819052506040518060e001604052808e81526020018c81526020018281526020018381526020018781526020018681526020018481525097505050505050505095945050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480612687868686866132c5565b915091505f61269683836133e4565b9a9950505050505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d848061268786868686613431565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d84806126878686868661345b565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d848061268786868686613998565b82816080015160038151811061274c5761274c6152f6565b6020026020010151600481518110612766576127666152f6565b60200260200101818152505081816080015160048151811061278a5761278a6152f6565b60200260200101516004815181106127a4576127a46152f6565b602002602001018181525050612833815f01515f015182608001516003815181106127d1576127d16152f6565b60200260200101515f815181106127ea576127ea6152f6565b60200260200101515f1c836080015160038151811061280b5761280b6152f6565b6020026020010151600281518110612825576128256152f6565b602002602001015186611bc7565b50506128b8815f01515f01518260800151600481518110612856576128566152f6565b60200260200101515f8151811061286f5761286f6152f6565b60200260200101515f1c8360800151600481518110612890576128906152f6565b60200260200101516002815181106128aa576128aa6152f6565b602002602001015185611eed565b50507f4cb6e22a3e7e651d7cf0376cff48f20f5007a54147777865be7f5f6c38c50f4a3382608001516040516128ef929190615a3f565b60405180910390a1505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d61292a84848484612fa5565b13979650505050505050565b60c081015151156129b0578051602090810151015160a082015160c083015160405163012c676d60e21b81526001600160a01b03909316926304b19db4926129829290916004016159c2565b5f604051808303815f87803b158015612999575f80fd5b505af11580156129ab573d5f803e3d5ffd5b505050505b5f815f0151602001515f01516001600160a01b031663d04dfe236040518060e00160405280855f015160200151602001516001600160a01b03168152602001612a068660a00151305f9182526020526040902090565b8152602001855f01516020015160400151815260200160018152602001856080015181526020015f67ffffffffffffffff811115612a4657612a46614a5b565b604051908082528060200260200182016040528015612a6f578160200160208202803683370190505b5081526020015f604051908082528060200260200182016040528015612a9f578160200160208202803683370190505b508152506040518263ffffffff1660e01b8152600401612abf9190615814565b5f60405180830381865afa158015612ad9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612b00919081019061590c565b9150505f815111156113c2578151602090810151015160a083015160405163012c676d60e21b81526001600160a01b03909216916304b19db491612b489185906004016159c2565b5f604051808303815f87803b158015612b5f575f80fd5b505af1158015612b71573d5f803e3d5ffd5b505050505050565b612b8281613a96565b612ba15780604051630c89984b60e31b81526004016103189190615a60565b50565b60605f612bb18484613ac4565b9050808015612bd257505f3d1180612bd257505f846001600160a01b03163b115b15612be757612bdf613ad7565b9150506102b6565b8015612c1157604051639996b31560e01b81526001600160a01b0385166004820152602401610318565b3d15612c2457612c1f613af0565b612c3d565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b604080516080810182525f808252602082018190529181018290526060810191909152612c718383613afb565b82526040820152612c828284613afb565b6020830152606082015292915050565b5f80516020615c0483398151915254600203612cc157604051633ee5aeb560e01b815260040160405180910390fd5b565b60605f825167ffffffffffffffff811115612ce057612ce0614a5b565b604051908082528060200260200182016040528015612d09578160200160208202803683370190505b5090505f80845111612d1b575f612d21565b83516001015b85516001010190505f8167ffffffffffffffff811115612d4357612d43614a5b565b604051908082528060200260200182016040528015612d7657816020015b6060815260200190600190039081612d615790505b5090505f612d9a604080516002815233602082015230818301526060810190915290565b828281518110612dac57612dac6152f6565b60200260200101819052505f5b8751811015612e09578180600101925050878181518110612ddc57612ddc6152f6565b6020026020010151838381518110612df657612df66152f6565b6020908102919091010152600101612db9565b50855115612f9b57808060010191505083828281518110612e2c57612e2c6152f6565b60200260200101819052505f5b8651811015612f9957612ee8878281518110612e5757612e576152f6565b60200260200101515f0151612ec5612e938a8581518110612e7a57612e7a6152f6565b6020026020010151602001518051602090810291012090565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c902090565b898481518110612ed757612ed76152f6565b602002602001015160400151613b64565b612f0857604051630a57f30960e31b815260048101829052602401610318565b868181518110612f1a57612f1a6152f6565b60200260200101515f01516001600160a01b03165f1b858281518110612f4257612f426152f6565b6020026020010181815250508180600101925050868181518110612f6857612f686152f6565b602002602001015160200151838381518110612f8657612f866152f6565b6020908102919091010152600101612e39565b505b5095945050505050565b5f8085158415178187128286121817858414178015612fca5786859250925050611cae565b505f85841315612fde575092949193919260015b8386035f8112604c8213178015613011578215613003575f8994509450505050611cae565b885f94509450505050611cae565b600a82900a8981028a82828161302957613029615a72565b0514613055578415613045575f8b965096505050505050611cae565b8a5f965096505050505050611cae565b841561306a578896509450611cae9350505050565b9550879450611cae9350505050565b5f80613083613bd4565b60405163b7bad1b160e01b81526001600160a01b038416600482015273200e12d10bb0c5e4a17e7018f0f1161919bb93899063b7bad1b19060240160408051808303815f875af11580156130d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130fd9190615a86565b91509150915091565b5f806001600160e01b038416601b0b60e085901d613125828287613c5f565b9350935050505b9250929050565b5f8061313d613bd4565b604051630782d7e160e01b81526001600160a01b038416600482015273200e12d10bb0c5e4a17e7018f0f1161919bb938990630782d7e1906024016040805180830381865afa1580156130d9573d5f803e3d5ffd5b5f805f61319f8585613dc5565b915091506131ad8282613e0e565b95945050505050565b5f805f805f6131c58787613e47565b9250925092505f806131d78585613e8a565b91509150818380156131e65750815b9650965050505050509250929050565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661324c578383151615613240573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f511483166132b45783831516156132a8573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b5f80851584151780156132dd575f92505f91506133da565b6132e78487615ac6565b91505f6132f388613f62565b90505f6132ff87613f62565b90505f61330c8383613f90565b5090505f6f0785ee10d5da46d900f436a000000000821115613341576f0785ee10d5da46d900f436a000000000820491506025015b670de0b6b3a764000082111561336257670de0b6b3a7640000820491506012015b633b9aca0082111561337b57633b9aca00820491506009015b61271082111561339057612710820491506004015b81156133a457600a82049150600101613390565b6133ae8187615ac6565b95506133d08b8a6133ca87876133c587600a615bc5565b613fac565b89614078565b9097509550505050505b5094509492505050565b5f805f6133f18585613e8a565b9150915080158015613401575081155b1561342957604051638eba4d0760e01b81526004810186905260248101859052604401610318565b509392505050565b5f8061343d8484614118565b909450925061344e86868686613998565b9150915094509492505050565b5f80835f0361348757604051637a97930f60e01b81526004810187905260248101869052604401610318565b855f0361349857505f905080611cae565b5f805f806134a68a8a61416d565b919b50995091506134b7888861416d565b919950975090505f6134c88b613f62565b90505f6134d48a613f62565b90507f161bcca7119915b50764b4abe86529797775a5f1719510000000000000000000604c8183101561389957841561352b57507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b9050604b613871565b6f4b3b4ca85a86c47a098a22400000000083101561365757678ac7230489e800008310156135bb576402540be40083101561358957620186a08310156135795750620186a090506005613832565b506402540be4009050600a613832565b655af3107a40008310156135a85750655af3107a40009050600e613832565b50678ac7230489e8000090506013613832565b6b204fce5e3e2502611000000083101561360d5769152d02c7e14af68000008310156135f6575069152d02c7e14af680000090506017613832565b506b204fce5e3e250261100000009050601c613832565b6d314dc6448d9338c15b0a0000000083101561363c57506d314dc6448d9338c15b0a0000000090506021613832565b506f4b3b4ca85a86c47a098a22400000000090506026613832565b780197d4df19d605767337e9f14d3eec8920e40000000000000083101561374f5773af298d050e4395d69670b12b7f410000000000008310156136ea577172cb5bd86321e38cb6ce6682e800000000008310156136cb57507172cb5bd86321e38cb6ce6682e800000000009050602b613832565b5073af298d050e4395d69670b12b7f4100000000000090506030613832565b76010b46c6cdd6e3e0828f4db456ff0c8ea000000000000083101561372b575076010b46c6cdd6e3e0828f4db456ff0c8ea000000000000090506035613832565b50780197d4df19d605767337e9f14d3eec8920e4000000000000009050603a613832565b7c03b58e88c75313ec9d329eaaa18fb92f75215b171000000000000000008310156137e5577a026e4d30eccc3215dd8f3157d27e23acbdcfe680000000000000008310156137bd57507a026e4d30eccc3215dd8f3157d27e23acbdcfe680000000000000009050603f613832565b507c03b58e88c75313ec9d329eaaa18fb92f75215b1710000000000000000090506044613832565b7e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca00000000000000000083101561383257507e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca000000000000000000905060495b81831161384757600a820491505f1901613832565b815f03613871576040516305e51ecb60e01b8152600481018d9052602481018c9052604401610318565b85613899576040516305e51ecb60e01b8152600481018f9052602481018e9052604401610318565b80600160ff1b018d126138b057808d039c506138ee565b600160ff1b9c90038c015f8113156138ee57806001600160ff1b03038b136138db57998a01996138ee565b5f80995099505050505050505050611cae565b5f808e1280156138fd57505f8c135b1561391e57600160ff1b8e01808d13613916575f61391a565b808d035b9150505b8b818f0103975061393b8f8e613935888789613fac565b8b614078565b90995097505f81131561398557604c811315613965575f809a509a50505050505050505050611cae565b80600a0a898161397757613977615a72565b059850885f03613985575f97505b50969850949650611cae95505050505050565b5f80851584151780156139c457865f036139b85784849250925050611cae565b86869250925050611cae565b6139ce87876143c7565b90975095506139dd85856143c7565b9095509350858413156139f1579395929492935b838603604c811115613a0a578787935093505050611cae565b80600a0a8681613a1c57613a1c615a72565b0595505086850180881860ff90811c151589881890911c15168015613a8557876001600160ff1b0303613a6c5760405163d556b11160e01b8152600481018a905260248101899052604401610318565b600a968790059690980586019760019790970196613a89565b8198505b5096979596505050505050565b5f600882511015613aa857505f919050565b506008015167ffffffffffffffff1667ff0a89c674ee78741490565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f80613b188460600151856040015161265790919063ffffffff16565b915083604001519050613b38836040015183611ab390919063ffffffff16565b1561312c5782604001519150613b5b8460600151836126d490919063ffffffff16565b90509250929050565b5f836001600160a01b03163b5f03613bc2575f80613b828585614404565b5090925090505f816003811115613b9b57613b9b6159da565b148015613bb95750856001600160a01b0316826001600160a01b0316145b925050506103fd565b613bcd84848461444a565b90506103fd565b73200e12d10bb0c5e4a17e7018f0f1161919bb93893b1580613c2b575073200e12d10bb0c5e4a17e7018f0f1161919bb93893f7f1de7d717526cba131d684e312dedbf0852adef9cced9e36798ae4937f7145d4114155b15612cc1576040516373e6d7b360e01b815273200e12d10bb0c5e4a17e7018f0f1161919bb93896004820152602401610318565b5f805f851215613c8c57604051634a7d166b60e01b81526004810186905260248101859052604401610318565b845f03613c9e57505f90506001611bbf565b8460ff8416850185811215613cd05760405163d556b11160e01b81526004810188905260248101879052604401610318565b5f805f831215613d1c57604c19831215613cf3575f809550955050505050611bbf565b825f03600a0a9150818481613d0a57613d0a615a72565b0495505084029091149150611bbf9050565b5f831315613db557604d831315613d595760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610318565b82600a0a9150815f1981613d6f57613d6f615a72565b04841115613da35760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610318565b5091909102925060019150611bbf9050565b8360019550955050505050611bbf565b5f805f805f613dd48787613e47565b92509250925080613e0257604051636238bcb360e11b81526004810184905260248101839052604401610318565b50909590945092505050565b5f805f613e1b8585613e8a565b9150915080613429576040516322c9f7bb60e01b81526004810186905260248101859052604401610318565b5f808060ff841681036001600160ff1b03861115613e7957600a860460018201600a88065f1493509350935050613e83565b8593509150600190505b9250925092565b5f601b83900b8314838382613eee577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e1000000000000000000860515613ece57620186a0860595506005850194505b8586601b0b14613ee957600a86059550846001019450613ece565b613f04565b855f03613f0457505f92506001915061312c9050565b848560030b14613f47575f851215613f2457505f925082915061312c9050565b60405163d556b11160e01b81526004810183905260248101829052604401610318565b50506001600160e01b03841660e084901b1791509250929050565b5f80821215613f8757600160ff1b8203613f815750600160ff1b919050565b505f0390565b5090565b919050565b5f805f1983850993909202808410938190039390930393915050565b5f805f613fb98686613f90565b91509150815f03613fdd57838181613fd357613fd3615a72565b04925050506103fd565b83821061400e5760405163362ced0960e11b8152600481018790526024810186905260448101859052606401610318565b5f84868809600186198101871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103025f82900382900490920185841190960395909502919093039390930492909217029150509392505050565b5f805f85871812156140f4576001600160ff1b038411156140e1576140a56001600160ff1b03600161529d565b84036140b95750600160ff1b905081611cae565b6140c4600a85615bd0565b6140cd90615bef565b6140d8846001615ac6565b91509150611cae565b6140ea84615bef565b8391509150611cae565b6001600160ff1b0384111561410e576140cd600a85615bd0565b5082905081611cae565b5f80600160ff1b8403614163576001600160ff1b0383036141565760405163d556b11160e01b81526004810185905260248101849052604401610318565b600a840593508260010192505b50505f9190910391565b5f805f845f0361418557505f91508190506001613e83565b7546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b85055f03614372576f4b3b4ca85a86c47a098a22400000000085051580156141e757507f80000000000000000000000000000000000000000000000000000000000000268412155b15614208576f4b3b4ca85a86c47a098a224000000000850294506026840393505b7728c87cb5c89a2571ebfdcb54864ada834a00000000000000850515801561425057507f80000000000000000000000000000000000000000000000000000000000000138412155b1561426957678ac7230489e80000850294506013840393505b7b097edd871cfda3a5697758bf0e3cbb5ac5741c64000000000000000085051580156142b557507f800000000000000000000000000000000000000000000000000000000000000a8412155b156142cb576402540be40085029450600a840393505b7e3899162693736ac531a5a58f1fbb4b746504382ca7e4000000000000000000850515801561431a57507f80000000000000000000000000000000000000000000000000000000000000028412155b15614330576064850294506002840393506142cb565b7546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b850515801561436057506001600160ff1b018412155b1561437257600a850294506001840393505b600a8086029081058614801561438f57506001600160ff1b018512155b1561439e578095506001850394505b50939492935050507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b8305151590565b5f805f805f6143d6878761416d565b92509250925080613e02576040516305e51ecb60e01b81526004810188905260248101879052604401610318565b5f805f835160410361443b576020840151604085015160608601515f1a61442d8882858561449b565b955095509550505050613e83565b505081515f9150600290613e83565b805160408051630b135d3f60e11b8082526004820186905260248201929092525f92906020820185604483015e60205f60648401838a5afa9050825f5114601f3d1116811693505050509392505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156144d457505f91506003905082614559565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015614525573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661455057505f925060019150829050614559565b92505f91508190505b9450945094915050565b604051806080016040528061457661458f565b81526020015f81526020015f8152602001606081525090565b6040518060a001604052805f6001600160a01b031681526020016145dd60405180606001604052805f6001600160a01b031681526020015f6001600160a01b03168152602001606081525090565b8152606060208201819052604082018190525f91015290565b6040518060e0016040528061460961458f565b81526020015f81526020015f80191681526020015f8019168152602001606081526020015f8152602001606081525090565b5f6020828403121561464b575f80fd5b81356001600160e01b0319811681146103fd575f80fd5b5f8083601f840112614672575f80fd5b50813567ffffffffffffffff811115614689575f80fd5b6020830191508360208260051b850101111561312c575f80fd5b5f805f604084860312156146b5575f80fd5b833567ffffffffffffffff808211156146cc575f80fd5b9085019060a082880312156146df575f80fd5b909350602085013590808211156146f4575f80fd5b5061470186828701614662565b9497909650939450505050565b5f6020828403121561471e575f80fd5b5035919050565b6001600160a01b0381168114612ba1575f80fd5b8035613f8b81614725565b5f805f805f60808688031215614758575f80fd5b853561476381614725565b94506020860135935060408601359250606086013567ffffffffffffffff81111561478c575f80fd5b61479888828901614662565b969995985093965092949392505050565b5f805f606084860312156147bb575f80fd5b83356147c681614725565b925060208401356147d681614725565b929592945050506040919091013590565b5f805f805f608086880312156147fb575f80fd5b853561480681614725565b9450602086013561481681614725565b935060408601359250606086013567ffffffffffffffff80821115614839575f80fd5b818801915088601f83011261484c575f80fd5b81358181111561485a575f80fd5b89602082850101111561486b575f80fd5b9699959850939650602001949392505050565b5f6020828403121561488e575f80fd5b81356103fd81614725565b5f60c082840312156148a9575f80fd5b50919050565b5f602082840312156148bf575f80fd5b813567ffffffffffffffff8111156148d5575f80fd5b61055684828501614899565b5f805f604084860312156148f3575f80fd5b833567ffffffffffffffff8082111561490a575f80fd5b61491687838801614899565b945060208601359150808211156146f4575f80fd5b5f6020828403121561493b575f80fd5b813567ffffffffffffffff811115614951575f80fd5b8201608081850312156103fd575f80fd5b5f8060208385031215614973575f80fd5b823567ffffffffffffffff811115614989575f80fd5b61499585828601614662565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b82811015614a2457603f19888603018452614a128583516149a1565b945092850192908501906001016149f6565b5092979650505050505050565b5f8060408385031215614a42575f80fd5b8235614a4d81614725565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715614a9257614a92614a5b565b60405290565b6040805190810167ffffffffffffffff81118282101715614a9257614a92614a5b565b60405160a0810167ffffffffffffffff81118282101715614a9257614a92614a5b565b604051601f8201601f1916810167ffffffffffffffff81118282101715614b0757614b07614a5b565b604052919050565b5f82601f830112614b1e575f80fd5b813567ffffffffffffffff811115614b3857614b38614a5b565b614b4b601f8201601f1916602001614ade565b818152846020838601011115614b5f575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608284031215614b8b575f80fd5b614b93614a6f565b90508135614ba081614725565b81526020820135614bb081614725565b6020820152604082013567ffffffffffffffff811115614bce575f80fd5b614bda84828501614b0f565b60408301525092915050565b5f67ffffffffffffffff821115614bff57614bff614a5b565b5060051b60200190565b5f60408284031215614c19575f80fd5b614c21614a98565b90508135614c2e81614725565b808252506020820135602082015292915050565b5f82601f830112614c51575f80fd5b81356020614c66614c6183614be6565b614ade565b8083825260208201915060208460061b870101935086841115614c87575f80fd5b602086015b84811015614cac57614c9e8882614c09565b835291830191604001614c8c565b509695505050505050565b5f60a08284031215614cc7575f80fd5b614ccf614abb565b9050614cda82614739565b8152602082013567ffffffffffffffff80821115614cf6575f80fd5b614d0285838601614b7b565b60208401526040840135915080821115614d1a575f80fd5b614d2685838601614c42565b60408401526060840135915080821115614d3e575f80fd5b50614d4b84828501614c42565b6060830152506080820135608082015292915050565b5f614d6e614c6184614be6565b8381529050602080820190600585811b850187811115614d8c575f80fd5b855b81811015614e7957803567ffffffffffffffff80821115614dad575f80fd5b908801906060828c031215614dc0575f80fd5b614dc8614a6f565b8235614dd381614725565b81528287013582811115614de5575f80fd5b8301601f81018d13614df5575f80fd5b8035614e03614c6182614be6565b81815290881b8201890190898101908f831115614e1e575f80fd5b928a01925b82841015614e3c5783358252928a0192908a0190614e23565b848b01525060409150508381013583811115614e56575f80fd5b614e628e828701614b0f565b918301919091525087525050938301938301614d8e565b50505050509392505050565b5f82601f830112614e94575f80fd5b6103fd83833560208501614d61565b5f805f805f6101408688031215614eb8575f80fd5b853567ffffffffffffffff80821115614ecf575f80fd5b614edb89838a01614cb7565b96506020880135915080821115614ef0575f80fd5b614efc89838a01614cb7565b9550614f0b8960408a01614899565b9450610100880135915080821115614f21575f80fd5b614f2d89838a01614e85565b9350610120880135915080821115614f43575f80fd5b50614f5088828901614e85565b9150509295509295909350565b5f6102b63683614cb7565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8135614f9c81614725565b6001600160a01b039081168452602083013590614fb882614725565b166020840152604082013536839003601e19018112614fd5575f80fd5b820160208101903567ffffffffffffffff811115614ff1575f80fd5b803603821315614fff575f80fd5b606060408601526131ad606086018284614f68565b5f808335601e19843603018112615029575f80fd5b830160208101925035905067ffffffffffffffff811115615048575f80fd5b8060061b360382131561312c575f80fd5b8183525f60208085019450825f5b8581101561509f57813561507a81614725565b6001600160a01b03168752818301358388015260409687019690910190600101615067565b509495945050505050565b5f6001600160a01b0380861683528460208401526060604084015283356150d081614725565b166060830152602083013536849003605e190181126150ed575f80fd5b60a060808401526151046101008401858301614f90565b90506151136040850185615014565b605f19808685030160a087015261512b848385615059565b935061513a6060880188615014565b93509150808685030160c087015250615154838383615059565b92505050608084013560e084015280915050949350505050565b5f61517b614c6184614be6565b80848252602080830192508560051b850136811115615198575f80fd5b855b8181101561522257803567ffffffffffffffff808211156151b9575f80fd5b8189019150604082360312156151cd575f80fd5b6151d5614a98565b8235828111156151e3575f80fd5b6151ef36828601614b7b565b8252508583013582811115615202575f80fd5b61520e36828601614e85565b82880152508752505093820193820161519a565b50919695505050505050565b5f6001600160a01b03808916835280881660208401525085604083015284606083015260a0608083015261526660a083018486614f68565b98975050505050505050565b5f60208284031215615282575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156102b6576102b6615289565b5f808335601e198436030181126152c5575f80fd5b83018035915067ffffffffffffffff8211156152df575f80fd5b6020019150600581901b360382131561312c575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235607e1983360301811261531e575f80fd5b9190910192915050565b5f8235609e1983360301811261531e575f80fd5b5f808335601e19843603018112615351575f80fd5b83018035915067ffffffffffffffff82111561536b575f80fd5b6020019150600681901b360382131561312c575f80fd5b5f60808236031215615392575f80fd5b6040516080810167ffffffffffffffff82821081831117156153b6576153b6614a5b565b8160405284359150808211156153ca575f80fd5b6153d636838701614cb7565b8352602085013560208401526040850135604084015260608501359150808211156153ff575f80fd5b5061540c36828601614e85565b60608301525092915050565b5f60208284031215615428575f80fd5b813580151581146103fd575f80fd5b5f815180845260208085019450602084015f5b8381101561509f57815180516001600160a01b03168852830151838801526040909601959082019060010161544a565b5f6001600160a01b03808351168452602083015160a060208601528181511660a08601528160208201511660c08601526040810151915050606060e08501526154c76101008501826149a1565b9050604083015184820360408601526154e08282615437565b915050606083015184820360608601526154fa8282615437565b915050608083015160808501528091505092915050565b5f815180845260208085019450602084015f5b8381101561509f57815187529582019590820190600101615524565b5f6001600160a01b0380871683526020608081850152865160808086015261556c61010086018261547a565b90508188015160a086015260408089015160c08701526060808a0151607f198885030160e08901528381518086528686019150868160051b87010187840193505f5b8281101561560857601f1988830301845284518a815116835289810151878b8501526155dc88850182615511565b91890151848303858b01529190506155f481836149a1565b968b0196958b0195935050506001016155ae565b5080995050505050505050505083604083015282606083015295945050505050565b5f808335601e1984360301811261563f575f80fd5b83018035915067ffffffffffffffff821115615659575f80fd5b60200191503681900382131561312c575f80fd5b5f8235605e1983360301811261531e575f80fd5b5f6102b63683614b7b565b5f6040828403121561569c575f80fd5b6103fd8383614c09565b6001600160a01b0384168152826020820152606060408201525f6131ad606083018461547a565b6001600160a01b0385168152836020820152606060408201525f6156f5606083018486614f68565b9695505050505050565b5f6103fd368484614d61565b828482375f8382015f815283518060208601835e5f910190815295945050505050565b5f6101206001600160a01b03871683528060208401526157508184018761547a565b90508281036040840152615764818661547a565b9150508235606083015260208301356080830152604083013560a0830152606083013560c0830152608083013560e083015260a083013561010083015295945050505050565b602081525f6103fd602083018461547a565b5f8282518085526020808601955060208260051b840101602086015f5b8481101561580757601f198684030189526157f5838351615511565b988401989250908301906001016157d9565b5090979650505050505050565b602081526001600160a01b038251166020820152602082015160408201525f604083015160e0606084015261584d6101008401826149a1565b9050606084015160808401526080840151601f19808584030160a086015261587583836157bc565b925060a08601519150808584030160c08601526158928383615511565b925060c08601519150808584030160e0860152506131ad8282615511565b5f82601f8301126158bf575f80fd5b815160206158cf614c6183614be6565b8083825260208201915060208460051b8701019350868411156158f0575f80fd5b602086015b84811015614cac57805183529183019183016158f5565b5f806040838503121561591d575f80fd5b825167ffffffffffffffff80821115615934575f80fd5b818501915085601f830112615947575f80fd5b81516020615957614c6183614be6565b82815260059290921b84018101918181019089841115615975575f80fd5b948201945b838610156159935785518252948201949082019061597a565b918801519196509093505050808211156159ab575f80fd5b506159b8858286016158b0565b9150509250929050565b828152604060208201525f6105566040830184615511565b634e487b7160e01b5f52602160045260245ffd5b6001600160a01b03831681526040810160048310615a1a57634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60018201615a3857615a38615289565b5060010190565b6001600160a01b0383168152604060208201525f61055660408301846157bc565b602081525f6103fd60208301846149a1565b634e487b7160e01b5f52601260045260245ffd5b5f8060408385031215615a97575f80fd5b825160048110615aa5575f80fd5b602084015190925060ff81168114615abb575f80fd5b809150509250929050565b8082018281125f83128015821682158216171561136457611364615289565b600181815b80851115615b1f57815f1904821115615b0557615b05615289565b80851615615b1257918102915b93841c9390800290615aea565b509250929050565b5f82615b35575060016102b6565b81615b4157505f6102b6565b8160018114615b575760028114615b6157615b7d565b60019150506102b6565b60ff841115615b7257615b72615289565b50506001821b6102b6565b5060208310610133831016604e8410600b8410161715615ba0575081810a6102b6565b615baa8383615ae5565b805f1904821115615bbd57615bbd615289565b029392505050565b5f6103fd8383615b27565b5f82615bea57634e487b7160e01b5f52601260045260245ffd5b500490565b5f600160ff1b8201613f8157613f8161528956fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00"; /// @dev The runtime bytecode of the contract. bytes constant RUNTIME_CODE = - hex"608060405234801561000f575f80fd5b50600436106100f0575f3560e01c8063613255ab11610093578063ac9650d811610063578063ac9650d81461022b578063d7e442ec1461024b578063d9d98ce41461025e578063fa50118214610273575f80fd5b8063613255ab146101ad57806369c72856146101c0578063709fb8a5146101e85780639235084d146101fb575f80fd5b80632fbc4ba0116100ce5780632fbc4ba01461015157806341d1514f146101665780635cffe9de14610187578063607461191461019a575f80fd5b806301ffc9a7146100f45780631f69cb751461011c5780632cb77e9f1461012f575b5f80fd5b61010761010236600461458d565b610286565b60405190151581526020015b60405180910390f35b61010761012a3660046145f5565b6102bc565b61010761013d366004614660565b5f9081526020819052604090205460011490565b61016461015f366004614696565b610404565b005b6101796101743660046146fb565b61054a565b604051908152602001610113565b610107610195366004614739565b61055e565b6101646101a8366004614696565b61065e565b6101796101bb3660046147d0565b6107f1565b6101d36101ce366004614801565b610859565b60408051928352602083019190915201610113565b6101076101f6366004614833565b610efc565b61020e61020936600461487d565b6111c5565b604080519315158452602084019290925290820152606001610113565b61023e6102393660046148b4565b611286565b6040516101139190614921565b6101646102593660046148b4565b61136c565b61017961026c366004614983565b5f92915050565b610164610281366004614df5565b6113c6565b5f6001600160e01b0319821663e414309160e01b14806102b657506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f6102c5611865565b6102d260208501856147d0565b6001600160a01b0316336001600160a01b031614610321576102f760208501856147d0565b6040516335252be360e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b5f61033361032e86614eaf565b611880565b5f818152602081905260409020549091505f19016103e6575f818152602081905260408082209190915551600192507f09d18501db0080ca2d6cd7c17fa7255daff4b2d503ea93b76ff68b6752ea8e639061039390339084908990614ffc565b60405180910390a16040805160028152602081018390523381830152606081019091526103e6906103d7905b60408051600181526020810192909252818101905290565b6103e185876150c0565b6118af565b506103fd60015f80516020615b6d83398151915255565b9392505050565b61040c611865565b33858561041a838383611a7d565b610424865f611ab3565b610459576040516306dde9c360e41b81523360048201526001600160a01b038916602482015260448101889052606401610318565b5f80610466338b8a611aed565b604080513381526001600160a01b038e1660208201529081018c90526060810183905291935091507f7f9dfa19cf1cc2f806f2f860fbc9c056b601fb1afc0e9b843dfe5c63616268e69060800160405180910390a15f806104c9338d8d8d611bc7565b909250905087156105265760408051600581526001600160a01b038e1660208201528082018d9052606081018490526080810183905260ff851660a082015260c081019091526105269061051c906103bf565b6103e18a8c6150c0565b5050505050505061054360015f80516020615b6d83398151915255565b5050505050565b5f610556848484611cb7565b949350505050565b5f6105736001600160a01b0386168786611e60565b6040516323e30c8b60e01b81525f906001600160a01b038816906323e30c8b906105ab9033908a908a9087908b908b90600401615180565b6020604051808303815f875af11580156105c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105eb91906151c4565b90507f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9811461063057604051630b6c58a960e31b815260048101829052602401610318565b610651873061063f5f896151ef565b6001600160a01b038a16929190611e95565b5060019695505050505050565b610666611865565b338585610674838383611a7d565b5f8080806106828a82611ab3565b6106b657604051623a3a4d60e21b81523360048201526001600160a01b038d166024820152604481018c9052606401610318565b5f6106c2338e8e611cb7565b90506106ce8b82611ed1565b94506106dc338e8e88611eed565b90935091505f6106ed338f88611f64565b80965081925050507f8045c25080b0868951141ed0a91720bcad09a8364a2b3109ee1fd49c1f0bc8b8338f8f8f8a8660405161075f969594939291906001600160a01b03968716815294909516602085015260408401929092526060830152608082015260a081019190915260c00190565b60405180910390a1505060408051600681526001600160a01b038e1660208201528082018d9052606081018490526080810183905260a081018c905260ff851660c0820152600160e08201908152610100820182905261012082019092529089156107d2576107d2816103e18c8e6150c0565b50505050505050505061054360015f80516020615b6d83398151915255565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610835573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b691906151c4565b5f80610863611865565b6108706080840184615202565b90505f0361089157604051639c95219f60e01b815260040160405180910390fd5b6108996144b5565b6108a16144e1565b5f6108af6080870187615202565b5f8181106108bf576108bf615248565b90506020028101906108d1919061525c565b6108db908061527a565b6108e990604081019061528e565b6108f66080890189615202565b5f81811061090657610906615248565b9050602002810190610918919061525c565b6020013581811061092b5761092b615248565b61094192602060409092020190810191506147d0565b90505f6109516080880188615202565b5f81811061096157610961615248565b9050602002810190610973919061525c565b61097d908061527a565b61098b90606081019061528e565b61099860808a018a615202565b5f8181106109a8576109a8615248565b90506020028101906109ba919061525c565b604001358181106109cd576109cd615248565b6109e392602060409092020190810191506147d0565b905060605f6109f560808a018a615202565b6040805160206001939093018302810190915293508a01359150610a1b9050815f611ab3565b610a385760405163315f9e2360e21b815260040160405180910390fd5b5f5b610a4760808b018b615202565b905081108015610a5c5750610a5c825f611ab3565b15610db957610a6e60808b018b615202565b82818110610a7e57610a7e615248565b9050602002810190610a90919061525c565b610a99906152d4565b9650865f01519550846001600160a01b03168660400151886020015181518110610ac557610ac5615248565b60200260200101515f01516001600160a01b0316141580610b1c5750836001600160a01b03168660600151886040015181518110610b0557610b05615248565b60200260200101515f01516001600160a01b031614155b15610b3a5760405163936bb5ad60e01b815260040160405180910390fd5b610b4d8688602001518960400151612027565b5f610b5787611880565b5f81815260208190526040902054909150610bbc578651604080513381526001600160a01b03909216602083015281018290527fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f39060600160405180910390a1610db0565b5f610bd6888a602001518b60400151338d60600151612099565b6060810151909150610bec9060408e0135611ab3565b15610c42578751604080513381526001600160a01b03909216602083015281018390527fe3151dc8cb7a54ffc4baabd28c1f241c94d510b5e5b502491ac3cad6c16316d5906060015b60405180910390a1610dae565b60408101516001600160e01b0316610c9c578751604080513381526001600160a01b03909216602083015281018390527f500b713857325f9e6dcb52ae832eca9109d107ed1aae9cb4928b4c1e13f051aa90606001610c35565b5f808d6060016020810190610cb1919061536a565b15610cea576040830151610cc59087611ed1565b6060840151909250610cd79083612657565b9050610ce386836126a5565b9550610d3b565b5f610d068460400151856060015161265790919063ffffffff16565b9050610d128188611ed1565b9150610d2b8460600151836126d590919063ffffffff16565b9250610d3787836126a5565b9650505b610d458c82612705565b9b50610d518d83612705565b9c50610d5e818385612735565b7f194f1feb3b4d7076a2c272e774e792e0c48bb8c7aa1a9a3671c1cd6da9e6b4c1338c8484604051610d939493929190615492565b60405180910390a15050845160010180865260200285018190525b505b50600101610a3a565b505f9050610dcd60808a0160608b0161536a565b610dd75786610dd9565b875b9050610de6818a356128fd565b15610e0e5760405163573b6f4160e01b81528935600482015260248101829052604401610318565b50610e1a338389611f64565b505f9050610e2b60a08a018a61557c565b90501115610e99573363691f9ed783858a8a610e4a60a08f018f61557c565b6040518763ffffffff1660e01b8152600401610e6b96959493929190615180565b5f604051808303815f87803b158015610e82575f80fd5b505af1158015610e94573d5f803e3d5ffd5b505050505b610ea4338488611aed565b50505f5b8151811015610edb57610ed3828281518110610ec657610ec6615248565b6020026020010151612937565b600101610ea8565b505050505050610ef760015f80516020615b6d83398151915255565b915091565b5f610f05611865565b610f12602085018561528e565b90505f03610f3357604051636c44ef8f60e01b815260040160405180910390fd5b610f40604085018561528e565b90505f03610f615760405163540e5f0b60e01b815260040160405180910390fd5b6040805160a081019091523381525f9060208101610f7f87806155bf565b610f88906155d3565b8152602001868060200190610f9d919061528e565b808060200260200160405190810160405280939291908181526020015f905b82821015610fe857610fd9604083028601368190038101906155de565b81526020019060010190610fbc565b5050509183525050602001611000604088018861528e565b808060200260200160405190810160405280939291908181526020015f905b8282101561104b5761103c604083028601368190038101906155de565b8152602001906001019061101f565b50505050508152602001866060013581525090505f61106982611880565b5f818152602081905260409020549091501580156111ab575f828152602081905260409081902060019055835190517f87491344dfbcf91f6cbbc610cbbeedc85313d37a02df0c93527f7ea5f8db717f916110c791859087906155f8565b60405180910390a15f6110dd60a089018961557c565b905011156111795761112e6110f560a089018961557c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250612b7a92505050565b82517fd46c2c56b35c8210e9e712ec3f02242d5fc90187c0ac8ed80cc33626846ec369908361116060a08b018b61557c565b604051611170949392919061561f565b60405180910390a15b6040805160028152602081018490523381830152606081019091526111ab906111a1906103bf565b6103e187896150c0565b925050506103fd60015f80516020615b6d83398151915255565b5f8080806111df6111d6868061527a565b61032e90614eaf565b5f8181526020819052604090205490915060011461120657505f925082915081905061127f565b61122b611213868061527a565b61121c90614eaf565b86602001358760400135612027565b5f611268611239878061527a565b61124290614eaf565b602088013560408901353361125a60608c018c615202565b61126391615651565b612099565b905060018160400151826060015194509450945050505b9193909250565b604080515f8152602081019091526060908267ffffffffffffffff8111156112b0576112b06149ad565b6040519080825280602002602001820160405280156112e357816020015b60608152602001906001900390816112ce5790505b5091505f5b838110156113645761133f3086868481811061130657611306615248565b9050602002810190611318919061557c565b8560405160200161132b9392919061565d565b604051602081830303815290604052612ba5565b83828151811061135157611351615248565b60209081029190910101526001016112e8565b505092915050565b611374611865565b604080515f808252602082019092526113ac916113a1565b606081526020019060019003908161138c5790505b506103e183856150c0565b6113c260015f80516020615b6d83398151915255565b5050565b6113ce611865565b835185516001600160a01b039182169116036113fd57604051630a98f1f360e21b815260040160405180910390fd5b836040015183604001358151811061141757611417615248565b60200260200101515f01516001600160a01b0316856060015184602001358151811061144557611445615248565b60200260200101515f01516001600160a01b03161415806114be575060408501518051843590811061147957611479615248565b60200260200101515f01516001600160a01b031684606001518460600135815181106114a7576114a7615248565b60200260200101515f01516001600160a01b031614155b156114dc5760405163936bb5ad60e01b815260040160405180910390fd5b84606001518360200135815181106114f6576114f6615248565b60200260200101515f01516001600160a01b03168560400151845f01358151811061152357611523615248565b60200260200101515f01516001600160a01b03160361155557604051631cd2f1c760e21b815260040160405180910390fd5b5f805f61156188611880565b81526020019081526020015f2054036115d1577fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f333865f01516115a388611880565b604080516001600160a01b0394851681529390921660208401529082015260600160405180910390a161184f565b5f805f6115dd87611880565b81526020019081526020015f20540361161f577fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f333855f01516115a387611880565b7f6fa7f4c28634b0a9d6831401c45ae468195fb63aed07308935c35374ff5d9e39338686866040516116549493929190615680565b60405180910390a15f61167486855f01358660200135885f015186612099565b90505f61168f86866040013587606001358a5f015188612099565b90505f61169c8383612c45565b90506116b08160400151825f015185612735565b6116c38160600151826020015184612735565b606081015181515f916116d691906126a5565b90505f6116f4836040015184602001516126a590919063ffffffff16565b9050611700825f6128fd565b806117105750611710815f6128fd565b1561172e57604051630d86822160e01b815260040160405180910390fd5b611762338b606001518a602001358151811061174c5761174c615248565b60200260200101515f01518a6080013585611bc7565b5050611798338a606001518a606001358151811061178257611782615248565b60200260200101515f01518a60a0013584611bc7565b5050604080513381528451602080830191909152850151818301529084015160608083019190915284015160808201527fd9fa84dd790c969daa5c33d8050dc06b4a9b59d5b42e2be5f5e8ae20447f618d925060a001905060405180910390a161180183612937565b61180a82612937565b80516001600160e01b031615801561182d575060208101516001600160e01b0316155b1561184b576040516321badf1f60e01b815260040160405180910390fd5b5050505b61054360015f80516020615b6d83398151915255565b61186d612c93565b60025f80516020615b6d83398151915255565b5f8160405160200161189291906156fc565b604051602081830303815290604052805190602001209050919050565b335f8181523060209081526040808320815160a0810183528083018581526060808301879052608083018190529082528185015282518581529384018581528484019093529093909291905b8651811015611a735786818151811061191657611916615248565b602002602001015193505f845f015160400151511115611a6b575f845f01515f01516001600160a01b031663d04dfe236040518060e00160405280885f0151602001516001600160a01b03168152602001898152602001885f01516040015181526020015f815260200161198e8d8a60200151612cc4565b8152602001878152602001868152506040518263ffffffff1660e01b81526004016119b99190615766565b5f60405180830381865afa1580156119d3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119fa919081019061585e565b9150505f81511115611a695784516020015160405163012c676d60e21b81526001600160a01b03909116906304b19db490611a3b908a908590600401615914565b5f604051808303815f87803b158015611a52575f80fd5b505af1158015611a64573d5f803e3d5ffd5b505050505b505b6001016118fb565b5050505050505050565b80611aae576040516305dbdfd960e41b81526001600160a01b03808516600483015283166024820152604401610318565b505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d611ae184848484612fa6565b12979650505050505050565b5f805f80611afa8661307a565b90925090506001826003811115611b1357611b1361592c565b14158015611b3257505f826003811115611b2f57611b2f61592c565b14155b15611b5457858260405163ee07877f60e01b8152600401610318929190615940565b611b5e855f6128fd565b15611b7c57604051632eaefac360e21b815260040160405180910390fd5b5f80611b888784613107565b9150915080611b9d57611b9a82615979565b91505b8115611bb857611bb86001600160a01b0389168a3085611e95565b5093509150505b935093915050565b5f80611bd383826128fd565b15611bf45760405163793a8f5560e01b815260048101849052602401610318565b83611c1257611c04868685611f64565b505f9250829150611cae9050565b6001600160a01b038087165f908152600160209081526040808320938916835292815282822087835290529081205490611c4c8286612705565b9050611c58815f6128fd565b15611c795760405163c5e12af560e01b815260048101829052602401610318565b6001600160a01b038089165f908152600160209081526040808320938b16835292815282822089835290522081905590925090505b94509492505050565b5f8115611cf157506001600160a01b038084165f9081526001602090815260408083209386168352928152828220848352905220546103fd565b5f80611cfc85613134565b90925090506001826003811115611d1557611d1561592c565b14158015611d3457505f826003811115611d3157611d3161592c565b14155b15611d5657848260405163ee07877f60e01b8152600401610318929190615940565b6040516370a0823160e01b81526001600160a01b0387811660048301525f91611dca918816906370a0823190602401602060405180830381865afa158015611da0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc491906151c4565b83613193565b604051636eb1769f60e11b81526001600160a01b0389811660048301523060248301529192505f91611e48919089169063dd62ed3e90604401602060405180830381865afa158015611e1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e4291906151c4565b846131b7565b509050611e558282611ed1565b9450505050506103fd565b611e6d83838360016131f7565b611aae57604051635274afe760e01b81526001600160a01b0384166004820152602401610318565b611ea3848484846001613259565b611ecb57604051635274afe760e01b81526001600160a01b0385166004820152602401610318565b50505050565b5f611edc83836128fd565b611ee657816103fd565b5090919050565b5f80611ef983826128fd565b15611f1a5760405163793a8f5560e01b815260048101849052602401610318565b83611f2a57611c04868685611aed565b6001600160a01b038087165f908152600160209081526040808320938916835292815282822087835290529081205490611c4c82866126a5565b5f805f80611f718661307a565b90925090506001826003811115611f8a57611f8a61592c565b14158015611fa957505f826003811115611fa657611fa661592c565b14155b15611fcb57858260405163ee07877f60e01b8152600401610318929190615940565b611fd5855f6128fd565b15611ff357604051632d1671a360e11b815260040160405180910390fd5b5f611ffe8683613107565b509050801561201b5761201b6001600160a01b0388168983611e60565b97909650945050505050565b8260600151818151811061203d5761203d615248565b60200260200101515f01516001600160a01b03168360400151838151811061206757612067615248565b60200260200101515f01516001600160a01b031603611aae57604051631cd2f1c760e21b815260040160405180910390fd5b6120a1614548565b5f6120ab87611880565b60408051600480825260a082019092529192506060915f91816020015b60608152602001906001900390816120c85790505089516040805160038152602081018790526001600160a01b0392831681830152918916606083015260808201905290915081600180038151811061212357612123615248565b60200260200101819052505f806121598b604001518b8151811061214957612149615248565b60200260200101515f0151613134565b909250905060018260038111156121725761217261592c565b1415801561219157505f82600381111561218e5761218e61592c565b14155b156121d3578a604001518a815181106121ac576121ac615248565b60200260200101515f01518260405163ee07877f60e01b8152600401610318929190615940565b5f6122238c5f01518d604001518d815181106121f1576121f1615248565b60200260200101515f01518e604001518e8151811061221257612212615248565b602002602001015160200151611cb7565b90506122b28c604001518c8151811061223e5761223e615248565b60200260200101515f01516001600160a01b03165f1b8360ff165f1b8e604001518e8151811061227057612270615248565b602002602001015160200151845f801b60408051600581526020810196909652858101949094526060850192909252608084015260a083015260c08201905290565b846001600303815181106122c8576122c8615248565b60200260200101819052505050505f806122f18b606001518a8151811061214957612149615248565b9092509050600182600381111561230a5761230a61592c565b1415801561232957505f8260038111156123265761232661592c565b14155b15612344578a6060015189815181106121ac576121ac615248565b5f6123838c5f01518d606001518c8151811061236257612362615248565b60200260200101515f01518e606001518d8151811061221257612212615248565b90506123d08c606001518b8151811061239e5761239e615248565b60200260200101515f01516001600160a01b03165f1b8360ff165f1b8e606001518d8151811061227057612270615248565b846001600403815181106123e6576123e6615248565b60200260200101819052505050506123fe8186612cc4565b9150505f885f01516001600160a01b031690505f808a602001515f01516001600160a01b031663d04dfe236040518060e001604052808e60200151602001516001600160a01b0316815260200161245e87305f9182526020526040902090565b81526020018e602001516040015181526020015f81526020018781526020015f67ffffffffffffffff811115612496576124966149ad565b6040519080825280602002602001820160405280156124bf578160200160208202803683370190505b5081526020015f6040519080825280602002602001820160405280156124ef578160200160208202803683370190505b508152506040518263ffffffff1660e01b815260040161250f9190615766565b5f60405180830381865afa158015612529573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612550919081019061585e565b9150915060028251101561257c578151604051630fbb8e5560e21b815260040161031891815260200190565b6020820151604083015160608d015180515f91908d9081106125a0576125a0615248565b602002602001015190505f6125c08f5f0151835f01518460200151611cb7565b90506125cc8382611ed1565b6040805160028152602081018390528082018790526060810190915290935091506125f49050565b8660028151811061260757612607615248565b60200260200101819052506040518060e001604052808e81526020018c81526020018281526020018381526020018781526020018681526020018481525097505050505050505095945050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480612687868686866132c6565b915091505f61269683836133e5565b509a9950505050505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480612687868686866134bd565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480612687868686866134e7565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d848061268786868686613a24565b82816080015160038151811061274d5761274d615248565b602002602001015160048151811061276757612767615248565b60200260200101818152505081816080015160048151811061278b5761278b615248565b60200260200101516004815181106127a5576127a5615248565b602002602001018181525050612834815f01515f015182608001516003815181106127d2576127d2615248565b60200260200101515f815181106127eb576127eb615248565b60200260200101515f1c836080015160038151811061280c5761280c615248565b602002602001015160028151811061282657612826615248565b602002602001015186611bc7565b50506128b9815f01515f0151826080015160048151811061285757612857615248565b60200260200101515f8151811061287057612870615248565b60200260200101515f1c836080015160048151811061289157612891615248565b60200260200101516002815181106128ab576128ab615248565b602002602001015185611eed565b50507f4cb6e22a3e7e651d7cf0376cff48f20f5007a54147777865be7f5f6c38c50f4a3382608001516040516128f0929190615991565b60405180910390a1505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d61292b84848484612fa6565b13979650505050505050565b60c081015151156129b1578051602090810151015160a082015160c083015160405163012c676d60e21b81526001600160a01b03909316926304b19db492612983929091600401615914565b5f604051808303815f87803b15801561299a575f80fd5b505af11580156129ac573d5f803e3d5ffd5b505050505b5f815f0151602001515f01516001600160a01b031663d04dfe236040518060e00160405280855f015160200151602001516001600160a01b03168152602001612a078660a00151305f9182526020526040902090565b8152602001855f01516020015160400151815260200160018152602001856080015181526020015f67ffffffffffffffff811115612a4757612a476149ad565b604051908082528060200260200182016040528015612a70578160200160208202803683370190505b5081526020015f604051908082528060200260200182016040528015612aa0578160200160208202803683370190505b508152506040518263ffffffff1660e01b8152600401612ac09190615766565b5f60405180830381865afa158015612ada573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612b01919081019061585e565b9150505f815111156113c2578151602090810151015160a083015160405163012c676d60e21b81526001600160a01b03909216916304b19db491612b49918590600401615914565b5f604051808303815f87803b158015612b60575f80fd5b505af1158015612b72573d5f803e3d5ffd5b505050505050565b612b8381613b22565b612ba25780604051630c89984b60e31b815260040161031891906159b2565b50565b60605f612bb28484613b50565b9050808015612bd357505f3d1180612bd357505f846001600160a01b03163b115b15612be857612be0613b63565b9150506102b6565b8015612c1257604051639996b31560e01b81526001600160a01b0385166004820152602401610318565b3d15612c2557612c20613b7c565b612c3e565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b604080516080810182525f808252602082018190529181018290526060810191909152612c728383613b87565b82526040820152612c838284613b87565b6020830152606082015292915050565b5f80516020615b6d83398151915254600203612cc257604051633ee5aeb560e01b815260040160405180910390fd5b565b60605f825167ffffffffffffffff811115612ce157612ce16149ad565b604051908082528060200260200182016040528015612d0a578160200160208202803683370190505b5090505f80845111612d1c575f612d22565b83516001015b85516001010190505f8167ffffffffffffffff811115612d4457612d446149ad565b604051908082528060200260200182016040528015612d7757816020015b6060815260200190600190039081612d625790505b5090505f612d9b604080516002815233602082015230818301526060810190915290565b828281518110612dad57612dad615248565b60200260200101819052505f5b8751811015612e0a578180600101925050878181518110612ddd57612ddd615248565b6020026020010151838381518110612df757612df7615248565b6020908102919091010152600101612dba565b50855115612f9c57808060010191505083828281518110612e2d57612e2d615248565b60200260200101819052505f5b8651811015612f9a57612ee9878281518110612e5857612e58615248565b60200260200101515f0151612ec6612e948a8581518110612e7b57612e7b615248565b6020026020010151602001518051602090810291012090565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c902090565b898481518110612ed857612ed8615248565b602002602001015160400151613bf0565b612f0957604051630a57f30960e31b815260048101829052602401610318565b868181518110612f1b57612f1b615248565b60200260200101515f01516001600160a01b03165f1b858281518110612f4357612f43615248565b6020026020010181815250508180600101925050868181518110612f6957612f69615248565b602002602001015160200151838381518110612f8757612f87615248565b6020908102919091010152600101612e3a565b505b5095945050505050565b5f8085158415178187128286121817858414178015612fcb5786859250925050611cae565b505f85841315612fdf575092949193919260015b8386035f8112604c8213178015613012578215613004575f8994509450505050611cae565b885f94509450505050611cae565b600a82900a8981028a82828161302a5761302a6159c4565b0514613056578415613046575f8b965096505050505050611cae565b8a5f965096505050505050611cae565b841561306b578896509450611cae9350505050565b9550879450611cae9350505050565b5f80613084613c60565b60405163b7bad1b160e01b81526001600160a01b038416600482015273200e12d10bb0c5e4a17e7018f0f1161919bb93899063b7bad1b19060240160408051808303815f875af11580156130da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130fe91906159d8565b91509150915091565b5f806001600160e01b038416601b0b60e085901d613126828287613ceb565b9350935050505b9250929050565b5f8061313e613c60565b604051630782d7e160e01b81526001600160a01b038416600482015273200e12d10bb0c5e4a17e7018f0f1161919bb938990630782d7e1906024016040805180830381865afa1580156130da573d5f803e3d5ffd5b5f805f6131a08585613de7565b915091506131ae8282613e30565b95945050505050565b5f805f805f6131c68787613e71565b9250925092505f806131d885856133e5565b91509150818380156131e75750815b9650965050505050509250929050565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661324d578383151615613241573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f511483166132b55783831516156132a9573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b5f80851584151780156132de575f92505f91506133db565b6132e88487615a18565b91505f6132f488613eb4565b90505f61330087613eb4565b90505f61330d8383613ee2565b5090505f6f0785ee10d5da46d900f436a000000000821115613342576f0785ee10d5da46d900f436a000000000820491506025015b670de0b6b3a764000082111561336357670de0b6b3a7640000820491506012015b633b9aca0082111561337c57633b9aca00820491506009015b61271082111561339157612710820491506004015b81156133a557600a82049150600101613391565b6133af8187615a18565b95506133d18b8a6133cb87876133c687600a615b17565b613efe565b89613fca565b9097509550505050505b5094509492505050565b5f601b83900b8314838382613449577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e100000000000000000086051561342957620186a0860595506005850194505b8586601b0b1461344457600a86059550846001019450613429565b61345f565b855f0361345f57505f92506001915061312d9050565b848560030b146134a2575f85121561347f57505f925082915061312d9050565b60405163d556b11160e01b81526004810183905260248101829052604401610318565b50506001600160e01b03841660e084901b1791509250929050565b5f806134c9848461406a565b90945092506134da86868686613a24565b9150915094509492505050565b5f80835f0361351357604051637a97930f60e01b81526004810187905260248101869052604401610318565b855f0361352457505f905080611cae565b5f805f806135328a8a6140bf565b919b509950915061354388886140bf565b919950975090505f6135548b613eb4565b90505f6135608a613eb4565b90507f161bcca7119915b50764b4abe86529797775a5f1719510000000000000000000604c818310156139255784156135b757507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b9050604b6138fd565b6f4b3b4ca85a86c47a098a2240000000008310156136e357678ac7230489e80000831015613647576402540be40083101561361557620186a08310156136055750620186a0905060056138be565b506402540be4009050600a6138be565b655af3107a40008310156136345750655af3107a40009050600e6138be565b50678ac7230489e80000905060136138be565b6b204fce5e3e250261100000008310156136995769152d02c7e14af6800000831015613682575069152d02c7e14af6800000905060176138be565b506b204fce5e3e250261100000009050601c6138be565b6d314dc6448d9338c15b0a000000008310156136c857506d314dc6448d9338c15b0a00000000905060216138be565b506f4b3b4ca85a86c47a098a224000000000905060266138be565b780197d4df19d605767337e9f14d3eec8920e4000000000000008310156137db5773af298d050e4395d69670b12b7f41000000000000831015613776577172cb5bd86321e38cb6ce6682e8000000000083101561375757507172cb5bd86321e38cb6ce6682e800000000009050602b6138be565b5073af298d050e4395d69670b12b7f41000000000000905060306138be565b76010b46c6cdd6e3e0828f4db456ff0c8ea00000000000008310156137b7575076010b46c6cdd6e3e0828f4db456ff0c8ea0000000000000905060356138be565b50780197d4df19d605767337e9f14d3eec8920e4000000000000009050603a6138be565b7c03b58e88c75313ec9d329eaaa18fb92f75215b17100000000000000000831015613871577a026e4d30eccc3215dd8f3157d27e23acbdcfe6800000000000000083101561384957507a026e4d30eccc3215dd8f3157d27e23acbdcfe680000000000000009050603f6138be565b507c03b58e88c75313ec9d329eaaa18fb92f75215b17100000000000000000905060446138be565b7e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca0000000000000000008310156138be57507e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca000000000000000000905060495b8183116138d357600a820491505f19016138be565b815f036138fd576040516305e51ecb60e01b8152600481018d9052602481018c9052604401610318565b85613925576040516305e51ecb60e01b8152600481018f9052602481018e9052604401610318565b80600160ff1b018d1261393c57808d039c5061397a565b600160ff1b9c90038c015f81131561397a57806001600160ff1b03038b1361396757998a019961397a565b5f80995099505050505050505050611cae565b5f808e12801561398957505f8c135b156139aa57600160ff1b8e01808d136139a2575f6139a6565b808d035b9150505b8b818f010397506139c78f8e6139c1888789613efe565b8b613fca565b90995097505f811315613a1157604c8113156139f1575f809a509a50505050505050505050611cae565b80600a0a8981613a0357613a036159c4565b059850885f03613a11575f97505b50969850949650611cae95505050505050565b5f8085158415178015613a5057865f03613a445784849250925050611cae565b86869250925050611cae565b613a5a8787614319565b9097509550613a698585614319565b909550935085841315613a7d579395929492935b838603604c811115613a96578787935093505050611cae565b80600a0a8681613aa857613aa86159c4565b0595505086850180881860ff90811c151589881890911c15168015613b1157876001600160ff1b0303613af85760405163d556b11160e01b8152600481018a905260248101899052604401610318565b600a968790059690980586019760019790970196613b15565b8198505b5096979596505050505050565b5f600882511015613b3457505f919050565b506008015167ffffffffffffffff1667ff0a89c674ee78741490565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f80613ba48460600151856040015161265790919063ffffffff16565b915083604001519050613bc4836040015183611ab390919063ffffffff16565b1561312d5782604001519150613be78460600151836126d590919063ffffffff16565b90509250929050565b5f836001600160a01b03163b5f03613c4e575f80613c0e8585614356565b5090925090505f816003811115613c2757613c2761592c565b148015613c455750856001600160a01b0316826001600160a01b0316145b925050506103fd565b613c5984848461439c565b90506103fd565b73200e12d10bb0c5e4a17e7018f0f1161919bb93893b1580613cb7575073200e12d10bb0c5e4a17e7018f0f1161919bb93893f7f1de7d717526cba131d684e312dedbf0852adef9cced9e36798ae4937f7145d4114155b15612cc2576040516373e6d7b360e01b815273200e12d10bb0c5e4a17e7018f0f1161919bb93896004820152602401610318565b5f805f851215613d1857604051634a7d166b60e01b81526004810186905260248101859052604401610318565b845f03613d2a57505f90506001611bbf565b8460ff8416850185811215613d5c5760405163d556b11160e01b81526004810188905260248101879052604401610318565b5f805f831215613da857604c19831215613d7f575f809550955050505050611bbf565b825f03600a0a9150818481613d9657613d966159c4565b0495505084029091149150611bbf9050565b5f831315613dd757613dbb83600a615b17565b9150613dc78285615b22565b955060019450611bbf9350505050565b8360019550955050505050611bbf565b5f805f805f613df68787613e71565b92509250925080613e2457604051636238bcb360e11b81526004810184905260248101839052604401610318565b50909590945092505050565b5f805f613e3d85856133e5565b9150915080613e69576040516322c9f7bb60e01b81526004810186905260248101859052604401610318565b509392505050565b5f808060ff841681036001600160ff1b03861115613ea357600a860460018201600a88065f1493509350935050613ead565b8593509150600190505b9250925092565b5f80821215613ed957600160ff1b8203613ed35750600160ff1b919050565b505f0390565b5090565b919050565b5f805f1983850993909202808410938190039390930393915050565b5f805f613f0b8686613ee2565b91509150815f03613f2f57838181613f2557613f256159c4565b04925050506103fd565b838210613f605760405163362ced0960e11b8152600481018790526024810186905260448101859052606401610318565b5f84868809600186198101871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103025f82900382900490920185841190960395909502919093039390930492909217029150509392505050565b5f805f8587181215614046576001600160ff1b0384111561403357613ff76001600160ff1b0360016151ef565b840361400b5750600160ff1b905081611cae565b614016600a85615b39565b61401f90615b58565b61402a846001615a18565b91509150611cae565b61403c84615b58565b8391509150611cae565b6001600160ff1b038411156140605761401f600a85615b39565b5082905081611cae565b5f80600160ff1b84036140b5576001600160ff1b0383036140a85760405163d556b11160e01b81526004810185905260248101849052604401610318565b600a840593508260010192505b50505f9190910391565b5f805f845f036140d757505f91508190506001613ead565b7546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b85055f036142c4576f4b3b4ca85a86c47a098a224000000000850515801561413957507f80000000000000000000000000000000000000000000000000000000000000268412155b1561415a576f4b3b4ca85a86c47a098a224000000000850294506026840393505b7728c87cb5c89a2571ebfdcb54864ada834a0000000000000085051580156141a257507f80000000000000000000000000000000000000000000000000000000000000138412155b156141bb57678ac7230489e80000850294506013840393505b7b097edd871cfda3a5697758bf0e3cbb5ac5741c640000000000000000850515801561420757507f800000000000000000000000000000000000000000000000000000000000000a8412155b1561421d576402540be40085029450600a840393505b7e3899162693736ac531a5a58f1fbb4b746504382ca7e4000000000000000000850515801561426c57507f80000000000000000000000000000000000000000000000000000000000000028412155b156142825760648502945060028403935061421d565b7546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b85051580156142b257506001600160ff1b018412155b156142c457600a850294506001840393505b600a808602908105861480156142e157506001600160ff1b018512155b156142f0578095506001850394505b50939492935050507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b8305151590565b5f805f805f61432887876140bf565b92509250925080613e24576040516305e51ecb60e01b81526004810188905260248101879052604401610318565b5f805f835160410361438d576020840151604085015160608601515f1a61437f888285856143ed565b955095509550505050613ead565b505081515f9150600290613ead565b805160408051630b135d3f60e11b8082526004820186905260248201929092525f92906020820185604483015e60205f60648401838a5afa9050825f5114601f3d1116811693505050509392505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561442657505f915060039050826144ab565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015614477573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b0381166144a257505f9250600191508290506144ab565b92505f91508190505b9450945094915050565b60405180608001604052806144c86144e1565b81526020015f81526020015f8152602001606081525090565b6040518060a001604052805f6001600160a01b0316815260200161452f60405180606001604052805f6001600160a01b031681526020015f6001600160a01b03168152602001606081525090565b8152606060208201819052604082018190525f91015290565b6040518060e0016040528061455b6144e1565b81526020015f81526020015f80191681526020015f8019168152602001606081526020015f8152602001606081525090565b5f6020828403121561459d575f80fd5b81356001600160e01b0319811681146103fd575f80fd5b5f8083601f8401126145c4575f80fd5b50813567ffffffffffffffff8111156145db575f80fd5b6020830191508360208260051b850101111561312d575f80fd5b5f805f60408486031215614607575f80fd5b833567ffffffffffffffff8082111561461e575f80fd5b9085019060a08288031215614631575f80fd5b90935060208501359080821115614646575f80fd5b50614653868287016145b4565b9497909650939450505050565b5f60208284031215614670575f80fd5b5035919050565b6001600160a01b0381168114612ba2575f80fd5b8035613edd81614677565b5f805f805f608086880312156146aa575f80fd5b85356146b581614677565b94506020860135935060408601359250606086013567ffffffffffffffff8111156146de575f80fd5b6146ea888289016145b4565b969995985093965092949392505050565b5f805f6060848603121561470d575f80fd5b833561471881614677565b9250602084013561472881614677565b929592945050506040919091013590565b5f805f805f6080868803121561474d575f80fd5b853561475881614677565b9450602086013561476881614677565b935060408601359250606086013567ffffffffffffffff8082111561478b575f80fd5b818801915088601f83011261479e575f80fd5b8135818111156147ac575f80fd5b8960208285010111156147bd575f80fd5b9699959850939650602001949392505050565b5f602082840312156147e0575f80fd5b81356103fd81614677565b5f60c082840312156147fb575f80fd5b50919050565b5f60208284031215614811575f80fd5b813567ffffffffffffffff811115614827575f80fd5b610556848285016147eb565b5f805f60408486031215614845575f80fd5b833567ffffffffffffffff8082111561485c575f80fd5b614868878388016147eb565b94506020860135915080821115614646575f80fd5b5f6020828403121561488d575f80fd5b813567ffffffffffffffff8111156148a3575f80fd5b8201608081850312156103fd575f80fd5b5f80602083850312156148c5575f80fd5b823567ffffffffffffffff8111156148db575f80fd5b6148e7858286016145b4565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b8281101561497657603f198886030184526149648583516148f3565b94509285019290850190600101614948565b5092979650505050505050565b5f8060408385031215614994575f80fd5b823561499f81614677565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156149e4576149e46149ad565b60405290565b6040805190810167ffffffffffffffff811182821017156149e4576149e46149ad565b60405160a0810167ffffffffffffffff811182821017156149e4576149e46149ad565b604051601f8201601f1916810167ffffffffffffffff81118282101715614a5957614a596149ad565b604052919050565b5f82601f830112614a70575f80fd5b813567ffffffffffffffff811115614a8a57614a8a6149ad565b614a9d601f8201601f1916602001614a30565b818152846020838601011115614ab1575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608284031215614add575f80fd5b614ae56149c1565b90508135614af281614677565b81526020820135614b0281614677565b6020820152604082013567ffffffffffffffff811115614b20575f80fd5b614b2c84828501614a61565b60408301525092915050565b5f67ffffffffffffffff821115614b5157614b516149ad565b5060051b60200190565b5f60408284031215614b6b575f80fd5b614b736149ea565b90508135614b8081614677565b808252506020820135602082015292915050565b5f82601f830112614ba3575f80fd5b81356020614bb8614bb383614b38565b614a30565b8083825260208201915060208460061b870101935086841115614bd9575f80fd5b602086015b84811015614bfe57614bf08882614b5b565b835291830191604001614bde565b509695505050505050565b5f60a08284031215614c19575f80fd5b614c21614a0d565b9050614c2c8261468b565b8152602082013567ffffffffffffffff80821115614c48575f80fd5b614c5485838601614acd565b60208401526040840135915080821115614c6c575f80fd5b614c7885838601614b94565b60408401526060840135915080821115614c90575f80fd5b50614c9d84828501614b94565b6060830152506080820135608082015292915050565b5f614cc0614bb384614b38565b8381529050602080820190600585811b850187811115614cde575f80fd5b855b81811015614dcb57803567ffffffffffffffff80821115614cff575f80fd5b908801906060828c031215614d12575f80fd5b614d1a6149c1565b8235614d2581614677565b81528287013582811115614d37575f80fd5b8301601f81018d13614d47575f80fd5b8035614d55614bb382614b38565b81815290881b8201890190898101908f831115614d70575f80fd5b928a01925b82841015614d8e5783358252928a0192908a0190614d75565b848b01525060409150508381013583811115614da8575f80fd5b614db48e828701614a61565b918301919091525087525050938301938301614ce0565b50505050509392505050565b5f82601f830112614de6575f80fd5b6103fd83833560208501614cb3565b5f805f805f6101408688031215614e0a575f80fd5b853567ffffffffffffffff80821115614e21575f80fd5b614e2d89838a01614c09565b96506020880135915080821115614e42575f80fd5b614e4e89838a01614c09565b9550614e5d8960408a016147eb565b9450610100880135915080821115614e73575f80fd5b614e7f89838a01614dd7565b9350610120880135915080821115614e95575f80fd5b50614ea288828901614dd7565b9150509295509295909350565b5f6102b63683614c09565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8135614eee81614677565b6001600160a01b039081168452602083013590614f0a82614677565b166020840152604082013536839003601e19018112614f27575f80fd5b820160208101903567ffffffffffffffff811115614f43575f80fd5b803603821315614f51575f80fd5b606060408601526131ae606086018284614eba565b5f808335601e19843603018112614f7b575f80fd5b830160208101925035905067ffffffffffffffff811115614f9a575f80fd5b8060061b360382131561312d575f80fd5b8183525f60208085019450825f5b85811015614ff1578135614fcc81614677565b6001600160a01b03168752818301358388015260409687019690910190600101614fb9565b509495945050505050565b5f6001600160a01b03808616835284602084015260606040840152833561502281614677565b166060830152602083013536849003605e1901811261503f575f80fd5b60a060808401526150566101008401858301614ee2565b90506150656040850185614f66565b605f19808685030160a087015261507d848385614fab565b935061508c6060880188614f66565b93509150808685030160c0870152506150a6838383614fab565b92505050608084013560e084015280915050949350505050565b5f6150cd614bb384614b38565b80848252602080830192508560051b8501368111156150ea575f80fd5b855b8181101561517457803567ffffffffffffffff8082111561510b575f80fd5b81890191506040823603121561511f575f80fd5b6151276149ea565b823582811115615135575f80fd5b61514136828601614acd565b8252508583013582811115615154575f80fd5b61516036828601614dd7565b8288015250875250509382019382016150ec565b50919695505050505050565b5f6001600160a01b03808916835280881660208401525085604083015284606083015260a060808301526151b860a083018486614eba565b98975050505050505050565b5f602082840312156151d4575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156102b6576102b66151db565b5f808335601e19843603018112615217575f80fd5b83018035915067ffffffffffffffff821115615231575f80fd5b6020019150600581901b360382131561312d575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235607e19833603018112615270575f80fd5b9190910192915050565b5f8235609e19833603018112615270575f80fd5b5f808335601e198436030181126152a3575f80fd5b83018035915067ffffffffffffffff8211156152bd575f80fd5b6020019150600681901b360382131561312d575f80fd5b5f608082360312156152e4575f80fd5b6040516080810167ffffffffffffffff8282108183111715615308576153086149ad565b81604052843591508082111561531c575f80fd5b61532836838701614c09565b835260208501356020840152604085013560408401526060850135915080821115615351575f80fd5b5061535e36828601614dd7565b60608301525092915050565b5f6020828403121561537a575f80fd5b813580151581146103fd575f80fd5b5f815180845260208085019450602084015f5b83811015614ff157815180516001600160a01b03168852830151838801526040909601959082019060010161539c565b5f6001600160a01b03808351168452602083015160a060208601528181511660a08601528160208201511660c08601526040810151915050606060e08501526154196101008501826148f3565b9050604083015184820360408601526154328282615389565b9150506060830151848203606086015261544c8282615389565b915050608083015160808501528091505092915050565b5f815180845260208085019450602084015f5b83811015614ff157815187529582019590820190600101615476565b5f6001600160a01b038087168352602060808185015286516080808601526154be6101008601826153cc565b90508188015160a086015260408089015160c08701526060808a0151607f198885030160e08901528381518086528686019150868160051b87010187840193505f5b8281101561555a57601f1988830301845284518a815116835289810151878b85015261552e88850182615463565b91890151848303858b015291905061554681836148f3565b968b0196958b019593505050600101615500565b5080995050505050505050505083604083015282606083015295945050505050565b5f808335601e19843603018112615591575f80fd5b83018035915067ffffffffffffffff8211156155ab575f80fd5b60200191503681900382131561312d575f80fd5b5f8235605e19833603018112615270575f80fd5b5f6102b63683614acd565b5f604082840312156155ee575f80fd5b6103fd8383614b5b565b6001600160a01b0384168152826020820152606060408201525f6131ae60608301846153cc565b6001600160a01b0385168152836020820152606060408201525f615647606083018486614eba565b9695505050505050565b5f6103fd368484614cb3565b828482375f8382015f815283518060208601835e5f910190815295945050505050565b5f6101206001600160a01b03871683528060208401526156a2818401876153cc565b905082810360408401526156b681866153cc565b9150508235606083015260208301356080830152604083013560a0830152606083013560c0830152608083013560e083015260a083013561010083015295945050505050565b602081525f6103fd60208301846153cc565b5f8282518085526020808601955060208260051b840101602086015f5b8481101561575957601f19868403018952615747838351615463565b9884019892509083019060010161572b565b5090979650505050505050565b602081526001600160a01b038251166020820152602082015160408201525f604083015160e0606084015261579f6101008401826148f3565b9050606084015160808401526080840151601f19808584030160a08601526157c7838361570e565b925060a08601519150808584030160c08601526157e48383615463565b925060c08601519150808584030160e0860152506131ae8282615463565b5f82601f830112615811575f80fd5b81516020615821614bb383614b38565b8083825260208201915060208460051b870101935086841115615842575f80fd5b602086015b84811015614bfe5780518352918301918301615847565b5f806040838503121561586f575f80fd5b825167ffffffffffffffff80821115615886575f80fd5b818501915085601f830112615899575f80fd5b815160206158a9614bb383614b38565b82815260059290921b840181019181810190898411156158c7575f80fd5b948201945b838610156158e5578551825294820194908201906158cc565b918801519196509093505050808211156158fd575f80fd5b5061590a85828601615802565b9150509250929050565b828152604060208201525f6105566040830184615463565b634e487b7160e01b5f52602160045260245ffd5b6001600160a01b0383168152604081016004831061596c57634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f6001820161598a5761598a6151db565b5060010190565b6001600160a01b0383168152604060208201525f610556604083018461570e565b602081525f6103fd60208301846148f3565b634e487b7160e01b5f52601260045260245ffd5b5f80604083850312156159e9575f80fd5b8251600481106159f7575f80fd5b602084015190925060ff81168114615a0d575f80fd5b809150509250929050565b8082018281125f831280158216821582161715611364576113646151db565b600181815b80851115615a7157815f1904821115615a5757615a576151db565b80851615615a6457918102915b93841c9390800290615a3c565b509250929050565b5f82615a87575060016102b6565b81615a9357505f6102b6565b8160018114615aa95760028114615ab357615acf565b60019150506102b6565b60ff841115615ac457615ac46151db565b50506001821b6102b6565b5060208310610133831016604e8410600b8410161715615af2575081810a6102b6565b615afc8383615a37565b805f1904821115615b0f57615b0f6151db565b029392505050565b5f6103fd8383615a79565b80820281158282048414176102b6576102b66151db565b5f82615b5357634e487b7160e01b5f52601260045260245ffd5b500490565b5f600160ff1b8201613ed357613ed36151db56fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00"; + hex"608060405234801561000f575f80fd5b50600436106100f0575f3560e01c8063613255ab11610093578063ac9650d811610063578063ac9650d81461022b578063d7e442ec1461024b578063d9d98ce41461025e578063fa50118214610273575f80fd5b8063613255ab146101ad57806369c72856146101c0578063709fb8a5146101e85780639235084d146101fb575f80fd5b80632fbc4ba0116100ce5780632fbc4ba01461015157806341d1514f146101665780635cffe9de14610187578063607461191461019a575f80fd5b806301ffc9a7146100f45780631f69cb751461011c5780632cb77e9f1461012f575b5f80fd5b61010761010236600461463b565b610286565b60405190151581526020015b60405180910390f35b61010761012a3660046146a3565b6102bc565b61010761013d36600461470e565b5f9081526020819052604090205460011490565b61016461015f366004614744565b610404565b005b6101796101743660046147a9565b61054a565b604051908152602001610113565b6101076101953660046147e7565b61055e565b6101646101a8366004614744565b61065e565b6101796101bb36600461487e565b6107f1565b6101d36101ce3660046148af565b610859565b60408051928352602083019190915201610113565b6101076101f63660046148e1565b610efc565b61020e61020936600461492b565b6111c5565b604080519315158452602084019290925290820152606001610113565b61023e610239366004614962565b611286565b60405161011391906149cf565b610164610259366004614962565b61136c565b61017961026c366004614a31565b5f92915050565b610164610281366004614ea3565b6113c6565b5f6001600160e01b0319821663e414309160e01b14806102b657506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f6102c5611865565b6102d2602085018561487e565b6001600160a01b0316336001600160a01b031614610321576102f7602085018561487e565b6040516335252be360e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b5f61033361032e86614f5d565b611880565b5f818152602081905260409020549091505f19016103e6575f818152602081905260408082209190915551600192507f09d18501db0080ca2d6cd7c17fa7255daff4b2d503ea93b76ff68b6752ea8e6390610393903390849089906150aa565b60405180910390a16040805160028152602081018390523381830152606081019091526103e6906103d7905b60408051600181526020810192909252818101905290565b6103e1858761516e565b6118af565b506103fd60015f80516020615c0483398151915255565b9392505050565b61040c611865565b33858561041a838383611a7d565b610424865f611ab3565b610459576040516306dde9c360e41b81523360048201526001600160a01b038916602482015260448101889052606401610318565b5f80610466338b8a611aed565b604080513381526001600160a01b038e1660208201529081018c90526060810183905291935091507f7f9dfa19cf1cc2f806f2f860fbc9c056b601fb1afc0e9b843dfe5c63616268e69060800160405180910390a15f806104c9338d8d8d611bc7565b909250905087156105265760408051600581526001600160a01b038e1660208201528082018d9052606081018490526080810183905260ff851660a082015260c081019091526105269061051c906103bf565b6103e18a8c61516e565b5050505050505061054360015f80516020615c0483398151915255565b5050505050565b5f610556848484611cb7565b949350505050565b5f6105736001600160a01b0386168786611e60565b6040516323e30c8b60e01b81525f906001600160a01b038816906323e30c8b906105ab9033908a908a9087908b908b9060040161522e565b6020604051808303815f875af11580156105c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105eb9190615272565b90507f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9811461063057604051630b6c58a960e31b815260048101829052602401610318565b610651873061063f5f8961529d565b6001600160a01b038a16929190611e95565b5060019695505050505050565b610666611865565b338585610674838383611a7d565b5f8080806106828a82611ab3565b6106b657604051623a3a4d60e21b81523360048201526001600160a01b038d166024820152604481018c9052606401610318565b5f6106c2338e8e611cb7565b90506106ce8b82611ed1565b94506106dc338e8e88611eed565b90935091505f6106ed338f88611f64565b80965081925050507f8045c25080b0868951141ed0a91720bcad09a8364a2b3109ee1fd49c1f0bc8b8338f8f8f8a8660405161075f969594939291906001600160a01b03968716815294909516602085015260408401929092526060830152608082015260a081019190915260c00190565b60405180910390a1505060408051600681526001600160a01b038e1660208201528082018d9052606081018490526080810183905260a081018c905260ff851660c0820152600160e08201908152610100820182905261012082019092529089156107d2576107d2816103e18c8e61516e565b50505050505050505061054360015f80516020615c0483398151915255565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610835573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b69190615272565b5f80610863611865565b61087060808401846152b0565b90505f0361089157604051639c95219f60e01b815260040160405180910390fd5b610899614563565b6108a161458f565b5f6108af60808701876152b0565b5f8181106108bf576108bf6152f6565b90506020028101906108d1919061530a565b6108db9080615328565b6108e990604081019061533c565b6108f660808901896152b0565b5f818110610906576109066152f6565b9050602002810190610918919061530a565b6020013581811061092b5761092b6152f6565b610941926020604090920201908101915061487e565b90505f61095160808801886152b0565b5f818110610961576109616152f6565b9050602002810190610973919061530a565b61097d9080615328565b61098b90606081019061533c565b61099860808a018a6152b0565b5f8181106109a8576109a86152f6565b90506020028101906109ba919061530a565b604001358181106109cd576109cd6152f6565b6109e3926020604090920201908101915061487e565b905060605f6109f560808a018a6152b0565b6040805160206001939093018302810190915293508a01359150610a1b9050815f611ab3565b610a385760405163315f9e2360e21b815260040160405180910390fd5b5f5b610a4760808b018b6152b0565b905081108015610a5c5750610a5c825f611ab3565b15610db957610a6e60808b018b6152b0565b82818110610a7e57610a7e6152f6565b9050602002810190610a90919061530a565b610a9990615382565b9650865f01519550846001600160a01b03168660400151886020015181518110610ac557610ac56152f6565b60200260200101515f01516001600160a01b0316141580610b1c5750836001600160a01b03168660600151886040015181518110610b0557610b056152f6565b60200260200101515f01516001600160a01b031614155b15610b3a5760405163936bb5ad60e01b815260040160405180910390fd5b610b4d8688602001518960400151612027565b5f610b5787611880565b5f81815260208190526040902054909150610bbc578651604080513381526001600160a01b03909216602083015281018290527fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f39060600160405180910390a1610db0565b5f610bd6888a602001518b60400151338d60600151612099565b6060810151909150610bec9060408e0135611ab3565b15610c42578751604080513381526001600160a01b03909216602083015281018390527fe3151dc8cb7a54ffc4baabd28c1f241c94d510b5e5b502491ac3cad6c16316d5906060015b60405180910390a1610dae565b60408101516001600160e01b0316610c9c578751604080513381526001600160a01b03909216602083015281018390527f500b713857325f9e6dcb52ae832eca9109d107ed1aae9cb4928b4c1e13f051aa90606001610c35565b5f808d6060016020810190610cb19190615418565b15610cea576040830151610cc59087611ed1565b6060840151909250610cd79083612657565b9050610ce386836126a4565b9550610d3b565b5f610d068460400151856060015161265790919063ffffffff16565b9050610d128188611ed1565b9150610d2b8460600151836126d490919063ffffffff16565b9250610d3787836126a4565b9650505b610d458c82612704565b9b50610d518d83612704565b9c50610d5e818385612734565b7f194f1feb3b4d7076a2c272e774e792e0c48bb8c7aa1a9a3671c1cd6da9e6b4c1338c8484604051610d939493929190615540565b60405180910390a15050845160010180865260200285018190525b505b50600101610a3a565b505f9050610dcd60808a0160608b01615418565b610dd75786610dd9565b875b9050610de6818a356128fc565b15610e0e5760405163573b6f4160e01b81528935600482015260248101829052604401610318565b50610e1a338389611f64565b505f9050610e2b60a08a018a61562a565b90501115610e99573363691f9ed783858a8a610e4a60a08f018f61562a565b6040518763ffffffff1660e01b8152600401610e6b9695949392919061522e565b5f604051808303815f87803b158015610e82575f80fd5b505af1158015610e94573d5f803e3d5ffd5b505050505b610ea4338488611aed565b50505f5b8151811015610edb57610ed3828281518110610ec657610ec66152f6565b6020026020010151612936565b600101610ea8565b505050505050610ef760015f80516020615c0483398151915255565b915091565b5f610f05611865565b610f12602085018561533c565b90505f03610f3357604051636c44ef8f60e01b815260040160405180910390fd5b610f40604085018561533c565b90505f03610f615760405163540e5f0b60e01b815260040160405180910390fd5b6040805160a081019091523381525f9060208101610f7f878061566d565b610f8890615681565b8152602001868060200190610f9d919061533c565b808060200260200160405190810160405280939291908181526020015f905b82821015610fe857610fd96040830286013681900381019061568c565b81526020019060010190610fbc565b5050509183525050602001611000604088018861533c565b808060200260200160405190810160405280939291908181526020015f905b8282101561104b5761103c6040830286013681900381019061568c565b8152602001906001019061101f565b50505050508152602001866060013581525090505f61106982611880565b5f818152602081905260409020549091501580156111ab575f828152602081905260409081902060019055835190517f87491344dfbcf91f6cbbc610cbbeedc85313d37a02df0c93527f7ea5f8db717f916110c791859087906156a6565b60405180910390a15f6110dd60a089018961562a565b905011156111795761112e6110f560a089018961562a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250612b7992505050565b82517fd46c2c56b35c8210e9e712ec3f02242d5fc90187c0ac8ed80cc33626846ec369908361116060a08b018b61562a565b60405161117094939291906156cd565b60405180910390a15b6040805160028152602081018490523381830152606081019091526111ab906111a1906103bf565b6103e1878961516e565b925050506103fd60015f80516020615c0483398151915255565b5f8080806111df6111d68680615328565b61032e90614f5d565b5f8181526020819052604090205490915060011461120657505f925082915081905061127f565b61122b6112138680615328565b61121c90614f5d565b86602001358760400135612027565b5f6112686112398780615328565b61124290614f5d565b602088013560408901353361125a60608c018c6152b0565b611263916156ff565b612099565b905060018160400151826060015194509450945050505b9193909250565b604080515f8152602081019091526060908267ffffffffffffffff8111156112b0576112b0614a5b565b6040519080825280602002602001820160405280156112e357816020015b60608152602001906001900390816112ce5790505b5091505f5b838110156113645761133f30868684818110611306576113066152f6565b9050602002810190611318919061562a565b8560405160200161132b9392919061570b565b604051602081830303815290604052612ba4565b838281518110611351576113516152f6565b60209081029190910101526001016112e8565b505092915050565b611374611865565b604080515f808252602082019092526113ac916113a1565b606081526020019060019003908161138c5790505b506103e1838561516e565b6113c260015f80516020615c0483398151915255565b5050565b6113ce611865565b835185516001600160a01b039182169116036113fd57604051630a98f1f360e21b815260040160405180910390fd5b8360400151836040013581518110611417576114176152f6565b60200260200101515f01516001600160a01b03168560600151846020013581518110611445576114456152f6565b60200260200101515f01516001600160a01b03161415806114be5750604085015180518435908110611479576114796152f6565b60200260200101515f01516001600160a01b031684606001518460600135815181106114a7576114a76152f6565b60200260200101515f01516001600160a01b031614155b156114dc5760405163936bb5ad60e01b815260040160405180910390fd5b84606001518360200135815181106114f6576114f66152f6565b60200260200101515f01516001600160a01b03168560400151845f013581518110611523576115236152f6565b60200260200101515f01516001600160a01b03160361155557604051631cd2f1c760e21b815260040160405180910390fd5b5f805f61156188611880565b81526020019081526020015f2054036115d1577fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f333865f01516115a388611880565b604080516001600160a01b0394851681529390921660208401529082015260600160405180910390a161184f565b5f805f6115dd87611880565b81526020019081526020015f20540361161f577fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f333855f01516115a387611880565b7f6fa7f4c28634b0a9d6831401c45ae468195fb63aed07308935c35374ff5d9e3933868686604051611654949392919061572e565b60405180910390a15f61167486855f01358660200135885f015186612099565b90505f61168f86866040013587606001358a5f015188612099565b90505f61169c8383612c44565b90506116b08160400151825f015185612734565b6116c38160600151826020015184612734565b606081015181515f916116d691906126a4565b90505f6116f4836040015184602001516126a490919063ffffffff16565b9050611700825f6128fc565b806117105750611710815f6128fc565b1561172e57604051630d86822160e01b815260040160405180910390fd5b611762338b606001518a602001358151811061174c5761174c6152f6565b60200260200101515f01518a6080013585611bc7565b5050611798338a606001518a6060013581518110611782576117826152f6565b60200260200101515f01518a60a0013584611bc7565b5050604080513381528451602080830191909152850151818301529084015160608083019190915284015160808201527fd9fa84dd790c969daa5c33d8050dc06b4a9b59d5b42e2be5f5e8ae20447f618d925060a001905060405180910390a161180183612936565b61180a82612936565b80516001600160e01b031615801561182d575060208101516001600160e01b0316155b1561184b576040516321badf1f60e01b815260040160405180910390fd5b5050505b61054360015f80516020615c0483398151915255565b61186d612c92565b60025f80516020615c0483398151915255565b5f8160405160200161189291906157aa565b604051602081830303815290604052805190602001209050919050565b335f8181523060209081526040808320815160a0810183528083018581526060808301879052608083018190529082528185015282518581529384018581528484019093529093909291905b8651811015611a7357868181518110611916576119166152f6565b602002602001015193505f845f015160400151511115611a6b575f845f01515f01516001600160a01b031663d04dfe236040518060e00160405280885f0151602001516001600160a01b03168152602001898152602001885f01516040015181526020015f815260200161198e8d8a60200151612cc3565b8152602001878152602001868152506040518263ffffffff1660e01b81526004016119b99190615814565b5f60405180830381865afa1580156119d3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119fa919081019061590c565b9150505f81511115611a695784516020015160405163012c676d60e21b81526001600160a01b03909116906304b19db490611a3b908a9085906004016159c2565b5f604051808303815f87803b158015611a52575f80fd5b505af1158015611a64573d5f803e3d5ffd5b505050505b505b6001016118fb565b5050505050505050565b80611aae576040516305dbdfd960e41b81526001600160a01b03808516600483015283166024820152604401610318565b505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d611ae184848484612fa5565b12979650505050505050565b5f805f80611afa86613079565b90925090506001826003811115611b1357611b136159da565b14158015611b3257505f826003811115611b2f57611b2f6159da565b14155b15611b5457858260405163ee07877f60e01b81526004016103189291906159ee565b611b5e855f6128fc565b15611b7c57604051632eaefac360e21b815260040160405180910390fd5b5f80611b888784613106565b9150915080611b9d57611b9a82615a27565b91505b8115611bb857611bb86001600160a01b0389168a3085611e95565b5093509150505b935093915050565b5f80611bd383826128fc565b15611bf45760405163793a8f5560e01b815260048101849052602401610318565b83611c1257611c04868685611f64565b505f9250829150611cae9050565b6001600160a01b038087165f908152600160209081526040808320938916835292815282822087835290529081205490611c4c8286612704565b9050611c58815f6128fc565b15611c795760405163c5e12af560e01b815260048101829052602401610318565b6001600160a01b038089165f908152600160209081526040808320938b16835292815282822089835290522081905590925090505b94509492505050565b5f8115611cf157506001600160a01b038084165f9081526001602090815260408083209386168352928152828220848352905220546103fd565b5f80611cfc85613133565b90925090506001826003811115611d1557611d156159da565b14158015611d3457505f826003811115611d3157611d316159da565b14155b15611d5657848260405163ee07877f60e01b81526004016103189291906159ee565b6040516370a0823160e01b81526001600160a01b0387811660048301525f91611dca918816906370a0823190602401602060405180830381865afa158015611da0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc49190615272565b83613192565b604051636eb1769f60e11b81526001600160a01b0389811660048301523060248301529192505f91611e48919089169063dd62ed3e90604401602060405180830381865afa158015611e1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e429190615272565b846131b6565b509050611e558282611ed1565b9450505050506103fd565b611e6d83838360016131f6565b611aae57604051635274afe760e01b81526001600160a01b0384166004820152602401610318565b611ea3848484846001613258565b611ecb57604051635274afe760e01b81526001600160a01b0385166004820152602401610318565b50505050565b5f611edc83836128fc565b611ee657816103fd565b5090919050565b5f80611ef983826128fc565b15611f1a5760405163793a8f5560e01b815260048101849052602401610318565b83611f2a57611c04868685611aed565b6001600160a01b038087165f908152600160209081526040808320938916835292815282822087835290529081205490611c4c82866126a4565b5f805f80611f7186613079565b90925090506001826003811115611f8a57611f8a6159da565b14158015611fa957505f826003811115611fa657611fa66159da565b14155b15611fcb57858260405163ee07877f60e01b81526004016103189291906159ee565b611fd5855f6128fc565b15611ff357604051632d1671a360e11b815260040160405180910390fd5b5f611ffe8683613106565b509050801561201b5761201b6001600160a01b0388168983611e60565b97909650945050505050565b8260600151818151811061203d5761203d6152f6565b60200260200101515f01516001600160a01b031683604001518381518110612067576120676152f6565b60200260200101515f01516001600160a01b031603611aae57604051631cd2f1c760e21b815260040160405180910390fd5b6120a16145f6565b5f6120ab87611880565b60408051600480825260a082019092529192506060915f91816020015b60608152602001906001900390816120c85790505089516040805160038152602081018790526001600160a01b03928316818301529189166060830152608082019052909150816001800381518110612123576121236152f6565b60200260200101819052505f806121598b604001518b81518110612149576121496152f6565b60200260200101515f0151613133565b90925090506001826003811115612172576121726159da565b1415801561219157505f82600381111561218e5761218e6159da565b14155b156121d3578a604001518a815181106121ac576121ac6152f6565b60200260200101515f01518260405163ee07877f60e01b81526004016103189291906159ee565b5f6122238c5f01518d604001518d815181106121f1576121f16152f6565b60200260200101515f01518e604001518e81518110612212576122126152f6565b602002602001015160200151611cb7565b90506122b28c604001518c8151811061223e5761223e6152f6565b60200260200101515f01516001600160a01b03165f1b8360ff165f1b8e604001518e81518110612270576122706152f6565b602002602001015160200151845f801b60408051600581526020810196909652858101949094526060850192909252608084015260a083015260c08201905290565b846001600303815181106122c8576122c86152f6565b60200260200101819052505050505f806122f18b606001518a81518110612149576121496152f6565b9092509050600182600381111561230a5761230a6159da565b1415801561232957505f826003811115612326576123266159da565b14155b15612344578a6060015189815181106121ac576121ac6152f6565b5f6123838c5f01518d606001518c81518110612362576123626152f6565b60200260200101515f01518e606001518d81518110612212576122126152f6565b90506123d08c606001518b8151811061239e5761239e6152f6565b60200260200101515f01516001600160a01b03165f1b8360ff165f1b8e606001518d81518110612270576122706152f6565b846001600403815181106123e6576123e66152f6565b60200260200101819052505050506123fe8186612cc3565b9150505f885f01516001600160a01b031690505f808a602001515f01516001600160a01b031663d04dfe236040518060e001604052808e60200151602001516001600160a01b0316815260200161245e87305f9182526020526040902090565b81526020018e602001516040015181526020015f81526020018781526020015f67ffffffffffffffff81111561249657612496614a5b565b6040519080825280602002602001820160405280156124bf578160200160208202803683370190505b5081526020015f6040519080825280602002602001820160405280156124ef578160200160208202803683370190505b508152506040518263ffffffff1660e01b815260040161250f9190615814565b5f60405180830381865afa158015612529573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612550919081019061590c565b9150915060028251101561257c578151604051630fbb8e5560e21b815260040161031891815260200190565b6020820151604083015160608d015180515f91908d9081106125a0576125a06152f6565b602002602001015190505f6125c08f5f0151835f01518460200151611cb7565b90506125cc8382611ed1565b6040805160028152602081018390528082018790526060810190915290935091506125f49050565b86600281518110612607576126076152f6565b60200260200101819052506040518060e001604052808e81526020018c81526020018281526020018381526020018781526020018681526020018481525097505050505050505095945050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480612687868686866132c5565b915091505f61269683836133e4565b9a9950505050505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d848061268786868686613431565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d84806126878686868661345b565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d848061268786868686613998565b82816080015160038151811061274c5761274c6152f6565b6020026020010151600481518110612766576127666152f6565b60200260200101818152505081816080015160048151811061278a5761278a6152f6565b60200260200101516004815181106127a4576127a46152f6565b602002602001018181525050612833815f01515f015182608001516003815181106127d1576127d16152f6565b60200260200101515f815181106127ea576127ea6152f6565b60200260200101515f1c836080015160038151811061280b5761280b6152f6565b6020026020010151600281518110612825576128256152f6565b602002602001015186611bc7565b50506128b8815f01515f01518260800151600481518110612856576128566152f6565b60200260200101515f8151811061286f5761286f6152f6565b60200260200101515f1c8360800151600481518110612890576128906152f6565b60200260200101516002815181106128aa576128aa6152f6565b602002602001015185611eed565b50507f4cb6e22a3e7e651d7cf0376cff48f20f5007a54147777865be7f5f6c38c50f4a3382608001516040516128ef929190615a3f565b60405180910390a1505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d61292a84848484612fa5565b13979650505050505050565b60c081015151156129b0578051602090810151015160a082015160c083015160405163012c676d60e21b81526001600160a01b03909316926304b19db4926129829290916004016159c2565b5f604051808303815f87803b158015612999575f80fd5b505af11580156129ab573d5f803e3d5ffd5b505050505b5f815f0151602001515f01516001600160a01b031663d04dfe236040518060e00160405280855f015160200151602001516001600160a01b03168152602001612a068660a00151305f9182526020526040902090565b8152602001855f01516020015160400151815260200160018152602001856080015181526020015f67ffffffffffffffff811115612a4657612a46614a5b565b604051908082528060200260200182016040528015612a6f578160200160208202803683370190505b5081526020015f604051908082528060200260200182016040528015612a9f578160200160208202803683370190505b508152506040518263ffffffff1660e01b8152600401612abf9190615814565b5f60405180830381865afa158015612ad9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612b00919081019061590c565b9150505f815111156113c2578151602090810151015160a083015160405163012c676d60e21b81526001600160a01b03909216916304b19db491612b489185906004016159c2565b5f604051808303815f87803b158015612b5f575f80fd5b505af1158015612b71573d5f803e3d5ffd5b505050505050565b612b8281613a96565b612ba15780604051630c89984b60e31b81526004016103189190615a60565b50565b60605f612bb18484613ac4565b9050808015612bd257505f3d1180612bd257505f846001600160a01b03163b115b15612be757612bdf613ad7565b9150506102b6565b8015612c1157604051639996b31560e01b81526001600160a01b0385166004820152602401610318565b3d15612c2457612c1f613af0565b612c3d565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b604080516080810182525f808252602082018190529181018290526060810191909152612c718383613afb565b82526040820152612c828284613afb565b6020830152606082015292915050565b5f80516020615c0483398151915254600203612cc157604051633ee5aeb560e01b815260040160405180910390fd5b565b60605f825167ffffffffffffffff811115612ce057612ce0614a5b565b604051908082528060200260200182016040528015612d09578160200160208202803683370190505b5090505f80845111612d1b575f612d21565b83516001015b85516001010190505f8167ffffffffffffffff811115612d4357612d43614a5b565b604051908082528060200260200182016040528015612d7657816020015b6060815260200190600190039081612d615790505b5090505f612d9a604080516002815233602082015230818301526060810190915290565b828281518110612dac57612dac6152f6565b60200260200101819052505f5b8751811015612e09578180600101925050878181518110612ddc57612ddc6152f6565b6020026020010151838381518110612df657612df66152f6565b6020908102919091010152600101612db9565b50855115612f9b57808060010191505083828281518110612e2c57612e2c6152f6565b60200260200101819052505f5b8651811015612f9957612ee8878281518110612e5757612e576152f6565b60200260200101515f0151612ec5612e938a8581518110612e7a57612e7a6152f6565b6020026020010151602001518051602090810291012090565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c902090565b898481518110612ed757612ed76152f6565b602002602001015160400151613b64565b612f0857604051630a57f30960e31b815260048101829052602401610318565b868181518110612f1a57612f1a6152f6565b60200260200101515f01516001600160a01b03165f1b858281518110612f4257612f426152f6565b6020026020010181815250508180600101925050868181518110612f6857612f686152f6565b602002602001015160200151838381518110612f8657612f866152f6565b6020908102919091010152600101612e39565b505b5095945050505050565b5f8085158415178187128286121817858414178015612fca5786859250925050611cae565b505f85841315612fde575092949193919260015b8386035f8112604c8213178015613011578215613003575f8994509450505050611cae565b885f94509450505050611cae565b600a82900a8981028a82828161302957613029615a72565b0514613055578415613045575f8b965096505050505050611cae565b8a5f965096505050505050611cae565b841561306a578896509450611cae9350505050565b9550879450611cae9350505050565b5f80613083613bd4565b60405163b7bad1b160e01b81526001600160a01b038416600482015273200e12d10bb0c5e4a17e7018f0f1161919bb93899063b7bad1b19060240160408051808303815f875af11580156130d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130fd9190615a86565b91509150915091565b5f806001600160e01b038416601b0b60e085901d613125828287613c5f565b9350935050505b9250929050565b5f8061313d613bd4565b604051630782d7e160e01b81526001600160a01b038416600482015273200e12d10bb0c5e4a17e7018f0f1161919bb938990630782d7e1906024016040805180830381865afa1580156130d9573d5f803e3d5ffd5b5f805f61319f8585613dc5565b915091506131ad8282613e0e565b95945050505050565b5f805f805f6131c58787613e47565b9250925092505f806131d78585613e8a565b91509150818380156131e65750815b9650965050505050509250929050565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661324c578383151615613240573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f511483166132b45783831516156132a8573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b5f80851584151780156132dd575f92505f91506133da565b6132e78487615ac6565b91505f6132f388613f62565b90505f6132ff87613f62565b90505f61330c8383613f90565b5090505f6f0785ee10d5da46d900f436a000000000821115613341576f0785ee10d5da46d900f436a000000000820491506025015b670de0b6b3a764000082111561336257670de0b6b3a7640000820491506012015b633b9aca0082111561337b57633b9aca00820491506009015b61271082111561339057612710820491506004015b81156133a457600a82049150600101613390565b6133ae8187615ac6565b95506133d08b8a6133ca87876133c587600a615bc5565b613fac565b89614078565b9097509550505050505b5094509492505050565b5f805f6133f18585613e8a565b9150915080158015613401575081155b1561342957604051638eba4d0760e01b81526004810186905260248101859052604401610318565b509392505050565b5f8061343d8484614118565b909450925061344e86868686613998565b9150915094509492505050565b5f80835f0361348757604051637a97930f60e01b81526004810187905260248101869052604401610318565b855f0361349857505f905080611cae565b5f805f806134a68a8a61416d565b919b50995091506134b7888861416d565b919950975090505f6134c88b613f62565b90505f6134d48a613f62565b90507f161bcca7119915b50764b4abe86529797775a5f1719510000000000000000000604c8183101561389957841561352b57507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b9050604b613871565b6f4b3b4ca85a86c47a098a22400000000083101561365757678ac7230489e800008310156135bb576402540be40083101561358957620186a08310156135795750620186a090506005613832565b506402540be4009050600a613832565b655af3107a40008310156135a85750655af3107a40009050600e613832565b50678ac7230489e8000090506013613832565b6b204fce5e3e2502611000000083101561360d5769152d02c7e14af68000008310156135f6575069152d02c7e14af680000090506017613832565b506b204fce5e3e250261100000009050601c613832565b6d314dc6448d9338c15b0a0000000083101561363c57506d314dc6448d9338c15b0a0000000090506021613832565b506f4b3b4ca85a86c47a098a22400000000090506026613832565b780197d4df19d605767337e9f14d3eec8920e40000000000000083101561374f5773af298d050e4395d69670b12b7f410000000000008310156136ea577172cb5bd86321e38cb6ce6682e800000000008310156136cb57507172cb5bd86321e38cb6ce6682e800000000009050602b613832565b5073af298d050e4395d69670b12b7f4100000000000090506030613832565b76010b46c6cdd6e3e0828f4db456ff0c8ea000000000000083101561372b575076010b46c6cdd6e3e0828f4db456ff0c8ea000000000000090506035613832565b50780197d4df19d605767337e9f14d3eec8920e4000000000000009050603a613832565b7c03b58e88c75313ec9d329eaaa18fb92f75215b171000000000000000008310156137e5577a026e4d30eccc3215dd8f3157d27e23acbdcfe680000000000000008310156137bd57507a026e4d30eccc3215dd8f3157d27e23acbdcfe680000000000000009050603f613832565b507c03b58e88c75313ec9d329eaaa18fb92f75215b1710000000000000000090506044613832565b7e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca00000000000000000083101561383257507e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca000000000000000000905060495b81831161384757600a820491505f1901613832565b815f03613871576040516305e51ecb60e01b8152600481018d9052602481018c9052604401610318565b85613899576040516305e51ecb60e01b8152600481018f9052602481018e9052604401610318565b80600160ff1b018d126138b057808d039c506138ee565b600160ff1b9c90038c015f8113156138ee57806001600160ff1b03038b136138db57998a01996138ee565b5f80995099505050505050505050611cae565b5f808e1280156138fd57505f8c135b1561391e57600160ff1b8e01808d13613916575f61391a565b808d035b9150505b8b818f0103975061393b8f8e613935888789613fac565b8b614078565b90995097505f81131561398557604c811315613965575f809a509a50505050505050505050611cae565b80600a0a898161397757613977615a72565b059850885f03613985575f97505b50969850949650611cae95505050505050565b5f80851584151780156139c457865f036139b85784849250925050611cae565b86869250925050611cae565b6139ce87876143c7565b90975095506139dd85856143c7565b9095509350858413156139f1579395929492935b838603604c811115613a0a578787935093505050611cae565b80600a0a8681613a1c57613a1c615a72565b0595505086850180881860ff90811c151589881890911c15168015613a8557876001600160ff1b0303613a6c5760405163d556b11160e01b8152600481018a905260248101899052604401610318565b600a968790059690980586019760019790970196613a89565b8198505b5096979596505050505050565b5f600882511015613aa857505f919050565b506008015167ffffffffffffffff1667ff0a89c674ee78741490565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f80613b188460600151856040015161265790919063ffffffff16565b915083604001519050613b38836040015183611ab390919063ffffffff16565b1561312c5782604001519150613b5b8460600151836126d490919063ffffffff16565b90509250929050565b5f836001600160a01b03163b5f03613bc2575f80613b828585614404565b5090925090505f816003811115613b9b57613b9b6159da565b148015613bb95750856001600160a01b0316826001600160a01b0316145b925050506103fd565b613bcd84848461444a565b90506103fd565b73200e12d10bb0c5e4a17e7018f0f1161919bb93893b1580613c2b575073200e12d10bb0c5e4a17e7018f0f1161919bb93893f7f1de7d717526cba131d684e312dedbf0852adef9cced9e36798ae4937f7145d4114155b15612cc1576040516373e6d7b360e01b815273200e12d10bb0c5e4a17e7018f0f1161919bb93896004820152602401610318565b5f805f851215613c8c57604051634a7d166b60e01b81526004810186905260248101859052604401610318565b845f03613c9e57505f90506001611bbf565b8460ff8416850185811215613cd05760405163d556b11160e01b81526004810188905260248101879052604401610318565b5f805f831215613d1c57604c19831215613cf3575f809550955050505050611bbf565b825f03600a0a9150818481613d0a57613d0a615a72565b0495505084029091149150611bbf9050565b5f831315613db557604d831315613d595760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610318565b82600a0a9150815f1981613d6f57613d6f615a72565b04841115613da35760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610318565b5091909102925060019150611bbf9050565b8360019550955050505050611bbf565b5f805f805f613dd48787613e47565b92509250925080613e0257604051636238bcb360e11b81526004810184905260248101839052604401610318565b50909590945092505050565b5f805f613e1b8585613e8a565b9150915080613429576040516322c9f7bb60e01b81526004810186905260248101859052604401610318565b5f808060ff841681036001600160ff1b03861115613e7957600a860460018201600a88065f1493509350935050613e83565b8593509150600190505b9250925092565b5f601b83900b8314838382613eee577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e1000000000000000000860515613ece57620186a0860595506005850194505b8586601b0b14613ee957600a86059550846001019450613ece565b613f04565b855f03613f0457505f92506001915061312c9050565b848560030b14613f47575f851215613f2457505f925082915061312c9050565b60405163d556b11160e01b81526004810183905260248101829052604401610318565b50506001600160e01b03841660e084901b1791509250929050565b5f80821215613f8757600160ff1b8203613f815750600160ff1b919050565b505f0390565b5090565b919050565b5f805f1983850993909202808410938190039390930393915050565b5f805f613fb98686613f90565b91509150815f03613fdd57838181613fd357613fd3615a72565b04925050506103fd565b83821061400e5760405163362ced0960e11b8152600481018790526024810186905260448101859052606401610318565b5f84868809600186198101871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103025f82900382900490920185841190960395909502919093039390930492909217029150509392505050565b5f805f85871812156140f4576001600160ff1b038411156140e1576140a56001600160ff1b03600161529d565b84036140b95750600160ff1b905081611cae565b6140c4600a85615bd0565b6140cd90615bef565b6140d8846001615ac6565b91509150611cae565b6140ea84615bef565b8391509150611cae565b6001600160ff1b0384111561410e576140cd600a85615bd0565b5082905081611cae565b5f80600160ff1b8403614163576001600160ff1b0383036141565760405163d556b11160e01b81526004810185905260248101849052604401610318565b600a840593508260010192505b50505f9190910391565b5f805f845f0361418557505f91508190506001613e83565b7546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b85055f03614372576f4b3b4ca85a86c47a098a22400000000085051580156141e757507f80000000000000000000000000000000000000000000000000000000000000268412155b15614208576f4b3b4ca85a86c47a098a224000000000850294506026840393505b7728c87cb5c89a2571ebfdcb54864ada834a00000000000000850515801561425057507f80000000000000000000000000000000000000000000000000000000000000138412155b1561426957678ac7230489e80000850294506013840393505b7b097edd871cfda3a5697758bf0e3cbb5ac5741c64000000000000000085051580156142b557507f800000000000000000000000000000000000000000000000000000000000000a8412155b156142cb576402540be40085029450600a840393505b7e3899162693736ac531a5a58f1fbb4b746504382ca7e4000000000000000000850515801561431a57507f80000000000000000000000000000000000000000000000000000000000000028412155b15614330576064850294506002840393506142cb565b7546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b850515801561436057506001600160ff1b018412155b1561437257600a850294506001840393505b600a8086029081058614801561438f57506001600160ff1b018512155b1561439e578095506001850394505b50939492935050507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b8305151590565b5f805f805f6143d6878761416d565b92509250925080613e02576040516305e51ecb60e01b81526004810188905260248101879052604401610318565b5f805f835160410361443b576020840151604085015160608601515f1a61442d8882858561449b565b955095509550505050613e83565b505081515f9150600290613e83565b805160408051630b135d3f60e11b8082526004820186905260248201929092525f92906020820185604483015e60205f60648401838a5afa9050825f5114601f3d1116811693505050509392505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156144d457505f91506003905082614559565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015614525573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661455057505f925060019150829050614559565b92505f91508190505b9450945094915050565b604051806080016040528061457661458f565b81526020015f81526020015f8152602001606081525090565b6040518060a001604052805f6001600160a01b031681526020016145dd60405180606001604052805f6001600160a01b031681526020015f6001600160a01b03168152602001606081525090565b8152606060208201819052604082018190525f91015290565b6040518060e0016040528061460961458f565b81526020015f81526020015f80191681526020015f8019168152602001606081526020015f8152602001606081525090565b5f6020828403121561464b575f80fd5b81356001600160e01b0319811681146103fd575f80fd5b5f8083601f840112614672575f80fd5b50813567ffffffffffffffff811115614689575f80fd5b6020830191508360208260051b850101111561312c575f80fd5b5f805f604084860312156146b5575f80fd5b833567ffffffffffffffff808211156146cc575f80fd5b9085019060a082880312156146df575f80fd5b909350602085013590808211156146f4575f80fd5b5061470186828701614662565b9497909650939450505050565b5f6020828403121561471e575f80fd5b5035919050565b6001600160a01b0381168114612ba1575f80fd5b8035613f8b81614725565b5f805f805f60808688031215614758575f80fd5b853561476381614725565b94506020860135935060408601359250606086013567ffffffffffffffff81111561478c575f80fd5b61479888828901614662565b969995985093965092949392505050565b5f805f606084860312156147bb575f80fd5b83356147c681614725565b925060208401356147d681614725565b929592945050506040919091013590565b5f805f805f608086880312156147fb575f80fd5b853561480681614725565b9450602086013561481681614725565b935060408601359250606086013567ffffffffffffffff80821115614839575f80fd5b818801915088601f83011261484c575f80fd5b81358181111561485a575f80fd5b89602082850101111561486b575f80fd5b9699959850939650602001949392505050565b5f6020828403121561488e575f80fd5b81356103fd81614725565b5f60c082840312156148a9575f80fd5b50919050565b5f602082840312156148bf575f80fd5b813567ffffffffffffffff8111156148d5575f80fd5b61055684828501614899565b5f805f604084860312156148f3575f80fd5b833567ffffffffffffffff8082111561490a575f80fd5b61491687838801614899565b945060208601359150808211156146f4575f80fd5b5f6020828403121561493b575f80fd5b813567ffffffffffffffff811115614951575f80fd5b8201608081850312156103fd575f80fd5b5f8060208385031215614973575f80fd5b823567ffffffffffffffff811115614989575f80fd5b61499585828601614662565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b82811015614a2457603f19888603018452614a128583516149a1565b945092850192908501906001016149f6565b5092979650505050505050565b5f8060408385031215614a42575f80fd5b8235614a4d81614725565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715614a9257614a92614a5b565b60405290565b6040805190810167ffffffffffffffff81118282101715614a9257614a92614a5b565b60405160a0810167ffffffffffffffff81118282101715614a9257614a92614a5b565b604051601f8201601f1916810167ffffffffffffffff81118282101715614b0757614b07614a5b565b604052919050565b5f82601f830112614b1e575f80fd5b813567ffffffffffffffff811115614b3857614b38614a5b565b614b4b601f8201601f1916602001614ade565b818152846020838601011115614b5f575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608284031215614b8b575f80fd5b614b93614a6f565b90508135614ba081614725565b81526020820135614bb081614725565b6020820152604082013567ffffffffffffffff811115614bce575f80fd5b614bda84828501614b0f565b60408301525092915050565b5f67ffffffffffffffff821115614bff57614bff614a5b565b5060051b60200190565b5f60408284031215614c19575f80fd5b614c21614a98565b90508135614c2e81614725565b808252506020820135602082015292915050565b5f82601f830112614c51575f80fd5b81356020614c66614c6183614be6565b614ade565b8083825260208201915060208460061b870101935086841115614c87575f80fd5b602086015b84811015614cac57614c9e8882614c09565b835291830191604001614c8c565b509695505050505050565b5f60a08284031215614cc7575f80fd5b614ccf614abb565b9050614cda82614739565b8152602082013567ffffffffffffffff80821115614cf6575f80fd5b614d0285838601614b7b565b60208401526040840135915080821115614d1a575f80fd5b614d2685838601614c42565b60408401526060840135915080821115614d3e575f80fd5b50614d4b84828501614c42565b6060830152506080820135608082015292915050565b5f614d6e614c6184614be6565b8381529050602080820190600585811b850187811115614d8c575f80fd5b855b81811015614e7957803567ffffffffffffffff80821115614dad575f80fd5b908801906060828c031215614dc0575f80fd5b614dc8614a6f565b8235614dd381614725565b81528287013582811115614de5575f80fd5b8301601f81018d13614df5575f80fd5b8035614e03614c6182614be6565b81815290881b8201890190898101908f831115614e1e575f80fd5b928a01925b82841015614e3c5783358252928a0192908a0190614e23565b848b01525060409150508381013583811115614e56575f80fd5b614e628e828701614b0f565b918301919091525087525050938301938301614d8e565b50505050509392505050565b5f82601f830112614e94575f80fd5b6103fd83833560208501614d61565b5f805f805f6101408688031215614eb8575f80fd5b853567ffffffffffffffff80821115614ecf575f80fd5b614edb89838a01614cb7565b96506020880135915080821115614ef0575f80fd5b614efc89838a01614cb7565b9550614f0b8960408a01614899565b9450610100880135915080821115614f21575f80fd5b614f2d89838a01614e85565b9350610120880135915080821115614f43575f80fd5b50614f5088828901614e85565b9150509295509295909350565b5f6102b63683614cb7565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8135614f9c81614725565b6001600160a01b039081168452602083013590614fb882614725565b166020840152604082013536839003601e19018112614fd5575f80fd5b820160208101903567ffffffffffffffff811115614ff1575f80fd5b803603821315614fff575f80fd5b606060408601526131ad606086018284614f68565b5f808335601e19843603018112615029575f80fd5b830160208101925035905067ffffffffffffffff811115615048575f80fd5b8060061b360382131561312c575f80fd5b8183525f60208085019450825f5b8581101561509f57813561507a81614725565b6001600160a01b03168752818301358388015260409687019690910190600101615067565b509495945050505050565b5f6001600160a01b0380861683528460208401526060604084015283356150d081614725565b166060830152602083013536849003605e190181126150ed575f80fd5b60a060808401526151046101008401858301614f90565b90506151136040850185615014565b605f19808685030160a087015261512b848385615059565b935061513a6060880188615014565b93509150808685030160c087015250615154838383615059565b92505050608084013560e084015280915050949350505050565b5f61517b614c6184614be6565b80848252602080830192508560051b850136811115615198575f80fd5b855b8181101561522257803567ffffffffffffffff808211156151b9575f80fd5b8189019150604082360312156151cd575f80fd5b6151d5614a98565b8235828111156151e3575f80fd5b6151ef36828601614b7b565b8252508583013582811115615202575f80fd5b61520e36828601614e85565b82880152508752505093820193820161519a565b50919695505050505050565b5f6001600160a01b03808916835280881660208401525085604083015284606083015260a0608083015261526660a083018486614f68565b98975050505050505050565b5f60208284031215615282575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156102b6576102b6615289565b5f808335601e198436030181126152c5575f80fd5b83018035915067ffffffffffffffff8211156152df575f80fd5b6020019150600581901b360382131561312c575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235607e1983360301811261531e575f80fd5b9190910192915050565b5f8235609e1983360301811261531e575f80fd5b5f808335601e19843603018112615351575f80fd5b83018035915067ffffffffffffffff82111561536b575f80fd5b6020019150600681901b360382131561312c575f80fd5b5f60808236031215615392575f80fd5b6040516080810167ffffffffffffffff82821081831117156153b6576153b6614a5b565b8160405284359150808211156153ca575f80fd5b6153d636838701614cb7565b8352602085013560208401526040850135604084015260608501359150808211156153ff575f80fd5b5061540c36828601614e85565b60608301525092915050565b5f60208284031215615428575f80fd5b813580151581146103fd575f80fd5b5f815180845260208085019450602084015f5b8381101561509f57815180516001600160a01b03168852830151838801526040909601959082019060010161544a565b5f6001600160a01b03808351168452602083015160a060208601528181511660a08601528160208201511660c08601526040810151915050606060e08501526154c76101008501826149a1565b9050604083015184820360408601526154e08282615437565b915050606083015184820360608601526154fa8282615437565b915050608083015160808501528091505092915050565b5f815180845260208085019450602084015f5b8381101561509f57815187529582019590820190600101615524565b5f6001600160a01b0380871683526020608081850152865160808086015261556c61010086018261547a565b90508188015160a086015260408089015160c08701526060808a0151607f198885030160e08901528381518086528686019150868160051b87010187840193505f5b8281101561560857601f1988830301845284518a815116835289810151878b8501526155dc88850182615511565b91890151848303858b01529190506155f481836149a1565b968b0196958b0195935050506001016155ae565b5080995050505050505050505083604083015282606083015295945050505050565b5f808335601e1984360301811261563f575f80fd5b83018035915067ffffffffffffffff821115615659575f80fd5b60200191503681900382131561312c575f80fd5b5f8235605e1983360301811261531e575f80fd5b5f6102b63683614b7b565b5f6040828403121561569c575f80fd5b6103fd8383614c09565b6001600160a01b0384168152826020820152606060408201525f6131ad606083018461547a565b6001600160a01b0385168152836020820152606060408201525f6156f5606083018486614f68565b9695505050505050565b5f6103fd368484614d61565b828482375f8382015f815283518060208601835e5f910190815295945050505050565b5f6101206001600160a01b03871683528060208401526157508184018761547a565b90508281036040840152615764818661547a565b9150508235606083015260208301356080830152604083013560a0830152606083013560c0830152608083013560e083015260a083013561010083015295945050505050565b602081525f6103fd602083018461547a565b5f8282518085526020808601955060208260051b840101602086015f5b8481101561580757601f198684030189526157f5838351615511565b988401989250908301906001016157d9565b5090979650505050505050565b602081526001600160a01b038251166020820152602082015160408201525f604083015160e0606084015261584d6101008401826149a1565b9050606084015160808401526080840151601f19808584030160a086015261587583836157bc565b925060a08601519150808584030160c08601526158928383615511565b925060c08601519150808584030160e0860152506131ad8282615511565b5f82601f8301126158bf575f80fd5b815160206158cf614c6183614be6565b8083825260208201915060208460051b8701019350868411156158f0575f80fd5b602086015b84811015614cac57805183529183019183016158f5565b5f806040838503121561591d575f80fd5b825167ffffffffffffffff80821115615934575f80fd5b818501915085601f830112615947575f80fd5b81516020615957614c6183614be6565b82815260059290921b84018101918181019089841115615975575f80fd5b948201945b838610156159935785518252948201949082019061597a565b918801519196509093505050808211156159ab575f80fd5b506159b8858286016158b0565b9150509250929050565b828152604060208201525f6105566040830184615511565b634e487b7160e01b5f52602160045260245ffd5b6001600160a01b03831681526040810160048310615a1a57634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60018201615a3857615a38615289565b5060010190565b6001600160a01b0383168152604060208201525f61055660408301846157bc565b602081525f6103fd60208301846149a1565b634e487b7160e01b5f52601260045260245ffd5b5f8060408385031215615a97575f80fd5b825160048110615aa5575f80fd5b602084015190925060ff81168114615abb575f80fd5b809150509250929050565b8082018281125f83128015821682158216171561136457611364615289565b600181815b80851115615b1f57815f1904821115615b0557615b05615289565b80851615615b1257918102915b93841c9390800290615aea565b509250929050565b5f82615b35575060016102b6565b81615b4157505f6102b6565b8160018114615b575760028114615b6157615b7d565b60019150506102b6565b60ff841115615b7257615b72615289565b50506001821b6102b6565b5060208310610133831016604e8410600b8410161715615ba0575081810a6102b6565b615baa8383615ae5565b805f1904821115615bbd57615bbd615289565b029392505050565b5f6103fd8383615b27565b5f82615bea57634e487b7160e01b5f52601260045260245ffd5b500490565b5f600160ff1b8201613f8157613f8161528956fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00"; diff --git a/src/generated/RaindexV6SubParser.pointers.sol b/src/generated/RaindexV6SubParser.pointers.sol index 8c3ae22b2b..2876f1d37e 100644 --- a/src/generated/RaindexV6SubParser.pointers.sol +++ b/src/generated/RaindexV6SubParser.pointers.sol @@ -10,19 +10,19 @@ pragma solidity ^0.8.25; // file needs the contract to exist so that it can be compiled. /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0x78d0f0b8b03d9e9e6cd09a013754032a57cb688a13a98cb130df43d282ead580); +bytes32 constant BYTECODE_HASH = bytes32(0x59e436b1a58c24ce88745ff6a49800ae74b98ac6c1f78032c509ec926de32140); /// @dev The deterministic deploy address of the contract when deployed via /// the Zoltu factory. -address constant DEPLOYED_ADDRESS = address(0x6E81D70fD7801Cf21DD177f82c2e5BCffb86321E); +address constant DEPLOYED_ADDRESS = address(0xBdb9cC5FF04A2bA28a4B0369d5592c469B9dFF53); /// @dev The creation bytecode of the contract. bytes constant CREATION_CODE = - hex"6080604052348015600e575f80fd5b506125798061001c5f395ff3fe608060405234801561000f575f80fd5b506004361061007a575f3560e01c80636f5aa28d116100585780636f5aa28d146100dd578063c6c0cbb61461010b578063ccf4477514610135578063d6d8c9a814610148575f80fd5b806301ffc9a71461007e578063336284d4146100a6578063570c7a63146100bb575b5f80fd5b61009161008c366004612159565b610150565b60405190151581526020015b60405180910390f35b6100ae6101d7565b60405161009d91906121b5565b6100ce6100c93660046121db565b610b58565b60405161009d93929190612285565b6040517fdc6156fd1b9fda1ce642d416969c2f632029b10b9e3864fbde264f391c51bdee815260200161009d565b61011e6101193660046121db565b610c9c565b60408051921515835260208301919091520161009d565b60408051602081019091525f81526100ae565b6100ae610cd4565b5f6001600160e01b031982166391ccb1d560e01b148061018057506001600160e01b03198216636f5aa28d60e01b145b8061019b57506001600160e01b03198216631a2c8edd60e01b145b806101b657506001600160e01b03198216630cd8a13560e21b145b806101d157506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f6101e6600460016122f6565b6101f19060026122f6565b6101fc9060016122f6565b6102079060016122f6565b6001600160401b0381111561021e5761021e6121c7565b60405190808252806020026020018201604052801561025157816020015b606081526020019060019003908161023c5790505b50604080516002808252606082019092529192505f9190816020015b61214f81526020019060019003908161026d5790505090506115f2815f8151811061029a5761029a612309565b60200260200101906001600160401b031690816001600160401b03168152505061160f816001815181106102d0576102d0612309565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b61214f81526020019060019003908161030057905050905061161e815f8151811061032d5761032d612309565b60200260200101906001600160401b031690816001600160401b03168152505061162d8160018151811061036357610363612309565b60200260200101906001600160401b031690816001600160401b03168152505061163c8160028151811061039957610399612309565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b61214f8152602001906001900390816103c957905050905061164c815f815181106103f6576103f6612309565b60200260200101906001600160401b031690816001600160401b03168152505061165b8160018151811061042c5761042c612309565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b61214f81526020019060019003908161045c57905050905061166b815f8151811061048957610489612309565b60200260200101906001600160401b031690816001600160401b03168152505061167a816001815181106104bf576104bf612309565b60200260200101906001600160401b031690816001600160401b03168152505061168a816002815181106104f5576104f5612309565b60200260200101906001600160401b031690816001600160401b03168152505061169a8160038151811061052b5761052b612309565b60200260200101906001600160401b031690816001600160401b0316815250506116a98160048151811061056157610561612309565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b61214f8152602001906001900390816105915790505090506116b9815f815181106105be576105be612309565b60200260200101906001600160401b031690816001600160401b0316815250506116c8816001815181106105f4576105f4612309565b60200260200101906001600160401b031690816001600160401b0316815250506116d88160028151811061062a5761062a612309565b60200260200101906001600160401b031690816001600160401b0316815250506116e88160038151811061066057610660612309565b60200260200101906001600160401b031690816001600160401b0316815250506116f88160048151811061069657610696612309565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b61214f8152602001906001900390816106c5579050509050611707815f815181106106f2576106f2612309565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b61214f815260200190600190039081610721579050509050611716815f8151811061074e5761074e612309565b60200260200101906001600160401b031690816001600160401b03168152505086885f8151811061078157610781612309565b602002602001018190525085886001815181106107a0576107a0612309565b602002602001018190525084886002815181106107bf576107bf612309565b602002602001018190525083886003815181106107de576107de612309565b602002602001018190525082886004815181106107fd576107fd612309565b6020026020010181905250818860058151811061081c5761081c612309565b6020026020010181905250808860068151811061083b5761083b612309565b602090810291909101015260408051600580825260c082019092525f91816020015b61214f81526020019060019003908161085d5790505090506115f2815f8151811061088a5761088a612309565b60200260200101906001600160401b031690816001600160401b03168152505061161e816001815181106108c0576108c0612309565b60200260200101906001600160401b031690816001600160401b03168152505061162d816002815181106108f6576108f6612309565b60200260200101906001600160401b031690816001600160401b03168152505061163c8160038151811061092c5761092c612309565b60200260200101906001600160401b031690816001600160401b03168152505061174b8160048151811061096257610962612309565b6001600160401b03909216602092830291909101909101528089610988600660016122f6565b8151811061099857610998612309565b602090810291909101015260408051600680825260e082019092525f91816020015b61214f8152602001906001900390816109ba5790505090506115f2815f815181106109e7576109e7612309565b60200260200101906001600160401b031690816001600160401b03168152505061161e81600181518110610a1d57610a1d612309565b60200260200101906001600160401b031690816001600160401b03168152505061162d81600281518110610a5357610a53612309565b60200260200101906001600160401b031690816001600160401b03168152505061163c81600381518110610a8957610a89612309565b60200260200101906001600160401b031690816001600160401b03168152505061174b81600481518110610abf57610abf612309565b60200260200101906001600160401b031690816001600160401b03168152505061175b81600581518110610af557610af5612309565b6001600160401b0390921660209283029190910190910152808a610b1b600660026122f6565b81518110610b2b57610b2b612309565b602090810291909101015289610b48610b438261176b565b6117cd565b9b50505050505050505050505090565b5f6060805f805f610b7887610b6b61185c565b610b7361187c565b61189c565b9250925092505f610b8e82610220015160200190565b90505f8261022001515182610ba391906122f6565b90505f610bc183836f07fffffe0000000003ff20000000000061198d565b80925081945050505f80610bda86610240015184611a29565b915091508115610c6f575f610bef8783611b00565b905061214f5f610bfd611b2f565b90505f60028251610c0e9190612331565b9050808510610c3f576040516303bdd1b160e51b815260048101869052602481018290526044015b60405180910390fd5b6001850160020282015161ffff169250610c588c8c8686565b9e509e509e50505050505050505050505050610c95565b5050604080515f80825281830190925260208101828152919a5090985096505050505050505b9193909250565b5f805f805f610cc4866002810151815160228084019461ffff93909316840101920160200190565b505f988998509650505050505050565b60605f610ce3600460016122f6565b610cee9060026122f6565b610cf99060016122f6565b610d049060016122f6565b6001600160401b03811115610d1b57610d1b6121c7565b604051908082528060200260200182016040528015610d4e57816020015b6060815260200190600190039081610d395790505b50604080516002808252606082019092529192505f9190816020015b61214f815260200190600190039081610d6a579050509050611b4f815f81518110610d9757610d97612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600181518110610dcd57610dcd612309565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b61214f815260200190600190039081610dfd579050509050611b4f815f81518110610e2a57610e2a612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600181518110610e6057610e60612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600281518110610e9657610e96612309565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b61214f815260200190600190039081610ec6579050509050611b4f815f81518110610ef357610ef3612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600181518110610f2957610f29612309565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b61214f815260200190600190039081610f59579050509050611b4f815f81518110610f8657610f86612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600181518110610fbc57610fbc612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600281518110610ff257610ff2612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160038151811061102857611028612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160048151811061105e5761105e612309565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b61214f81526020019060019003908161108e579050509050611b4f815f815181106110bb576110bb612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816001815181106110f1576110f1612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160028151811061112757611127612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160038151811061115d5761115d612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160048151811061119357611193612309565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b61214f8152602001906001900390816111c2579050509050611b78815f815181106111ef576111ef612309565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b61214f81526020019060019003908161121e579050509050611c14815f8151811061124b5761124b612309565b60200260200101906001600160401b031690816001600160401b03168152505086885f8151811061127e5761127e612309565b6020026020010181905250858860018151811061129d5761129d612309565b602002602001018190525084886002815181106112bc576112bc612309565b602002602001018190525083886003815181106112db576112db612309565b602002602001018190525082886004815181106112fa576112fa612309565b6020026020010181905250818860058151811061131957611319612309565b6020026020010181905250808860068151811061133857611338612309565b602090810291909101015260408051600580825260c082019092525f91816020015b61214f81526020019060019003908161135a579050509050611b4f815f8151811061138757611387612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816001815181106113bd576113bd612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816002815181106113f3576113f3612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160038151811061142957611429612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160048151811061145f5761145f612309565b6001600160401b03909216602092830291909101909101528089611485600660016122f6565b8151811061149557611495612309565b602090810291909101015260408051600680825260e082019092525f91816020015b61214f8152602001906001900390816114b7579050509050611b4f815f815181106114e4576114e4612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160018151811061151a5761151a612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160028151811061155057611550612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160038151811061158657611586612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816004815181106115bc576115bc612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600581518110610af557610af5612309565b5f6060806116005f80611ccc565b92509250925093509350939050565b5f6060806116005f6001611ccc565b5f60608061160060015f611ccc565b5f606080611600600180611ccc565b5f60608061160060016002611ccc565b5f60608061160060025f611ccc565b5f60608061160060026001611ccc565b5f60608061160060035f611ccc565b5f60608061160060036001611ccc565b5f60608061160060036002611ccc565b5f606080611600600380611ccc565b5f60608061160060036004611ccc565b5f60608061160060045f611ccc565b5f60608061160060046001611ccc565b5f60608061160060046002611ccc565b5f60608061160060046003611ccc565b5f606080611600600480611ccc565b5f606080611600600585611ccc565b5f60608060ff80851690600886901c1661173a6117348360066122f6565b82611ccc565b945094509450505093509350939050565b5f60608061160060016003611ccc565b5f60608061160060016004611ccc565b60605f61177783611d4e565b9050606060405190506020820260200181016040528181526020840160208551028101602083015b818310156117c257602083515102806020855101835e602093909301920161179f565b509195945050505050565b60605f82516002026001600160401b038111156117ec576117ec6121c7565b6040519080825280601f01601f191660200182016040528015611816576020820181803683370190505b50905061ffff80196020850160208651028101600285015b818310156118505780518351861690851617815260209092019160020161182e565b50939695505050505050565b60606040518060c00160405280609a8152602001612467609a9139905090565b60606040518060600160405280603c8152602001612501603c9139905090565b5f8061192b6040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b606061ffff600288015116935060ff600388015116925061ffff60058801511660058801975080885260208101880191505061197787878760405180602001604052805f815250611d7c565b915080826101e001819052505093509350939050565b5f8080600181878703602081116119a457806119a7565b60205b915050875192505b8519600184841a1b161581831016156119cd576001820191506119af565b9681019660208290036008810293841c90931b92611a185760408051602081018590520160408051601f198184030181529082905263e47fe8b760e01b8252610c36916004016121b5565b50869350909150505b935093915050565b600182810180515f928392600560ff93909316602102870192830192909101835b81831015611aee5760018301516021909301805190935f90819060ff168180611a73838e611f2d565b915091508186165f03611a95575f809b509b5050505050505050505050611af9565b5f87611aa5600185038916611f58565b016004028b015195505062ffffff9081169350841683039150611ad99050575060019750601c1a9550611af9945050505050565b611ae283611f58565b84019350505050611a4a565b5f8095509550505050505b9250929050565b6101c08201516002828102820101516101e08401515f9261ffff9092169190611b269083565b95945050505050565b60606040518060600160405280603c815260200161253d603c9139905090565b5f81515f14611b71576040516304f8b58160e51b815260040160405180910390fd5b505f919050565b5f8151600103611bd5575060208101516001600160e01b038116601b0b60e082901d5f611ba6838383612011565b905061ffff811115611bcb57604051631e4e01d760e21b815260040160405180910390fd5b9250611c0f915050565b81515f03611bf657604051630f16066b60e41b815260040160405180910390fd5b604051630358cd2160e31b815260040160405180910390fd5b919050565b5f8151600203611ca957602082015160408301516001600160e01b038216601b0b60e083901d5f611c46838383612011565b6001600160e01b038516601b0b935060e085901d925090505f611c6a848483612011565b905060ff821180611c7b575060ff81115b15611c9957604051631e4e01d760e21b815260040160405180910390fd5b60081b179450611c0f9350505050565b600282511015611bf657604051630f16066b60e41b815260040160405180910390fd5b5f60608060ff851180611cdf575060ff84115b15611d0757604051639b0f326160e01b81526004810186905260248101859052604401610c36565b6040805160248101909152600386602383015385602283015360106021830153806020830153506004815260408051602081019091525f8152600197919650945092505050565b5f60208201602083510281015b80821015611d755781515183019250602082019150611d5b565b5050919050565b611e096040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b5f6040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f801b81526020015f8152602001600481526020015f81526020015f81526020015f81526020015f801b815260200184815260200185815260200160046001600160401b03811115611e8e57611e8e6121c7565b604051908082528060200260200182016040528015611eb7578160200160208202803683370190505b5081525f602080830182905260408084018b905260609384018a90528051601f01601f19168281528083018252835161ffff191681178452855290840182905283018190529082018190526080820181905260a08201819052610120820181905261014082018190526102008201529050611b26565b5f80825f528360205360215f2090506001815f1a1b915062ffffff8116611af9575060019250929050565b5f5f198203611f6a5750610100919050565b507f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f5555555555555555555555555555555555555555555555555555555555555555600183901c16909103600281901c7f3333333333333333333333333333333333333333333333333333333333333333908116911601600481901c01167f01010101010101010101010101010101010101010101010101010101010101010260f81c90565b5f805f61201f868686612053565b915091508061204a5760405162bc8ecf60e31b81526004810187905260248101869052604401610c36565b50949350505050565b5f805f85121561208057604051634a7d166b60e01b81526004810186905260248101859052604401610c36565b845f0361209257505f90506001611a21565b8460ff84168501858112156120c45760405163d556b11160e01b81526004810188905260248101879052604401610c36565b5f805f83121561211057604c198312156120e7575f809550955050505050611a21565b825f03600a0a91508184816120fe576120fe61231d565b0495505084029091149150611a219050565b5f83131561213f5761212383600a612430565b915061212f828561243b565b955060019450611a219350505050565b8360019550955050505050611a21565b612157612452565b565b5f60208284031215612169575f80fd5b81356001600160e01b031981168114612180575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6121806020830184612187565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156121eb575f80fd5b81356001600160401b0380821115612201575f80fd5b818401915084601f830112612214575f80fd5b813581811115612226576122266121c7565b604051601f8201601f19908116603f0116810190838211818310171561224e5761224e6121c7565b81604052828152876020848701011115612266575f80fd5b826020860160208301375f928101602001929092525095945050505050565b83151581525f6020606060208401526122a16060840186612187565b8381036040850152845180825260208087019201905f5b818110156122d4578351835292840192918401916001016122b8565b509098975050505050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156101d1576101d16122e2565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f8261234b57634e487b7160e01b5f52601260045260245ffd5b500490565b600181815b8085111561238a57815f1904821115612370576123706122e2565b8085161561237d57918102915b93841c9390800290612355565b509250929050565b5f826123a0575060016101d1565b816123ac57505f6101d1565b81600181146123c257600281146123cc576123e8565b60019150506101d1565b60ff8411156123dd576123dd6122e2565b50506001821b6101d1565b5060208310610133831016604e8410600b841016171561240b575081810a6101d1565b6124158383612350565b805f1904821115612428576124286122e2565b029392505050565b5f6121808383612392565b80820281158282048414176101d1576101d16122e2565b634e487b7160e01b5f52605160045260245ffdfe0101080010800082000100010480300038412a001810000010020004200004002018038ff54900cc66c60616592209895f0b16fec9301a02e0920c5bfe561c21609201e959460b1974270f844db208bcd3bf1d989376111049db13b93430190ae9a00af82a7805c138f40d28083f0742ef2104d561fd1415a13317716a6118d260cc107b9bfc0eec7ade15cba2891b6b14a512792bdb02e0f1471b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b781c141b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f15f2160f161e162d163c164c165b166b167a168a169a16a916b916c816d816e816f81707171615f2161e162d163c174b15f2161e162d163c174b175b"; + hex"6080604052348015600e575f80fd5b506124d98061001c5f395ff3fe608060405234801561000f575f80fd5b506004361061007a575f3560e01c80636f5aa28d116100585780636f5aa28d146100dd578063c6c0cbb61461010b578063ccf4477514610135578063d6d8c9a814610148575f80fd5b806301ffc9a71461007e578063336284d4146100a6578063570c7a63146100bb575b5f80fd5b61009161008c3660046121c3565b610150565b60405190151581526020015b60405180910390f35b6100ae6101d7565b60405161009d919061221f565b6100ce6100c9366004612245565b610b58565b60405161009d939291906122ef565b6040517fdc6156fd1b9fda1ce642d416969c2f632029b10b9e3864fbde264f391c51bdee815260200161009d565b61011e610119366004612245565b610c9c565b60408051921515835260208301919091520161009d565b60408051602081019091525f81526100ae565b6100ae610cd4565b5f6001600160e01b031982166391ccb1d560e01b148061018057506001600160e01b03198216636f5aa28d60e01b145b8061019b57506001600160e01b03198216631a2c8edd60e01b145b806101b657506001600160e01b03198216630cd8a13560e21b145b806101d157506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f6101e66004600161234c565b6101f190600261234c565b6101fc90600161234c565b61020790600161234c565b6001600160401b0381111561021e5761021e612231565b60405190808252806020026020018201604052801561025157816020015b606081526020019060019003908161023c5790505b50604080516002808252606082019092529192505f9190816020015b6121b981526020019060019003908161026d5790505090506115f2815f8151811061029a5761029a61236b565b60200260200101906001600160401b031690816001600160401b03168152505061160f816001815181106102d0576102d061236b565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b6121b981526020019060019003908161030057905050905061161e815f8151811061032d5761032d61236b565b60200260200101906001600160401b031690816001600160401b03168152505061162d816001815181106103635761036361236b565b60200260200101906001600160401b031690816001600160401b03168152505061163c816002815181106103995761039961236b565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b6121b98152602001906001900390816103c957905050905061164c815f815181106103f6576103f661236b565b60200260200101906001600160401b031690816001600160401b03168152505061165b8160018151811061042c5761042c61236b565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6121b981526020019060019003908161045c57905050905061166b815f815181106104895761048961236b565b60200260200101906001600160401b031690816001600160401b03168152505061167a816001815181106104bf576104bf61236b565b60200260200101906001600160401b031690816001600160401b03168152505061168a816002815181106104f5576104f561236b565b60200260200101906001600160401b031690816001600160401b03168152505061169a8160038151811061052b5761052b61236b565b60200260200101906001600160401b031690816001600160401b0316815250506116a9816004815181106105615761056161236b565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6121b98152602001906001900390816105915790505090506116b9815f815181106105be576105be61236b565b60200260200101906001600160401b031690816001600160401b0316815250506116c8816001815181106105f4576105f461236b565b60200260200101906001600160401b031690816001600160401b0316815250506116d88160028151811061062a5761062a61236b565b60200260200101906001600160401b031690816001600160401b0316815250506116e8816003815181106106605761066061236b565b60200260200101906001600160401b031690816001600160401b0316815250506116f8816004815181106106965761069661236b565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6121b98152602001906001900390816106c5579050509050611707815f815181106106f2576106f261236b565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6121b9815260200190600190039081610721579050509050611716815f8151811061074e5761074e61236b565b60200260200101906001600160401b031690816001600160401b03168152505086885f815181106107815761078161236b565b602002602001018190525085886001815181106107a0576107a061236b565b602002602001018190525084886002815181106107bf576107bf61236b565b602002602001018190525083886003815181106107de576107de61236b565b602002602001018190525082886004815181106107fd576107fd61236b565b6020026020010181905250818860058151811061081c5761081c61236b565b6020026020010181905250808860068151811061083b5761083b61236b565b602090810291909101015260408051600580825260c082019092525f91816020015b6121b981526020019060019003908161085d5790505090506115f2815f8151811061088a5761088a61236b565b60200260200101906001600160401b031690816001600160401b03168152505061161e816001815181106108c0576108c061236b565b60200260200101906001600160401b031690816001600160401b03168152505061162d816002815181106108f6576108f661236b565b60200260200101906001600160401b031690816001600160401b03168152505061163c8160038151811061092c5761092c61236b565b60200260200101906001600160401b031690816001600160401b03168152505061174b816004815181106109625761096261236b565b6001600160401b039092166020928302919091019091015280896109886006600161234c565b815181106109985761099861236b565b602090810291909101015260408051600680825260e082019092525f91816020015b6121b98152602001906001900390816109ba5790505090506115f2815f815181106109e7576109e761236b565b60200260200101906001600160401b031690816001600160401b03168152505061161e81600181518110610a1d57610a1d61236b565b60200260200101906001600160401b031690816001600160401b03168152505061162d81600281518110610a5357610a5361236b565b60200260200101906001600160401b031690816001600160401b03168152505061163c81600381518110610a8957610a8961236b565b60200260200101906001600160401b031690816001600160401b03168152505061174b81600481518110610abf57610abf61236b565b60200260200101906001600160401b031690816001600160401b03168152505061175b81600581518110610af557610af561236b565b6001600160401b0390921660209283029190910190910152808a610b1b6006600261234c565b81518110610b2b57610b2b61236b565b602090810291909101015289610b48610b438261176b565b6117cd565b9b50505050505050505050505090565b5f6060805f805f610b7887610b6b61185c565b610b7361187c565b61189c565b9250925092505f610b8e82610220015160200190565b90505f8261022001515182610ba3919061234c565b90505f610bc183836f07fffffe0000000003ff20000000000061198d565b80925081945050505f80610bda86610240015184611a29565b915091508115610c6f575f610bef8783611b00565b90506121b95f610bfd611b2f565b90505f60028251610c0e9190612393565b9050808510610c3f576040516303bdd1b160e51b815260048101869052602481018290526044015b60405180910390fd5b6001850160020282015161ffff169250610c588c8c8686565b9e509e509e50505050505050505050505050610c95565b5050604080515f80825281830190925260208101828152919a5090985096505050505050505b9193909250565b5f805f805f610cc4866002810151815160228084019461ffff93909316840101920160200190565b505f988998509650505050505050565b60605f610ce36004600161234c565b610cee90600261234c565b610cf990600161234c565b610d0490600161234c565b6001600160401b03811115610d1b57610d1b612231565b604051908082528060200260200182016040528015610d4e57816020015b6060815260200190600190039081610d395790505b50604080516002808252606082019092529192505f9190816020015b6121b9815260200190600190039081610d6a579050509050611b4f815f81518110610d9757610d9761236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600181518110610dcd57610dcd61236b565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b6121b9815260200190600190039081610dfd579050509050611b4f815f81518110610e2a57610e2a61236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600181518110610e6057610e6061236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600281518110610e9657610e9661236b565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b6121b9815260200190600190039081610ec6579050509050611b4f815f81518110610ef357610ef361236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600181518110610f2957610f2961236b565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6121b9815260200190600190039081610f59579050509050611b4f815f81518110610f8657610f8661236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600181518110610fbc57610fbc61236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600281518110610ff257610ff261236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816003815181106110285761102861236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160048151811061105e5761105e61236b565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6121b981526020019060019003908161108e579050509050611b4f815f815181106110bb576110bb61236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816001815181106110f1576110f161236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816002815181106111275761112761236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160038151811061115d5761115d61236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816004815181106111935761119361236b565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6121b98152602001906001900390816111c2579050509050611b78815f815181106111ef576111ef61236b565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6121b981526020019060019003908161121e579050509050611c14815f8151811061124b5761124b61236b565b60200260200101906001600160401b031690816001600160401b03168152505086885f8151811061127e5761127e61236b565b6020026020010181905250858860018151811061129d5761129d61236b565b602002602001018190525084886002815181106112bc576112bc61236b565b602002602001018190525083886003815181106112db576112db61236b565b602002602001018190525082886004815181106112fa576112fa61236b565b602002602001018190525081886005815181106113195761131961236b565b602002602001018190525080886006815181106113385761133861236b565b602090810291909101015260408051600580825260c082019092525f91816020015b6121b981526020019060019003908161135a579050509050611b4f815f815181106113875761138761236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816001815181106113bd576113bd61236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816002815181106113f3576113f361236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816003815181106114295761142961236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160048151811061145f5761145f61236b565b6001600160401b039092166020928302919091019091015280896114856006600161234c565b815181106114955761149561236b565b602090810291909101015260408051600680825260e082019092525f91816020015b6121b98152602001906001900390816114b7579050509050611b4f815f815181106114e4576114e461236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160018151811061151a5761151a61236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816002815181106115505761155061236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816003815181106115865761158661236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816004815181106115bc576115bc61236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600581518110610af557610af561236b565b5f6060806116005f80611ccc565b92509250925093509350939050565b5f6060806116005f6001611ccc565b5f60608061160060015f611ccc565b5f606080611600600180611ccc565b5f60608061160060016002611ccc565b5f60608061160060025f611ccc565b5f60608061160060026001611ccc565b5f60608061160060035f611ccc565b5f60608061160060036001611ccc565b5f60608061160060036002611ccc565b5f606080611600600380611ccc565b5f60608061160060036004611ccc565b5f60608061160060045f611ccc565b5f60608061160060046001611ccc565b5f60608061160060046002611ccc565b5f60608061160060046003611ccc565b5f606080611600600480611ccc565b5f606080611600600585611ccc565b5f60608060ff80851690600886901c1661173a61173483600661234c565b82611ccc565b945094509450505093509350939050565b5f60608061160060016003611ccc565b5f60608061160060016004611ccc565b60605f61177783611d4e565b9050606060405190506020820260200181016040528181526020840160208551028101602083015b818310156117c257602083515102806020855101835e602093909301920161179f565b509195945050505050565b60605f82516002026001600160401b038111156117ec576117ec612231565b6040519080825280601f01601f191660200182016040528015611816576020820181803683370190505b50905061ffff80196020850160208651028101600285015b818310156118505780518351861690851617815260209092019160020161182e565b50939695505050505050565b60606040518060c00160405280609a81526020016123c7609a9139905090565b60606040518060600160405280603c8152602001612461603c9139905090565b5f8061192b6040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b606061ffff600288015116935060ff600388015116925061ffff60058801511660058801975080885260208101880191505061197787878760405180602001604052805f815250611d7c565b915080826101e001819052505093509350939050565b5f8080600181878703602081116119a457806119a7565b60205b915050875192505b8519600184841a1b161581831016156119cd576001820191506119af565b9681019660208290036008810293841c90931b92611a185760408051602081018590520160408051601f198184030181529082905263e47fe8b760e01b8252610c369160040161221f565b50869350909150505b935093915050565b600182810180515f928392600560ff93909316602102870192830192909101835b81831015611aee5760018301516021909301805190935f90819060ff168180611a73838e611f2d565b915091508186165f03611a95575f809b509b5050505050505050505050611af9565b5f87611aa5600185038916611f58565b016004028b015195505062ffffff9081169350841683039150611ad99050575060019750601c1a9550611af9945050505050565b611ae283611f58565b84019350505050611a4a565b5f8095509550505050505b9250929050565b6101c08201516002828102820101516101e08401515f9261ffff9092169190611b269083565b95945050505050565b60606040518060600160405280603c815260200161249d603c9139905090565b5f81515f14611b71576040516304f8b58160e51b815260040160405180910390fd5b505f919050565b5f8151600103611bd5575060208101516001600160e01b038116601b0b60e082901d5f611ba6838383612011565b905061ffff811115611bcb57604051631e4e01d760e21b815260040160405180910390fd5b9250611c0f915050565b81515f03611bf657604051630f16066b60e41b815260040160405180910390fd5b604051630358cd2160e31b815260040160405180910390fd5b919050565b5f8151600203611ca957602082015160408301516001600160e01b038216601b0b60e083901d5f611c46838383612011565b6001600160e01b038516601b0b935060e085901d925090505f611c6a848483612011565b905060ff821180611c7b575060ff81115b15611c9957604051631e4e01d760e21b815260040160405180910390fd5b60081b179450611c0f9350505050565b600282511015611bf657604051630f16066b60e41b815260040160405180910390fd5b5f60608060ff851180611cdf575060ff84115b15611d0757604051639b0f326160e01b81526004810186905260248101859052604401610c36565b6040805160248101909152600386602383015385602283015360106021830153806020830153506004815260408051602081019091525f8152600197919650945092505050565b5f60208201602083510281015b80821015611d755781515183019250602082019150611d5b565b5050919050565b611e096040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b5f6040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f801b81526020015f8152602001600481526020015f81526020015f81526020015f81526020015f801b815260200184815260200185815260200160046001600160401b03811115611e8e57611e8e612231565b604051908082528060200260200182016040528015611eb7578160200160208202803683370190505b5081525f602080830182905260408084018b905260609384018a90528051601f01601f19168281528083018252835161ffff191681178452855290840182905283018190529082018190526080820181905260a08201819052610120820181905261014082018190526102008201529050611b26565b5f80825f528360205360215f2090506001815f1a1b915062ffffff8116611af9575060019250929050565b5f5f198203611f6a5750610100919050565b507f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f5555555555555555555555555555555555555555555555555555555555555555600183901c16909103600281901c7f3333333333333333333333333333333333333333333333333333333333333333908116911601600481901c01167f01010101010101010101010101010101010101010101010101010101010101010260f81c90565b5f805f61201f868686612053565b915091508061204a5760405162bc8ecf60e31b81526004810187905260248101869052604401610c36565b50949350505050565b5f805f85121561208057604051634a7d166b60e01b81526004810186905260248101859052604401610c36565b845f0361209257505f90506001611a21565b8460ff84168501858112156120c45760405163d556b11160e01b81526004810188905260248101879052604401610c36565b5f805f83121561211057604c198312156120e7575f809550955050505050611a21565b825f03600a0a91508184816120fe576120fe61237f565b0495505084029091149150611a219050565b5f8313156121a957604d83131561214d5760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610c36565b82600a0a9150815f19816121635761216361237f565b048411156121975760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610c36565b5091909102925060019150611a219050565b8360019550955050505050611a21565b6121c16123b2565b565b5f602082840312156121d3575f80fd5b81356001600160e01b0319811681146121ea575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6121ea60208301846121f1565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215612255575f80fd5b81356001600160401b038082111561226b575f80fd5b818401915084601f83011261227e575f80fd5b81358181111561229057612290612231565b604051601f8201601f19908116603f011681019083821181831017156122b8576122b8612231565b816040528281528760208487010111156122d0575f80fd5b826020860160208301375f928101602001929092525095945050505050565b83151581525f60206060602084015261230b60608401866121f1565b8381036040850152845180825260208087019201905f5b8181101561233e57835183529284019291840191600101612322565b509098975050505050505050565b808201808211156101d157634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f826123ad57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52605160045260245ffdfe0101080010800082000100010480300038412a001810000010020004200004002018038ff54900cc66c60616592209895f0b16fec9301a02e0920c5bfe561c21609201e959460b1974270f844db208bcd3bf1d989376111049db13b93430190ae9a00af82a7805c138f40d28083f0742ef2104d561fd1415a13317716a6118d260cc107b9bfc0eec7ade15cba2891b6b14a512792bdb02e0f1471b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b781c141b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f15f2160f161e162d163c164c165b166b167a168a169a16a916b916c816d816e816f81707171615f2161e162d163c174b15f2161e162d163c174b175b"; /// @dev The runtime bytecode of the contract. bytes constant RUNTIME_CODE = - hex"608060405234801561000f575f80fd5b506004361061007a575f3560e01c80636f5aa28d116100585780636f5aa28d146100dd578063c6c0cbb61461010b578063ccf4477514610135578063d6d8c9a814610148575f80fd5b806301ffc9a71461007e578063336284d4146100a6578063570c7a63146100bb575b5f80fd5b61009161008c366004612159565b610150565b60405190151581526020015b60405180910390f35b6100ae6101d7565b60405161009d91906121b5565b6100ce6100c93660046121db565b610b58565b60405161009d93929190612285565b6040517fdc6156fd1b9fda1ce642d416969c2f632029b10b9e3864fbde264f391c51bdee815260200161009d565b61011e6101193660046121db565b610c9c565b60408051921515835260208301919091520161009d565b60408051602081019091525f81526100ae565b6100ae610cd4565b5f6001600160e01b031982166391ccb1d560e01b148061018057506001600160e01b03198216636f5aa28d60e01b145b8061019b57506001600160e01b03198216631a2c8edd60e01b145b806101b657506001600160e01b03198216630cd8a13560e21b145b806101d157506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f6101e6600460016122f6565b6101f19060026122f6565b6101fc9060016122f6565b6102079060016122f6565b6001600160401b0381111561021e5761021e6121c7565b60405190808252806020026020018201604052801561025157816020015b606081526020019060019003908161023c5790505b50604080516002808252606082019092529192505f9190816020015b61214f81526020019060019003908161026d5790505090506115f2815f8151811061029a5761029a612309565b60200260200101906001600160401b031690816001600160401b03168152505061160f816001815181106102d0576102d0612309565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b61214f81526020019060019003908161030057905050905061161e815f8151811061032d5761032d612309565b60200260200101906001600160401b031690816001600160401b03168152505061162d8160018151811061036357610363612309565b60200260200101906001600160401b031690816001600160401b03168152505061163c8160028151811061039957610399612309565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b61214f8152602001906001900390816103c957905050905061164c815f815181106103f6576103f6612309565b60200260200101906001600160401b031690816001600160401b03168152505061165b8160018151811061042c5761042c612309565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b61214f81526020019060019003908161045c57905050905061166b815f8151811061048957610489612309565b60200260200101906001600160401b031690816001600160401b03168152505061167a816001815181106104bf576104bf612309565b60200260200101906001600160401b031690816001600160401b03168152505061168a816002815181106104f5576104f5612309565b60200260200101906001600160401b031690816001600160401b03168152505061169a8160038151811061052b5761052b612309565b60200260200101906001600160401b031690816001600160401b0316815250506116a98160048151811061056157610561612309565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b61214f8152602001906001900390816105915790505090506116b9815f815181106105be576105be612309565b60200260200101906001600160401b031690816001600160401b0316815250506116c8816001815181106105f4576105f4612309565b60200260200101906001600160401b031690816001600160401b0316815250506116d88160028151811061062a5761062a612309565b60200260200101906001600160401b031690816001600160401b0316815250506116e88160038151811061066057610660612309565b60200260200101906001600160401b031690816001600160401b0316815250506116f88160048151811061069657610696612309565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b61214f8152602001906001900390816106c5579050509050611707815f815181106106f2576106f2612309565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b61214f815260200190600190039081610721579050509050611716815f8151811061074e5761074e612309565b60200260200101906001600160401b031690816001600160401b03168152505086885f8151811061078157610781612309565b602002602001018190525085886001815181106107a0576107a0612309565b602002602001018190525084886002815181106107bf576107bf612309565b602002602001018190525083886003815181106107de576107de612309565b602002602001018190525082886004815181106107fd576107fd612309565b6020026020010181905250818860058151811061081c5761081c612309565b6020026020010181905250808860068151811061083b5761083b612309565b602090810291909101015260408051600580825260c082019092525f91816020015b61214f81526020019060019003908161085d5790505090506115f2815f8151811061088a5761088a612309565b60200260200101906001600160401b031690816001600160401b03168152505061161e816001815181106108c0576108c0612309565b60200260200101906001600160401b031690816001600160401b03168152505061162d816002815181106108f6576108f6612309565b60200260200101906001600160401b031690816001600160401b03168152505061163c8160038151811061092c5761092c612309565b60200260200101906001600160401b031690816001600160401b03168152505061174b8160048151811061096257610962612309565b6001600160401b03909216602092830291909101909101528089610988600660016122f6565b8151811061099857610998612309565b602090810291909101015260408051600680825260e082019092525f91816020015b61214f8152602001906001900390816109ba5790505090506115f2815f815181106109e7576109e7612309565b60200260200101906001600160401b031690816001600160401b03168152505061161e81600181518110610a1d57610a1d612309565b60200260200101906001600160401b031690816001600160401b03168152505061162d81600281518110610a5357610a53612309565b60200260200101906001600160401b031690816001600160401b03168152505061163c81600381518110610a8957610a89612309565b60200260200101906001600160401b031690816001600160401b03168152505061174b81600481518110610abf57610abf612309565b60200260200101906001600160401b031690816001600160401b03168152505061175b81600581518110610af557610af5612309565b6001600160401b0390921660209283029190910190910152808a610b1b600660026122f6565b81518110610b2b57610b2b612309565b602090810291909101015289610b48610b438261176b565b6117cd565b9b50505050505050505050505090565b5f6060805f805f610b7887610b6b61185c565b610b7361187c565b61189c565b9250925092505f610b8e82610220015160200190565b90505f8261022001515182610ba391906122f6565b90505f610bc183836f07fffffe0000000003ff20000000000061198d565b80925081945050505f80610bda86610240015184611a29565b915091508115610c6f575f610bef8783611b00565b905061214f5f610bfd611b2f565b90505f60028251610c0e9190612331565b9050808510610c3f576040516303bdd1b160e51b815260048101869052602481018290526044015b60405180910390fd5b6001850160020282015161ffff169250610c588c8c8686565b9e509e509e50505050505050505050505050610c95565b5050604080515f80825281830190925260208101828152919a5090985096505050505050505b9193909250565b5f805f805f610cc4866002810151815160228084019461ffff93909316840101920160200190565b505f988998509650505050505050565b60605f610ce3600460016122f6565b610cee9060026122f6565b610cf99060016122f6565b610d049060016122f6565b6001600160401b03811115610d1b57610d1b6121c7565b604051908082528060200260200182016040528015610d4e57816020015b6060815260200190600190039081610d395790505b50604080516002808252606082019092529192505f9190816020015b61214f815260200190600190039081610d6a579050509050611b4f815f81518110610d9757610d97612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600181518110610dcd57610dcd612309565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b61214f815260200190600190039081610dfd579050509050611b4f815f81518110610e2a57610e2a612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600181518110610e6057610e60612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600281518110610e9657610e96612309565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b61214f815260200190600190039081610ec6579050509050611b4f815f81518110610ef357610ef3612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600181518110610f2957610f29612309565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b61214f815260200190600190039081610f59579050509050611b4f815f81518110610f8657610f86612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600181518110610fbc57610fbc612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600281518110610ff257610ff2612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160038151811061102857611028612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160048151811061105e5761105e612309565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b61214f81526020019060019003908161108e579050509050611b4f815f815181106110bb576110bb612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816001815181106110f1576110f1612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160028151811061112757611127612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160038151811061115d5761115d612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160048151811061119357611193612309565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b61214f8152602001906001900390816111c2579050509050611b78815f815181106111ef576111ef612309565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b61214f81526020019060019003908161121e579050509050611c14815f8151811061124b5761124b612309565b60200260200101906001600160401b031690816001600160401b03168152505086885f8151811061127e5761127e612309565b6020026020010181905250858860018151811061129d5761129d612309565b602002602001018190525084886002815181106112bc576112bc612309565b602002602001018190525083886003815181106112db576112db612309565b602002602001018190525082886004815181106112fa576112fa612309565b6020026020010181905250818860058151811061131957611319612309565b6020026020010181905250808860068151811061133857611338612309565b602090810291909101015260408051600580825260c082019092525f91816020015b61214f81526020019060019003908161135a579050509050611b4f815f8151811061138757611387612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816001815181106113bd576113bd612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816002815181106113f3576113f3612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160038151811061142957611429612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160048151811061145f5761145f612309565b6001600160401b03909216602092830291909101909101528089611485600660016122f6565b8151811061149557611495612309565b602090810291909101015260408051600680825260e082019092525f91816020015b61214f8152602001906001900390816114b7579050509050611b4f815f815181106114e4576114e4612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160018151811061151a5761151a612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160028151811061155057611550612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160038151811061158657611586612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816004815181106115bc576115bc612309565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600581518110610af557610af5612309565b5f6060806116005f80611ccc565b92509250925093509350939050565b5f6060806116005f6001611ccc565b5f60608061160060015f611ccc565b5f606080611600600180611ccc565b5f60608061160060016002611ccc565b5f60608061160060025f611ccc565b5f60608061160060026001611ccc565b5f60608061160060035f611ccc565b5f60608061160060036001611ccc565b5f60608061160060036002611ccc565b5f606080611600600380611ccc565b5f60608061160060036004611ccc565b5f60608061160060045f611ccc565b5f60608061160060046001611ccc565b5f60608061160060046002611ccc565b5f60608061160060046003611ccc565b5f606080611600600480611ccc565b5f606080611600600585611ccc565b5f60608060ff80851690600886901c1661173a6117348360066122f6565b82611ccc565b945094509450505093509350939050565b5f60608061160060016003611ccc565b5f60608061160060016004611ccc565b60605f61177783611d4e565b9050606060405190506020820260200181016040528181526020840160208551028101602083015b818310156117c257602083515102806020855101835e602093909301920161179f565b509195945050505050565b60605f82516002026001600160401b038111156117ec576117ec6121c7565b6040519080825280601f01601f191660200182016040528015611816576020820181803683370190505b50905061ffff80196020850160208651028101600285015b818310156118505780518351861690851617815260209092019160020161182e565b50939695505050505050565b60606040518060c00160405280609a8152602001612467609a9139905090565b60606040518060600160405280603c8152602001612501603c9139905090565b5f8061192b6040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b606061ffff600288015116935060ff600388015116925061ffff60058801511660058801975080885260208101880191505061197787878760405180602001604052805f815250611d7c565b915080826101e001819052505093509350939050565b5f8080600181878703602081116119a457806119a7565b60205b915050875192505b8519600184841a1b161581831016156119cd576001820191506119af565b9681019660208290036008810293841c90931b92611a185760408051602081018590520160408051601f198184030181529082905263e47fe8b760e01b8252610c36916004016121b5565b50869350909150505b935093915050565b600182810180515f928392600560ff93909316602102870192830192909101835b81831015611aee5760018301516021909301805190935f90819060ff168180611a73838e611f2d565b915091508186165f03611a95575f809b509b5050505050505050505050611af9565b5f87611aa5600185038916611f58565b016004028b015195505062ffffff9081169350841683039150611ad99050575060019750601c1a9550611af9945050505050565b611ae283611f58565b84019350505050611a4a565b5f8095509550505050505b9250929050565b6101c08201516002828102820101516101e08401515f9261ffff9092169190611b269083565b95945050505050565b60606040518060600160405280603c815260200161253d603c9139905090565b5f81515f14611b71576040516304f8b58160e51b815260040160405180910390fd5b505f919050565b5f8151600103611bd5575060208101516001600160e01b038116601b0b60e082901d5f611ba6838383612011565b905061ffff811115611bcb57604051631e4e01d760e21b815260040160405180910390fd5b9250611c0f915050565b81515f03611bf657604051630f16066b60e41b815260040160405180910390fd5b604051630358cd2160e31b815260040160405180910390fd5b919050565b5f8151600203611ca957602082015160408301516001600160e01b038216601b0b60e083901d5f611c46838383612011565b6001600160e01b038516601b0b935060e085901d925090505f611c6a848483612011565b905060ff821180611c7b575060ff81115b15611c9957604051631e4e01d760e21b815260040160405180910390fd5b60081b179450611c0f9350505050565b600282511015611bf657604051630f16066b60e41b815260040160405180910390fd5b5f60608060ff851180611cdf575060ff84115b15611d0757604051639b0f326160e01b81526004810186905260248101859052604401610c36565b6040805160248101909152600386602383015385602283015360106021830153806020830153506004815260408051602081019091525f8152600197919650945092505050565b5f60208201602083510281015b80821015611d755781515183019250602082019150611d5b565b5050919050565b611e096040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b5f6040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f801b81526020015f8152602001600481526020015f81526020015f81526020015f81526020015f801b815260200184815260200185815260200160046001600160401b03811115611e8e57611e8e6121c7565b604051908082528060200260200182016040528015611eb7578160200160208202803683370190505b5081525f602080830182905260408084018b905260609384018a90528051601f01601f19168281528083018252835161ffff191681178452855290840182905283018190529082018190526080820181905260a08201819052610120820181905261014082018190526102008201529050611b26565b5f80825f528360205360215f2090506001815f1a1b915062ffffff8116611af9575060019250929050565b5f5f198203611f6a5750610100919050565b507f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f5555555555555555555555555555555555555555555555555555555555555555600183901c16909103600281901c7f3333333333333333333333333333333333333333333333333333333333333333908116911601600481901c01167f01010101010101010101010101010101010101010101010101010101010101010260f81c90565b5f805f61201f868686612053565b915091508061204a5760405162bc8ecf60e31b81526004810187905260248101869052604401610c36565b50949350505050565b5f805f85121561208057604051634a7d166b60e01b81526004810186905260248101859052604401610c36565b845f0361209257505f90506001611a21565b8460ff84168501858112156120c45760405163d556b11160e01b81526004810188905260248101879052604401610c36565b5f805f83121561211057604c198312156120e7575f809550955050505050611a21565b825f03600a0a91508184816120fe576120fe61231d565b0495505084029091149150611a219050565b5f83131561213f5761212383600a612430565b915061212f828561243b565b955060019450611a219350505050565b8360019550955050505050611a21565b612157612452565b565b5f60208284031215612169575f80fd5b81356001600160e01b031981168114612180575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6121806020830184612187565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156121eb575f80fd5b81356001600160401b0380821115612201575f80fd5b818401915084601f830112612214575f80fd5b813581811115612226576122266121c7565b604051601f8201601f19908116603f0116810190838211818310171561224e5761224e6121c7565b81604052828152876020848701011115612266575f80fd5b826020860160208301375f928101602001929092525095945050505050565b83151581525f6020606060208401526122a16060840186612187565b8381036040850152845180825260208087019201905f5b818110156122d4578351835292840192918401916001016122b8565b509098975050505050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156101d1576101d16122e2565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f8261234b57634e487b7160e01b5f52601260045260245ffd5b500490565b600181815b8085111561238a57815f1904821115612370576123706122e2565b8085161561237d57918102915b93841c9390800290612355565b509250929050565b5f826123a0575060016101d1565b816123ac57505f6101d1565b81600181146123c257600281146123cc576123e8565b60019150506101d1565b60ff8411156123dd576123dd6122e2565b50506001821b6101d1565b5060208310610133831016604e8410600b841016171561240b575081810a6101d1565b6124158383612350565b805f1904821115612428576124286122e2565b029392505050565b5f6121808383612392565b80820281158282048414176101d1576101d16122e2565b634e487b7160e01b5f52605160045260245ffdfe0101080010800082000100010480300038412a001810000010020004200004002018038ff54900cc66c60616592209895f0b16fec9301a02e0920c5bfe561c21609201e959460b1974270f844db208bcd3bf1d989376111049db13b93430190ae9a00af82a7805c138f40d28083f0742ef2104d561fd1415a13317716a6118d260cc107b9bfc0eec7ade15cba2891b6b14a512792bdb02e0f1471b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b781c141b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f15f2160f161e162d163c164c165b166b167a168a169a16a916b916c816d816e816f81707171615f2161e162d163c174b15f2161e162d163c174b175b"; + hex"608060405234801561000f575f80fd5b506004361061007a575f3560e01c80636f5aa28d116100585780636f5aa28d146100dd578063c6c0cbb61461010b578063ccf4477514610135578063d6d8c9a814610148575f80fd5b806301ffc9a71461007e578063336284d4146100a6578063570c7a63146100bb575b5f80fd5b61009161008c3660046121c3565b610150565b60405190151581526020015b60405180910390f35b6100ae6101d7565b60405161009d919061221f565b6100ce6100c9366004612245565b610b58565b60405161009d939291906122ef565b6040517fdc6156fd1b9fda1ce642d416969c2f632029b10b9e3864fbde264f391c51bdee815260200161009d565b61011e610119366004612245565b610c9c565b60408051921515835260208301919091520161009d565b60408051602081019091525f81526100ae565b6100ae610cd4565b5f6001600160e01b031982166391ccb1d560e01b148061018057506001600160e01b03198216636f5aa28d60e01b145b8061019b57506001600160e01b03198216631a2c8edd60e01b145b806101b657506001600160e01b03198216630cd8a13560e21b145b806101d157506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f6101e66004600161234c565b6101f190600261234c565b6101fc90600161234c565b61020790600161234c565b6001600160401b0381111561021e5761021e612231565b60405190808252806020026020018201604052801561025157816020015b606081526020019060019003908161023c5790505b50604080516002808252606082019092529192505f9190816020015b6121b981526020019060019003908161026d5790505090506115f2815f8151811061029a5761029a61236b565b60200260200101906001600160401b031690816001600160401b03168152505061160f816001815181106102d0576102d061236b565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b6121b981526020019060019003908161030057905050905061161e815f8151811061032d5761032d61236b565b60200260200101906001600160401b031690816001600160401b03168152505061162d816001815181106103635761036361236b565b60200260200101906001600160401b031690816001600160401b03168152505061163c816002815181106103995761039961236b565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b6121b98152602001906001900390816103c957905050905061164c815f815181106103f6576103f661236b565b60200260200101906001600160401b031690816001600160401b03168152505061165b8160018151811061042c5761042c61236b565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6121b981526020019060019003908161045c57905050905061166b815f815181106104895761048961236b565b60200260200101906001600160401b031690816001600160401b03168152505061167a816001815181106104bf576104bf61236b565b60200260200101906001600160401b031690816001600160401b03168152505061168a816002815181106104f5576104f561236b565b60200260200101906001600160401b031690816001600160401b03168152505061169a8160038151811061052b5761052b61236b565b60200260200101906001600160401b031690816001600160401b0316815250506116a9816004815181106105615761056161236b565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6121b98152602001906001900390816105915790505090506116b9815f815181106105be576105be61236b565b60200260200101906001600160401b031690816001600160401b0316815250506116c8816001815181106105f4576105f461236b565b60200260200101906001600160401b031690816001600160401b0316815250506116d88160028151811061062a5761062a61236b565b60200260200101906001600160401b031690816001600160401b0316815250506116e8816003815181106106605761066061236b565b60200260200101906001600160401b031690816001600160401b0316815250506116f8816004815181106106965761069661236b565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6121b98152602001906001900390816106c5579050509050611707815f815181106106f2576106f261236b565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6121b9815260200190600190039081610721579050509050611716815f8151811061074e5761074e61236b565b60200260200101906001600160401b031690816001600160401b03168152505086885f815181106107815761078161236b565b602002602001018190525085886001815181106107a0576107a061236b565b602002602001018190525084886002815181106107bf576107bf61236b565b602002602001018190525083886003815181106107de576107de61236b565b602002602001018190525082886004815181106107fd576107fd61236b565b6020026020010181905250818860058151811061081c5761081c61236b565b6020026020010181905250808860068151811061083b5761083b61236b565b602090810291909101015260408051600580825260c082019092525f91816020015b6121b981526020019060019003908161085d5790505090506115f2815f8151811061088a5761088a61236b565b60200260200101906001600160401b031690816001600160401b03168152505061161e816001815181106108c0576108c061236b565b60200260200101906001600160401b031690816001600160401b03168152505061162d816002815181106108f6576108f661236b565b60200260200101906001600160401b031690816001600160401b03168152505061163c8160038151811061092c5761092c61236b565b60200260200101906001600160401b031690816001600160401b03168152505061174b816004815181106109625761096261236b565b6001600160401b039092166020928302919091019091015280896109886006600161234c565b815181106109985761099861236b565b602090810291909101015260408051600680825260e082019092525f91816020015b6121b98152602001906001900390816109ba5790505090506115f2815f815181106109e7576109e761236b565b60200260200101906001600160401b031690816001600160401b03168152505061161e81600181518110610a1d57610a1d61236b565b60200260200101906001600160401b031690816001600160401b03168152505061162d81600281518110610a5357610a5361236b565b60200260200101906001600160401b031690816001600160401b03168152505061163c81600381518110610a8957610a8961236b565b60200260200101906001600160401b031690816001600160401b03168152505061174b81600481518110610abf57610abf61236b565b60200260200101906001600160401b031690816001600160401b03168152505061175b81600581518110610af557610af561236b565b6001600160401b0390921660209283029190910190910152808a610b1b6006600261234c565b81518110610b2b57610b2b61236b565b602090810291909101015289610b48610b438261176b565b6117cd565b9b50505050505050505050505090565b5f6060805f805f610b7887610b6b61185c565b610b7361187c565b61189c565b9250925092505f610b8e82610220015160200190565b90505f8261022001515182610ba3919061234c565b90505f610bc183836f07fffffe0000000003ff20000000000061198d565b80925081945050505f80610bda86610240015184611a29565b915091508115610c6f575f610bef8783611b00565b90506121b95f610bfd611b2f565b90505f60028251610c0e9190612393565b9050808510610c3f576040516303bdd1b160e51b815260048101869052602481018290526044015b60405180910390fd5b6001850160020282015161ffff169250610c588c8c8686565b9e509e509e50505050505050505050505050610c95565b5050604080515f80825281830190925260208101828152919a5090985096505050505050505b9193909250565b5f805f805f610cc4866002810151815160228084019461ffff93909316840101920160200190565b505f988998509650505050505050565b60605f610ce36004600161234c565b610cee90600261234c565b610cf990600161234c565b610d0490600161234c565b6001600160401b03811115610d1b57610d1b612231565b604051908082528060200260200182016040528015610d4e57816020015b6060815260200190600190039081610d395790505b50604080516002808252606082019092529192505f9190816020015b6121b9815260200190600190039081610d6a579050509050611b4f815f81518110610d9757610d9761236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600181518110610dcd57610dcd61236b565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b6121b9815260200190600190039081610dfd579050509050611b4f815f81518110610e2a57610e2a61236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600181518110610e6057610e6061236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600281518110610e9657610e9661236b565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b6121b9815260200190600190039081610ec6579050509050611b4f815f81518110610ef357610ef361236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600181518110610f2957610f2961236b565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6121b9815260200190600190039081610f59579050509050611b4f815f81518110610f8657610f8661236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600181518110610fbc57610fbc61236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600281518110610ff257610ff261236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816003815181106110285761102861236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160048151811061105e5761105e61236b565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6121b981526020019060019003908161108e579050509050611b4f815f815181106110bb576110bb61236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816001815181106110f1576110f161236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816002815181106111275761112761236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160038151811061115d5761115d61236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816004815181106111935761119361236b565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6121b98152602001906001900390816111c2579050509050611b78815f815181106111ef576111ef61236b565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6121b981526020019060019003908161121e579050509050611c14815f8151811061124b5761124b61236b565b60200260200101906001600160401b031690816001600160401b03168152505086885f8151811061127e5761127e61236b565b6020026020010181905250858860018151811061129d5761129d61236b565b602002602001018190525084886002815181106112bc576112bc61236b565b602002602001018190525083886003815181106112db576112db61236b565b602002602001018190525082886004815181106112fa576112fa61236b565b602002602001018190525081886005815181106113195761131961236b565b602002602001018190525080886006815181106113385761133861236b565b602090810291909101015260408051600580825260c082019092525f91816020015b6121b981526020019060019003908161135a579050509050611b4f815f815181106113875761138761236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816001815181106113bd576113bd61236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816002815181106113f3576113f361236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816003815181106114295761142961236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160048151811061145f5761145f61236b565b6001600160401b039092166020928302919091019091015280896114856006600161234c565b815181106114955761149561236b565b602090810291909101015260408051600680825260e082019092525f91816020015b6121b98152602001906001900390816114b7579050509050611b4f815f815181106114e4576114e461236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f8160018151811061151a5761151a61236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816002815181106115505761155061236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816003815181106115865761158661236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f816004815181106115bc576115bc61236b565b60200260200101906001600160401b031690816001600160401b031681525050611b4f81600581518110610af557610af561236b565b5f6060806116005f80611ccc565b92509250925093509350939050565b5f6060806116005f6001611ccc565b5f60608061160060015f611ccc565b5f606080611600600180611ccc565b5f60608061160060016002611ccc565b5f60608061160060025f611ccc565b5f60608061160060026001611ccc565b5f60608061160060035f611ccc565b5f60608061160060036001611ccc565b5f60608061160060036002611ccc565b5f606080611600600380611ccc565b5f60608061160060036004611ccc565b5f60608061160060045f611ccc565b5f60608061160060046001611ccc565b5f60608061160060046002611ccc565b5f60608061160060046003611ccc565b5f606080611600600480611ccc565b5f606080611600600585611ccc565b5f60608060ff80851690600886901c1661173a61173483600661234c565b82611ccc565b945094509450505093509350939050565b5f60608061160060016003611ccc565b5f60608061160060016004611ccc565b60605f61177783611d4e565b9050606060405190506020820260200181016040528181526020840160208551028101602083015b818310156117c257602083515102806020855101835e602093909301920161179f565b509195945050505050565b60605f82516002026001600160401b038111156117ec576117ec612231565b6040519080825280601f01601f191660200182016040528015611816576020820181803683370190505b50905061ffff80196020850160208651028101600285015b818310156118505780518351861690851617815260209092019160020161182e565b50939695505050505050565b60606040518060c00160405280609a81526020016123c7609a9139905090565b60606040518060600160405280603c8152602001612461603c9139905090565b5f8061192b6040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b606061ffff600288015116935060ff600388015116925061ffff60058801511660058801975080885260208101880191505061197787878760405180602001604052805f815250611d7c565b915080826101e001819052505093509350939050565b5f8080600181878703602081116119a457806119a7565b60205b915050875192505b8519600184841a1b161581831016156119cd576001820191506119af565b9681019660208290036008810293841c90931b92611a185760408051602081018590520160408051601f198184030181529082905263e47fe8b760e01b8252610c369160040161221f565b50869350909150505b935093915050565b600182810180515f928392600560ff93909316602102870192830192909101835b81831015611aee5760018301516021909301805190935f90819060ff168180611a73838e611f2d565b915091508186165f03611a95575f809b509b5050505050505050505050611af9565b5f87611aa5600185038916611f58565b016004028b015195505062ffffff9081169350841683039150611ad99050575060019750601c1a9550611af9945050505050565b611ae283611f58565b84019350505050611a4a565b5f8095509550505050505b9250929050565b6101c08201516002828102820101516101e08401515f9261ffff9092169190611b269083565b95945050505050565b60606040518060600160405280603c815260200161249d603c9139905090565b5f81515f14611b71576040516304f8b58160e51b815260040160405180910390fd5b505f919050565b5f8151600103611bd5575060208101516001600160e01b038116601b0b60e082901d5f611ba6838383612011565b905061ffff811115611bcb57604051631e4e01d760e21b815260040160405180910390fd5b9250611c0f915050565b81515f03611bf657604051630f16066b60e41b815260040160405180910390fd5b604051630358cd2160e31b815260040160405180910390fd5b919050565b5f8151600203611ca957602082015160408301516001600160e01b038216601b0b60e083901d5f611c46838383612011565b6001600160e01b038516601b0b935060e085901d925090505f611c6a848483612011565b905060ff821180611c7b575060ff81115b15611c9957604051631e4e01d760e21b815260040160405180910390fd5b60081b179450611c0f9350505050565b600282511015611bf657604051630f16066b60e41b815260040160405180910390fd5b5f60608060ff851180611cdf575060ff84115b15611d0757604051639b0f326160e01b81526004810186905260248101859052604401610c36565b6040805160248101909152600386602383015385602283015360106021830153806020830153506004815260408051602081019091525f8152600197919650945092505050565b5f60208201602083510281015b80821015611d755781515183019250602082019150611d5b565b5050919050565b611e096040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b5f6040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f801b81526020015f8152602001600481526020015f81526020015f81526020015f81526020015f801b815260200184815260200185815260200160046001600160401b03811115611e8e57611e8e612231565b604051908082528060200260200182016040528015611eb7578160200160208202803683370190505b5081525f602080830182905260408084018b905260609384018a90528051601f01601f19168281528083018252835161ffff191681178452855290840182905283018190529082018190526080820181905260a08201819052610120820181905261014082018190526102008201529050611b26565b5f80825f528360205360215f2090506001815f1a1b915062ffffff8116611af9575060019250929050565b5f5f198203611f6a5750610100919050565b507f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f5555555555555555555555555555555555555555555555555555555555555555600183901c16909103600281901c7f3333333333333333333333333333333333333333333333333333333333333333908116911601600481901c01167f01010101010101010101010101010101010101010101010101010101010101010260f81c90565b5f805f61201f868686612053565b915091508061204a5760405162bc8ecf60e31b81526004810187905260248101869052604401610c36565b50949350505050565b5f805f85121561208057604051634a7d166b60e01b81526004810186905260248101859052604401610c36565b845f0361209257505f90506001611a21565b8460ff84168501858112156120c45760405163d556b11160e01b81526004810188905260248101879052604401610c36565b5f805f83121561211057604c198312156120e7575f809550955050505050611a21565b825f03600a0a91508184816120fe576120fe61237f565b0495505084029091149150611a219050565b5f8313156121a957604d83131561214d5760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610c36565b82600a0a9150815f19816121635761216361237f565b048411156121975760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610c36565b5091909102925060019150611a219050565b8360019550955050505050611a21565b6121c16123b2565b565b5f602082840312156121d3575f80fd5b81356001600160e01b0319811681146121ea575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6121ea60208301846121f1565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215612255575f80fd5b81356001600160401b038082111561226b575f80fd5b818401915084601f83011261227e575f80fd5b81358181111561229057612290612231565b604051601f8201601f19908116603f011681019083821181831017156122b8576122b8612231565b816040528281528760208487010111156122d0575f80fd5b826020860160208301375f928101602001929092525095945050505050565b83151581525f60206060602084015261230b60608401866121f1565b8381036040850152845180825260208087019201905f5b8181101561233e57835183529284019291840191600101612322565b509098975050505050505050565b808201808211156101d157634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f826123ad57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52605160045260245ffdfe0101080010800082000100010480300038412a001810000010020004200004002018038ff54900cc66c60616592209895f0b16fec9301a02e0920c5bfe561c21609201e959460b1974270f844db208bcd3bf1d989376111049db13b93430190ae9a00af82a7805c138f40d28083f0742ef2104d561fd1415a13317716a6118d260cc107b9bfc0eec7ade15cba2891b6b14a512792bdb02e0f1471b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b781c141b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f1b4f15f2160f161e162d163c164c165b166b167a168a169a16a916b916c816d816e816f81707171615f2161e162d163c174b15f2161e162d163c174b175b"; /// @dev The hash of the meta that describes the contract. bytes32 constant DESCRIBED_BY_META_HASH = bytes32(0xdc6156fd1b9fda1ce642d416969c2f632029b10b9e3864fbde264f391c51bdee); diff --git a/src/generated/RouteProcessorRaindexV6ArbOrderTaker.pointers.sol b/src/generated/RouteProcessorRaindexV6ArbOrderTaker.pointers.sol index b2e0fcfb12..cf56e619a6 100644 --- a/src/generated/RouteProcessorRaindexV6ArbOrderTaker.pointers.sol +++ b/src/generated/RouteProcessorRaindexV6ArbOrderTaker.pointers.sol @@ -10,12 +10,12 @@ pragma solidity ^0.8.25; // file needs the contract to exist so that it can be compiled. /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0x7b5dd05d81749ac00412adfcfd7a3cde1096452af9e201026773cb6da6145d11); +bytes32 constant BYTECODE_HASH = bytes32(0x728605dabf8d0f4235999e961f288b6e05765c8c210a302e81f1b4fea2754bc8); /// @dev The deterministic deploy address of the contract when deployed via /// the Zoltu factory. -address constant DEPLOYED_ADDRESS = address(0xb638a1b6BEfc22b1d0985a3cab8971b81788b756); +address constant DEPLOYED_ADDRESS = address(0x3dbef2Fb2ADFE64048Aa7E177F1645Ce7Bf5216d); /// @dev The runtime bytecode of the contract. bytes constant RUNTIME_CODE = - hex"608060405260043610610034575f3560e01c806301ffc9a71461003d578063691f9ed714610070578063b17c83c11461008f57005b3661003b57005b005b348015610048575f80fd5b5061005c61005736600461146c565b6100a2565b604051901515815260200160405180910390f35b34801561007b575f80fd5b5061003b61008a3660046114a7565b6100f3565b61003b61009d366004611549565b61028a565b5f6001600160e01b0319821663691f9ed760e01b14806100d257506001600160e01b0319821663b17c83c160e01b145b806100ed57506301ffc9a760e01b6001600160e01b03198316145b92915050565b736e2d0e71d900474b262e545bc4c98b71ab368d2161011d6001600160a01b038816825f196104ff565b5f61012a838501856116c4565b90505f610196878a6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561016d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019191906116fe565b61057e565b5090505f806101db888b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561016d573d5f803e3d5ffd5b91509150806101f257816101ee81611732565b9250505b604051632646478b60e01b81526001600160a01b03861690632646478b90610228908e9087908f90889030908c90600401611778565b6020604051808303815f875af1158015610244573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061026891906117c3565b5061027d6001600160a01b038c16865f6104ff565b5050505050505050505050565b6102926105c0565b6102a161029e82611946565b50565b6102ae6080830183611a02565b90505f036102cf57604051639c95219f60e01b815260040160405180910390fd5b5f6102dd6080840184611a02565b5f8181106102ed576102ed611a48565b90506020028101906102ff9190611a5c565b6103099080611a7a565b610317906040810190611a8e565b6103246080860186611a02565b5f81811061033457610334611a48565b90506020028101906103469190611a5c565b6020013581811061035957610359611a48565b61036f9260206040909202019081019150611ad4565b90505f61037f6080850185611a02565b5f81811061038f5761038f611a48565b90506020028101906103a19190611a5c565b6103ab9080611a7a565b6103b9906060810190611a8e565b6103c66080870187611a02565b5f8181106103d6576103d6611a48565b90506020028101906103e89190611a5c565b604001358181106103fb576103fb611a48565b6104119260206040909202019081019150611ad4565b90506104286001600160a01b038316865f196104ff565b6040516334e3942b60e11b81526001600160a01b038616906369c7285690610454908790600401611d38565b60408051808303815f875af115801561046f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104939190611f38565b506104aa90506001600160a01b038316865f6104ff565b6104cf6104b684611946565b836104c0856105ee565b846104ca866105ee565b610672565b50506104fa60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61050b8383835f61090c565b6104fa5761051c83835f600161090c565b61054957604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b610556838383600161090c565b6104fa57604051635274afe760e01b81526001600160a01b0384166004820152602401610540565b5f807bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416601b0b60e085901d6105b282828761096e565b9350935050505b9250929050565b6105c8610a6d565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f6105f7610ab1565b6040516354636d2b60e01b81526001600160a01b038316600482015273200e12d10bb0c5e4a17e7018f0f1161919bb9389906354636d2b906024016020604051808303815f875af115801561064e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100ed91906116fe565b6040805160018082528183019092525f91816020015b6060815260200190600190039081610688575050604080516003808252608082019092529192505f919060208201606080368337019050506040516370a0823160e01b81523060048201529091505f906001600160a01b038816906370a0823190602401602060405180830381865afa158015610707573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072b91906117c3565b90508015610747576107476001600160a01b0388163383610b3c565b5f6107528288610b49565b50905080835f8151811061076857610768611a48565b602090810291909101015250506040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa1580156107b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107dd91906117c3565b905080156107f9576107f96001600160a01b0386163383610b3c565b5f6108048286610b49565b509050808360018151811061081b5761081b611a48565b602090810291909101015250479050801561083a5761083a3382610b89565b61084681601119610c00565b8260028151811061085957610859611a48565b6020026020010181815250505080825f8151811061087957610879611a48565b60209081029190910101526040805160018082528183019092525f91816020015b6040805160a0810182525f918101828152606080830193909352608082018390528152602081019190915281526020019060019003908161089a57905050905087815f815181106108ed576108ed611a48565b60200260200101819052506109028382610c41565b5050505050505050565b60405163095ea7b360e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f51148316610962578383151615610956573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b5f805f85121561099b57604051634a7d166b60e01b81526004810186905260248101859052604401610540565b845f036109ad57505f90506001610a65565b8460ff84168501858112156109df5760405163d556b11160e01b81526004810188905260248101879052604401610540565b5f805f831215610a2b57604c19831215610a02575f809550955050505050610a65565b825f03600a0a9150818481610a1957610a19611f5a565b0495505084029091149150610a659050565b5f831315610a5a57610a3e83600a61204e565b9150610a4a8285612059565b955060019450610a659350505050565b509193506001925050505b935093915050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054600203610aaf57604051633ee5aeb560e01b815260040160405180910390fd5b565b73200e12d10bb0c5e4a17e7018f0f1161919bb93893b1580610b08575073200e12d10bb0c5e4a17e7018f0f1161919bb93893f7f1de7d717526cba131d684e312dedbf0852adef9cced9e36798ae4937f7145d4114155b15610aaf576040516373e6d7b360e01b815273200e12d10bb0c5e4a17e7018f0f1161919bb93896004820152602401610540565b6105568383836001610e05565b5f805f805f610b588787610e4f565b9250925092505f80610b6a8585610eab565b9150915081838015610b795750815b9650965050505050509250929050565b80471015610bb35760405163cf47918160e01b815247600482015260248101829052604401610540565b610bcc828260405180602001604052805f815250610f98565b15610bd5575050565b3d15610be757610be3610fad565b5050565b60405163d6bda27560e01b815260040160405180910390fd5b5f805f610c0d8585610eab565b9150915080610c39576040516322c9f7bb60e01b81526004810186905260248101859052604401610540565b509392505050565b335f8181523060209081526040808320815160a0810183528083018581526060808301879052608083018190529082528185015282518581529384018581528484019093529093909291905b865181101561090257868181518110610ca857610ca8611a48565b602002602001015193505f845f015160400151511115610dfd575f845f01515f01516001600160a01b031663d04dfe236040518060e00160405280885f0151602001516001600160a01b03168152602001898152602001885f01516040015181526020015f8152602001610d208d8a60200151610fb8565b8152602001878152602001868152506040518263ffffffff1660e01b8152600401610d4b91906120f7565b5f60405180830381865afa158015610d65573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d8c91908101906121f8565b9150505f81511115610dfb5784516020015160405163012c676d60e21b81526001600160a01b03909116906304b19db490610dcd908a9085906004016122ae565b5f604051808303815f87803b158015610de4575f80fd5b505af1158015610df6573d5f803e3d5ffd5b505050505b505b600101610c8d565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f51148316610962578383151615610956573d5f823e3d81fd5b5f808060ff841681037f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff861115610e9a57600a860460018201600a88065f1493509350935050610ea4565b8593509150600190505b9250925092565b5f601b83900b8314838382610f0f577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e1000000000000000000860515610eef57620186a0860595506005850194505b8586601b0b14610f0a57600a86059550846001019450610eef565b610f25565b855f03610f2557505f9250600191506105b99050565b848560030b14610f68575f851215610f4557505f92508291506105b99050565b60405163d556b11160e01b81526004810183905260248101829052604401610540565b50507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1791509250929050565b5f805f83516020850186885af1949350505050565b6040513d5f823e3d81fd5b60605f825167ffffffffffffffff811115610fd557610fd56115c7565b604051908082528060200260200182016040528015610ffe578160200160208202803683370190505b5090505f80845111611010575f611016565b83516001015b85516001010190505f8167ffffffffffffffff811115611038576110386115c7565b60405190808252806020026020018201604052801561106b57816020015b60608152602001906001900390816110565790505b5090505f61108f604080516002815233602082015230818301526060810190915290565b8282815181106110a1576110a1611a48565b60200260200101819052505f5b87518110156110fe5781806001019250508781815181106110d1576110d1611a48565b60200260200101518383815181106110eb576110eb611a48565b60209081029190910101526001016110ae565b508551156112905780806001019150508382828151811061112157611121611a48565b60200260200101819052505f5b865181101561128e576111dd87828151811061114c5761114c611a48565b60200260200101515f01516111ba6111888a858151811061116f5761116f611a48565b6020026020010151602001518051602090810291012090565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c902090565b8984815181106111cc576111cc611a48565b60200260200101516040015161129a565b6111fd57604051630a57f30960e31b815260048101829052602401610540565b86818151811061120f5761120f611a48565b60200260200101515f01516001600160a01b03165f1b85828151811061123757611237611a48565b602002602001018181525050818060010192505086818151811061125d5761125d611a48565b60200260200101516020015183838151811061127b5761127b611a48565b602090810291909101015260010161112e565b505b5095945050505050565b5f836001600160a01b03163b5f036112f8575f806112b8858561130d565b5090925090505f8160038111156112d1576112d16122c6565b1480156112ef5750856001600160a01b0316826001600160a01b0316145b92505050611306565b611303848484611353565b90505b9392505050565b5f805f8351604103611344576020840151604085015160608601515f1a611336888285856113a4565b955095509550505050610ea4565b505081515f9150600290610ea4565b805160408051630b135d3f60e11b8082526004820186905260248201929092525f92906020820185604483015e60205f60648401838a5afa9050825f5114601f3d1116811693505050509392505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156113dd57505f91506003905082611462565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561142e573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661145957505f925060019150829050611462565b92505f91508190505b9450945094915050565b5f6020828403121561147c575f80fd5b81356001600160e01b031981168114611306575f80fd5b6001600160a01b038116811461029e575f80fd5b5f805f805f8060a087890312156114bc575f80fd5b86356114c781611493565b955060208701356114d781611493565b94506040870135935060608701359250608087013567ffffffffffffffff80821115611501575f80fd5b818901915089601f830112611514575f80fd5b813581811115611522575f80fd5b8a6020828501011115611533575f80fd5b6020830194508093505050509295509295509295565b5f805f6060848603121561155b575f80fd5b833561156681611493565b9250602084013567ffffffffffffffff80821115611582575f80fd5b9085019060c08288031215611595575f80fd5b909250604085013590808211156115aa575f80fd5b508401604081870312156115bc575f80fd5b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156115fe576115fe6115c7565b60405290565b6040805190810167ffffffffffffffff811182821017156115fe576115fe6115c7565b604051601f8201601f1916810167ffffffffffffffff81118282101715611650576116506115c7565b604052919050565b5f82601f830112611667575f80fd5b813567ffffffffffffffff811115611681576116816115c7565b611694601f8201601f1916602001611627565b8181528460208386010111156116a8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156116d4575f80fd5b813567ffffffffffffffff8111156116ea575f80fd5b6116f684828501611658565b949350505050565b5f6020828403121561170e575f80fd5b815160ff81168114611306575f80fd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016117435761174361171e565b5060010190565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f6001600160a01b038089168352876020840152808716604084015285606084015280851660808401525060c060a08301526117b760c083018461174a565b98975050505050505050565b5f602082840312156117d3575f80fd5b5051919050565b5f67ffffffffffffffff8211156117f3576117f36115c7565b5060051b60200190565b5f82601f83011261180c575f80fd5b8135602061182161181c836117da565b611627565b82815260059290921b8401810191818101908684111561183f575f80fd5b8286015b8481101561193b57803567ffffffffffffffff80821115611862575f80fd5b908801906060828b03601f19011215611879575f80fd5b6118816115db565b8683013561188e81611493565b8152604083810135838111156118a2575f80fd5b8401603f81018d136118b2575f80fd5b888101356118c261181c826117da565b81815260059190911b82018301908a8101908f8311156118e0575f80fd5b928401925b828410156118fe5783358252928b0192908b01906118e5565b858c0152505050606084013583811115611916575f80fd5b6119248d8a83880101611658565b918301919091525085525050918301918301611843565b509695505050505050565b5f60408236031215611956575f80fd5b61195e611604565b823567ffffffffffffffff80821115611975575f80fd5b818501915060608236031215611989575f80fd5b6119916115db565b823561199c81611493565b815260208301356119ac81611493565b60208201526040830135828111156119c2575f80fd5b6119ce36828601611658565b604083015250835260208501359150808211156119e9575f80fd5b506119f6368286016117fd565b60208301525092915050565b5f808335601e19843603018112611a17575f80fd5b83018035915067ffffffffffffffff821115611a31575f80fd5b6020019150600581901b36038213156105b9575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235607e19833603018112611a70575f80fd5b9190910192915050565b5f8235609e19833603018112611a70575f80fd5b5f808335601e19843603018112611aa3575f80fd5b83018035915067ffffffffffffffff821115611abd575f80fd5b6020019150600681901b36038213156105b9575f80fd5b5f60208284031215611ae4575f80fd5b813561130681611493565b5f808335601e19843603018112611b04575f80fd5b830160208101925035905067ffffffffffffffff811115611b23575f80fd5b8060051b36038213156105b9575f80fd5b5f8235605e19833603018112611b48575f80fd5b90910192915050565b5f808335601e19843603018112611b66575f80fd5b830160208101925035905067ffffffffffffffff811115611b85575f80fd5b8036038213156105b9575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f808335601e19843603018112611bd0575f80fd5b830160208101925035905067ffffffffffffffff811115611bef575f80fd5b8060061b36038213156105b9575f80fd5b8183525f60208085019450825f5b85811015611c46578135611c2181611493565b6001600160a01b03168752818301358388015260409687019690910190600101611c0e565b509495945050505050565b8183526020808401935f91600585811b8301820185855b88811015611d2a57858303601f19018a52611c838289611b34565b60608135611c9081611493565b6001600160a01b03168552611ca782880183611aef565b82898801528083880152608092507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115611ce1575f80fd5b871b808288850137860190506040611cfb84820185611b51565b9450838884030182890152611d138484018683611b93565b9e8a019e9750505093870193505050600101611c68565b509098975050505050505050565b5f602080835260e08301843582850152604082860135818601526060818701358187015280870135801515808214611d6e575f80fd5b8060808901525050611d836080880188611aef565b60c060a08901529384905261010093848801600582901b89018601835f5b84811015611eff578b830360ff19018452813536879003607e19018112611dc6575f80fd5b8601803536829003609e19018112611ddc575f80fd5b6080855281018035611ded81611493565b6001600160a01b038082166080880152611e098e840184611b34565b915060a0808801528135611e1c81611493565b8116610120880152818e0135611e3181611493565b16610140870152611e44818c0182611b51565b91508a610160880152611e5c61018088018383611b93565b915050611e6b8b830183611bbb565b607f19808985030160c08a0152611e83848385611c00565b9350611e918d860186611bbb565b93509150808985030160e08a015250611eab838383611c00565b9250505060808201358c8701528c8301358d8701528a8301358b870152611ed48a840184611aef565b935091508581038a870152611eea818484611c51565b968d019695505050918a019150600101611da1565b5050611f0e60a08c018c611b51565b8b8303601f190160c08d015298509650611f29818989611b93565b9b9a5050505050505050505050565b5f8060408385031215611f49575f80fd5b505080516020909101519092909150565b634e487b7160e01b5f52601260045260245ffd5b600181815b80851115611fa857815f1904821115611f8e57611f8e61171e565b80851615611f9b57918102915b93841c9390800290611f73565b509250929050565b5f82611fbe575060016100ed565b81611fca57505f6100ed565b8160018114611fe05760028114611fea57612006565b60019150506100ed565b60ff841115611ffb57611ffb61171e565b50506001821b6100ed565b5060208310610133831016604e8410600b8410161715612029575081810a6100ed565b6120338383611f6e565b805f19048211156120465761204661171e565b029392505050565b5f6113068383611fb0565b80820281158282048414176100ed576100ed61171e565b5f815180845260208085019450602084015f5b83811015611c4657815187529582019590820190600101612083565b5f8282518085526020808601955060208260051b840101602086015f5b848110156120ea57601f198684030189526120d8838351612070565b988401989250908301906001016120bc565b5090979650505050505050565b602081526001600160a01b038251166020820152602082015160408201525f604083015160e0606084015261213061010084018261174a565b9050606084015160808401526080840151601f19808584030160a0860152612158838361209f565b925060a08601519150808584030160c08601526121758383612070565b925060c08601519150808584030160e0860152506121938282612070565b95945050505050565b5f82601f8301126121ab575f80fd5b815160206121bb61181c836117da565b8083825260208201915060208460051b8701019350868411156121dc575f80fd5b602086015b8481101561193b57805183529183019183016121e1565b5f8060408385031215612209575f80fd5b825167ffffffffffffffff80821115612220575f80fd5b818501915085601f830112612233575f80fd5b8151602061224361181c836117da565b82815260059290921b84018101918181019089841115612261575f80fd5b948201945b8386101561227f57855182529482019490820190612266565b91880151919650909350505080821115612297575f80fd5b506122a48582860161219c565b9150509250929050565b828152604060208201525f6116f66040830184612070565b634e487b7160e01b5f52602160045260245ffd"; + hex"608060405260043610610034575f3560e01c806301ffc9a71461003d578063691f9ed714610070578063b17c83c11461008f57005b3661003b57005b005b348015610048575f80fd5b5061005c6100573660046114d6565b6100a2565b604051901515815260200160405180910390f35b34801561007b575f80fd5b5061003b61008a366004611511565b6100f3565b61003b61009d3660046115b3565b61028a565b5f6001600160e01b0319821663691f9ed760e01b14806100d257506001600160e01b0319821663b17c83c160e01b145b806100ed57506301ffc9a760e01b6001600160e01b03198316145b92915050565b736e2d0e71d900474b262e545bc4c98b71ab368d2161011d6001600160a01b038816825f196104ff565b5f61012a8385018561172e565b90505f610196878a6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561016d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101919190611768565b61057e565b5090505f806101db888b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561016d573d5f803e3d5ffd5b91509150806101f257816101ee81611788565b9250505b604051632646478b60e01b81526001600160a01b03861690632646478b90610228908e9087908f90889030908c906004016117da565b6020604051808303815f875af1158015610244573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102689190611825565b5061027d6001600160a01b038c16865f6104ff565b5050505050505050505050565b6102926105c0565b6102a161029e826119a8565b50565b6102ae6080830183611a64565b90505f036102cf57604051639c95219f60e01b815260040160405180910390fd5b5f6102dd6080840184611a64565b5f8181106102ed576102ed611aaa565b90506020028101906102ff9190611abe565b6103099080611adc565b610317906040810190611af0565b6103246080860186611a64565b5f81811061033457610334611aaa565b90506020028101906103469190611abe565b6020013581811061035957610359611aaa565b61036f9260206040909202019081019150611b36565b90505f61037f6080850185611a64565b5f81811061038f5761038f611aaa565b90506020028101906103a19190611abe565b6103ab9080611adc565b6103b9906060810190611af0565b6103c66080870187611a64565b5f8181106103d6576103d6611aaa565b90506020028101906103e89190611abe565b604001358181106103fb576103fb611aaa565b6104119260206040909202019081019150611b36565b90506104286001600160a01b038316865f196104ff565b6040516334e3942b60e11b81526001600160a01b038616906369c7285690610454908790600401611d9a565b60408051808303815f875af115801561046f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104939190611f9a565b506104aa90506001600160a01b038316865f6104ff565b6104cf6104b6846119a8565b836104c0856105ee565b846104ca866105ee565b610672565b50506104fa60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61050b8383835f61090c565b6104fa5761051c83835f600161090c565b61054957604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b610556838383600161090c565b6104fa57604051635274afe760e01b81526001600160a01b0384166004820152602401610540565b5f807bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416601b0b60e085901d6105b282828761096e565b9350935050505b9250929050565b6105c8610ad7565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f6105f7610b1b565b6040516354636d2b60e01b81526001600160a01b038316600482015273200e12d10bb0c5e4a17e7018f0f1161919bb9389906354636d2b906024016020604051808303815f875af115801561064e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100ed9190611768565b6040805160018082528183019092525f91816020015b6060815260200190600190039081610688575050604080516003808252608082019092529192505f919060208201606080368337019050506040516370a0823160e01b81523060048201529091505f906001600160a01b038816906370a0823190602401602060405180830381865afa158015610707573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072b9190611825565b90508015610747576107476001600160a01b0388163383610ba6565b5f6107528288610bb3565b50905080835f8151811061076857610768611aaa565b602090810291909101015250506040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa1580156107b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107dd9190611825565b905080156107f9576107f96001600160a01b0386163383610ba6565b5f6108048286610bb3565b509050808360018151811061081b5761081b611aaa565b602090810291909101015250479050801561083a5761083a3382610bf3565b61084681601119610c6a565b8260028151811061085957610859611aaa565b6020026020010181815250505080825f8151811061087957610879611aaa565b60209081029190910101526040805160018082528183019092525f91816020015b6040805160a0810182525f918101828152606080830193909352608082018390528152602081019190915281526020019060019003908161089a57905050905087815f815181106108ed576108ed611aaa565b60200260200101819052506109028382610cab565b5050505050505050565b60405163095ea7b360e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f51148316610962578383151615610956573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b5f805f85121561099b57604051634a7d166b60e01b81526004810186905260248101859052604401610540565b845f036109ad57505f90506001610acf565b8460ff84168501858112156109df5760405163d556b11160e01b81526004810188905260248101879052604401610540565b5f805f831215610a2b57604c19831215610a02575f809550955050505050610acf565b825f03600a0a9150818481610a1957610a19611fbc565b0495505084029091149150610acf9050565b5f831315610ac457604d831315610a685760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610540565b82600a0a9150815f1981610a7e57610a7e611fbc565b04841115610ab25760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610540565b5091909102925060019150610acf9050565b509193506001925050505b935093915050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054600203610b1957604051633ee5aeb560e01b815260040160405180910390fd5b565b73200e12d10bb0c5e4a17e7018f0f1161919bb93893b1580610b72575073200e12d10bb0c5e4a17e7018f0f1161919bb93893f7f1de7d717526cba131d684e312dedbf0852adef9cced9e36798ae4937f7145d4114155b15610b19576040516373e6d7b360e01b815273200e12d10bb0c5e4a17e7018f0f1161919bb93896004820152602401610540565b6105568383836001610e6f565b5f805f805f610bc28787610eb9565b9250925092505f80610bd48585610f15565b9150915081838015610be35750815b9650965050505050509250929050565b80471015610c1d5760405163cf47918160e01b815247600482015260248101829052604401610540565b610c36828260405180602001604052805f815250611002565b15610c3f575050565b3d15610c5157610c4d611017565b5050565b60405163d6bda27560e01b815260040160405180910390fd5b5f805f610c778585610f15565b9150915080610ca3576040516322c9f7bb60e01b81526004810186905260248101859052604401610540565b509392505050565b335f8181523060209081526040808320815160a0810183528083018581526060808301879052608083018190529082528185015282518581529384018581528484019093529093909291905b865181101561090257868181518110610d1257610d12611aaa565b602002602001015193505f845f015160400151511115610e67575f845f01515f01516001600160a01b031663d04dfe236040518060e00160405280885f0151602001516001600160a01b03168152602001898152602001885f01516040015181526020015f8152602001610d8a8d8a60200151611022565b8152602001878152602001868152506040518263ffffffff1660e01b8152600401610db59190612057565b5f60405180830381865afa158015610dcf573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610df69190810190612158565b9150505f81511115610e655784516020015160405163012c676d60e21b81526001600160a01b03909116906304b19db490610e37908a90859060040161220e565b5f604051808303815f87803b158015610e4e575f80fd5b505af1158015610e60573d5f803e3d5ffd5b505050505b505b600101610cf7565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f51148316610962578383151615610956573d5f823e3d81fd5b5f808060ff841681037f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff861115610f0457600a860460018201600a88065f1493509350935050610f0e565b8593509150600190505b9250925092565b5f601b83900b8314838382610f79577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e1000000000000000000860515610f5957620186a0860595506005850194505b8586601b0b14610f7457600a86059550846001019450610f59565b610f8f565b855f03610f8f57505f9250600191506105b99050565b848560030b14610fd2575f851215610faf57505f92508291506105b99050565b60405163d556b11160e01b81526004810183905260248101829052604401610540565b50507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1791509250929050565b5f805f83516020850186885af1949350505050565b6040513d5f823e3d81fd5b60605f825167ffffffffffffffff81111561103f5761103f611631565b604051908082528060200260200182016040528015611068578160200160208202803683370190505b5090505f8084511161107a575f611080565b83516001015b85516001010190505f8167ffffffffffffffff8111156110a2576110a2611631565b6040519080825280602002602001820160405280156110d557816020015b60608152602001906001900390816110c05790505b5090505f6110f9604080516002815233602082015230818301526060810190915290565b82828151811061110b5761110b611aaa565b60200260200101819052505f5b875181101561116857818060010192505087818151811061113b5761113b611aaa565b602002602001015183838151811061115557611155611aaa565b6020908102919091010152600101611118565b508551156112fa5780806001019150508382828151811061118b5761118b611aaa565b60200260200101819052505f5b86518110156112f8576112478782815181106111b6576111b6611aaa565b60200260200101515f01516112246111f28a85815181106111d9576111d9611aaa565b6020026020010151602001518051602090810291012090565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c902090565b89848151811061123657611236611aaa565b602002602001015160400151611304565b61126757604051630a57f30960e31b815260048101829052602401610540565b86818151811061127957611279611aaa565b60200260200101515f01516001600160a01b03165f1b8582815181106112a1576112a1611aaa565b60200260200101818152505081806001019250508681815181106112c7576112c7611aaa565b6020026020010151602001518383815181106112e5576112e5611aaa565b6020908102919091010152600101611198565b505b5095945050505050565b5f836001600160a01b03163b5f03611362575f806113228585611377565b5090925090505f81600381111561133b5761133b612226565b1480156113595750856001600160a01b0316826001600160a01b0316145b92505050611370565b61136d8484846113bd565b90505b9392505050565b5f805f83516041036113ae576020840151604085015160608601515f1a6113a08882858561140e565b955095509550505050610f0e565b505081515f9150600290610f0e565b805160408051630b135d3f60e11b8082526004820186905260248201929092525f92906020820185604483015e60205f60648401838a5afa9050825f5114601f3d1116811693505050509392505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561144757505f915060039050826114cc565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611498573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b0381166114c357505f9250600191508290506114cc565b92505f91508190505b9450945094915050565b5f602082840312156114e6575f80fd5b81356001600160e01b031981168114611370575f80fd5b6001600160a01b038116811461029e575f80fd5b5f805f805f8060a08789031215611526575f80fd5b8635611531816114fd565b95506020870135611541816114fd565b94506040870135935060608701359250608087013567ffffffffffffffff8082111561156b575f80fd5b818901915089601f83011261157e575f80fd5b81358181111561158c575f80fd5b8a602082850101111561159d575f80fd5b6020830194508093505050509295509295509295565b5f805f606084860312156115c5575f80fd5b83356115d0816114fd565b9250602084013567ffffffffffffffff808211156115ec575f80fd5b9085019060c082880312156115ff575f80fd5b90925060408501359080821115611614575f80fd5b50840160408187031215611626575f80fd5b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561166857611668611631565b60405290565b6040805190810167ffffffffffffffff8111828210171561166857611668611631565b604051601f8201601f1916810167ffffffffffffffff811182821017156116ba576116ba611631565b604052919050565b5f82601f8301126116d1575f80fd5b813567ffffffffffffffff8111156116eb576116eb611631565b6116fe601f8201601f1916602001611691565b818152846020838601011115611712575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561173e575f80fd5b813567ffffffffffffffff811115611754575f80fd5b611760848285016116c2565b949350505050565b5f60208284031215611778575f80fd5b815160ff81168114611370575f80fd5b5f600182016117a557634e487b7160e01b5f52601160045260245ffd5b5060010190565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f6001600160a01b038089168352876020840152808716604084015285606084015280851660808401525060c060a083015261181960c08301846117ac565b98975050505050505050565b5f60208284031215611835575f80fd5b5051919050565b5f67ffffffffffffffff82111561185557611855611631565b5060051b60200190565b5f82601f83011261186e575f80fd5b8135602061188361187e8361183c565b611691565b82815260059290921b840181019181810190868411156118a1575f80fd5b8286015b8481101561199d57803567ffffffffffffffff808211156118c4575f80fd5b908801906060828b03601f190112156118db575f80fd5b6118e3611645565b868301356118f0816114fd565b815260408381013583811115611904575f80fd5b8401603f81018d13611914575f80fd5b8881013561192461187e8261183c565b81815260059190911b82018301908a8101908f831115611942575f80fd5b928401925b828410156119605783358252928b0192908b0190611947565b858c0152505050606084013583811115611978575f80fd5b6119868d8a838801016116c2565b9183019190915250855250509183019183016118a5565b509695505050505050565b5f604082360312156119b8575f80fd5b6119c061166e565b823567ffffffffffffffff808211156119d7575f80fd5b8185019150606082360312156119eb575f80fd5b6119f3611645565b82356119fe816114fd565b81526020830135611a0e816114fd565b6020820152604083013582811115611a24575f80fd5b611a30368286016116c2565b60408301525083526020850135915080821115611a4b575f80fd5b50611a583682860161185f565b60208301525092915050565b5f808335601e19843603018112611a79575f80fd5b83018035915067ffffffffffffffff821115611a93575f80fd5b6020019150600581901b36038213156105b9575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235607e19833603018112611ad2575f80fd5b9190910192915050565b5f8235609e19833603018112611ad2575f80fd5b5f808335601e19843603018112611b05575f80fd5b83018035915067ffffffffffffffff821115611b1f575f80fd5b6020019150600681901b36038213156105b9575f80fd5b5f60208284031215611b46575f80fd5b8135611370816114fd565b5f808335601e19843603018112611b66575f80fd5b830160208101925035905067ffffffffffffffff811115611b85575f80fd5b8060051b36038213156105b9575f80fd5b5f8235605e19833603018112611baa575f80fd5b90910192915050565b5f808335601e19843603018112611bc8575f80fd5b830160208101925035905067ffffffffffffffff811115611be7575f80fd5b8036038213156105b9575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f808335601e19843603018112611c32575f80fd5b830160208101925035905067ffffffffffffffff811115611c51575f80fd5b8060061b36038213156105b9575f80fd5b8183525f60208085019450825f5b85811015611ca8578135611c83816114fd565b6001600160a01b03168752818301358388015260409687019690910190600101611c70565b509495945050505050565b8183526020808401935f91600585811b8301820185855b88811015611d8c57858303601f19018a52611ce58289611b96565b60608135611cf2816114fd565b6001600160a01b03168552611d0982880183611b51565b82898801528083880152608092507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115611d43575f80fd5b871b808288850137860190506040611d5d84820185611bb3565b9450838884030182890152611d758484018683611bf5565b9e8a019e9750505093870193505050600101611cca565b509098975050505050505050565b5f602080835260e08301843582850152604082860135818601526060818701358187015280870135801515808214611dd0575f80fd5b8060808901525050611de56080880188611b51565b60c060a08901529384905261010093848801600582901b89018601835f5b84811015611f61578b830360ff19018452813536879003607e19018112611e28575f80fd5b8601803536829003609e19018112611e3e575f80fd5b6080855281018035611e4f816114fd565b6001600160a01b038082166080880152611e6b8e840184611b96565b915060a0808801528135611e7e816114fd565b8116610120880152818e0135611e93816114fd565b16610140870152611ea6818c0182611bb3565b91508a610160880152611ebe61018088018383611bf5565b915050611ecd8b830183611c1d565b607f19808985030160c08a0152611ee5848385611c62565b9350611ef38d860186611c1d565b93509150808985030160e08a015250611f0d838383611c62565b9250505060808201358c8701528c8301358d8701528a8301358b870152611f368a840184611b51565b935091508581038a870152611f4c818484611cb3565b968d019695505050918a019150600101611e03565b5050611f7060a08c018c611bb3565b8b8303601f190160c08d015298509650611f8b818989611bf5565b9b9a5050505050505050505050565b5f8060408385031215611fab575f80fd5b505080516020909101519092909150565b634e487b7160e01b5f52601260045260245ffd5b5f815180845260208085019450602084015f5b83811015611ca857815187529582019590820190600101611fe3565b5f8282518085526020808601955060208260051b840101602086015f5b8481101561204a57601f19868403018952612038838351611fd0565b9884019892509083019060010161201c565b5090979650505050505050565b602081526001600160a01b038251166020820152602082015160408201525f604083015160e060608401526120906101008401826117ac565b9050606084015160808401526080840151601f19808584030160a08601526120b88383611fff565b925060a08601519150808584030160c08601526120d58383611fd0565b925060c08601519150808584030160e0860152506120f38282611fd0565b95945050505050565b5f82601f83011261210b575f80fd5b8151602061211b61187e8361183c565b8083825260208201915060208460051b87010193508684111561213c575f80fd5b602086015b8481101561199d5780518352918301918301612141565b5f8060408385031215612169575f80fd5b825167ffffffffffffffff80821115612180575f80fd5b818501915085601f830112612193575f80fd5b815160206121a361187e8361183c565b82815260059290921b840181019181810190898411156121c1575f80fd5b948201945b838610156121df578551825294820194908201906121c6565b918801519196509093505050808211156121f7575f80fd5b50612204858286016120fc565b9150509250929050565b828152604060208201525f6117606040830184611fd0565b634e487b7160e01b5f52602160045260245ffd"; diff --git a/test/concrete/raindex/RaindexV6.addOrder.mock.t.sol b/test/concrete/raindex/RaindexV6.addOrder.mock.t.sol index 72305201a8..517597e4e6 100644 --- a/test/concrete/raindex/RaindexV6.addOrder.mock.t.sol +++ b/test/concrete/raindex/RaindexV6.addOrder.mock.t.sol @@ -7,7 +7,9 @@ import {OrderConfigV4, OrderV4, IOV2, EvaluableV4, TaskV2} from "raindex-interfa import {LibTestAddOrder} from "test/util/lib/LibTestAddOrder.sol"; import {NotRainMetaV1, META_MAGIC_NUMBER_V1} from "rain-metadata-0.1.0/src/interface/unstable/IMetaV1_2.sol"; import {LibMeta} from "rain-metadata-0.1.0/src/lib/LibMeta.sol"; -import {IExpressionDeployerV3} from "rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IExpressionDeployerV3.sol"; +import { + IExpressionDeployerV3 +} from "rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IExpressionDeployerV3.sol"; /// @title RaindexV6AddOrderMockTest /// @notice Tests the addOrder function of the RaindexV6 contract. diff --git a/test/concrete/raindex/RaindexV6.deposit.entask.t.sol b/test/concrete/raindex/RaindexV6.deposit.entask.t.sol index e076ee631a..ce7dc0d6bc 100644 --- a/test/concrete/raindex/RaindexV6.deposit.entask.t.sol +++ b/test/concrete/raindex/RaindexV6.deposit.entask.t.sol @@ -3,7 +3,12 @@ pragma solidity =0.8.25; import {RaindexV6ExternalRealTest, LibDecimalFloat, Float} from "test/util/abstract/RaindexV6ExternalRealTest.sol"; -import {OrderConfigV4, EvaluableV4, TaskV2, SignedContextV1} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import { + OrderConfigV4, + EvaluableV4, + TaskV2, + SignedContextV1 +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import {IERC20Metadata} from "@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol"; import {LibFormatDecimalFloat} from "rain-math-float-0.1.1/src/lib/format/LibFormatDecimalFloat.sol"; diff --git a/test/concrete/raindex/RaindexV6.entask.t.sol b/test/concrete/raindex/RaindexV6.entask.t.sol index 9401d2741b..c60c46e42e 100644 --- a/test/concrete/raindex/RaindexV6.entask.t.sol +++ b/test/concrete/raindex/RaindexV6.entask.t.sol @@ -3,7 +3,12 @@ pragma solidity =0.8.25; import {RaindexV6ExternalRealTest} from "test/util/abstract/RaindexV6ExternalRealTest.sol"; -import {OrderConfigV4, EvaluableV4, TaskV2, SignedContextV1} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import { + OrderConfigV4, + EvaluableV4, + TaskV2, + SignedContextV1 +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; contract RaindexV6EnactTest is RaindexV6ExternalRealTest { function checkReentrancyRW() internal view { diff --git a/test/concrete/raindex/RaindexV6.withdraw.entask.t.sol b/test/concrete/raindex/RaindexV6.withdraw.entask.t.sol index 60c7148f84..a8740cb1ef 100644 --- a/test/concrete/raindex/RaindexV6.withdraw.entask.t.sol +++ b/test/concrete/raindex/RaindexV6.withdraw.entask.t.sol @@ -3,7 +3,12 @@ pragma solidity =0.8.25; import {RaindexV6ExternalRealTest} from "test/util/abstract/RaindexV6ExternalRealTest.sol"; -import {OrderConfigV4, EvaluableV4, TaskV2, SignedContextV1} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; +import { + OrderConfigV4, + EvaluableV4, + TaskV2, + SignedContextV1 +} from "raindex-interface-0.1.1/src/interface/IRaindexV6.sol"; import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import {IERC20Metadata} from "@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol"; diff --git a/test/concrete/raindex/RaindexV6.withdraw.t.sol b/test/concrete/raindex/RaindexV6.withdraw.t.sol index e6a6898c02..c093e2ab8d 100644 --- a/test/concrete/raindex/RaindexV6.withdraw.t.sol +++ b/test/concrete/raindex/RaindexV6.withdraw.t.sol @@ -12,7 +12,9 @@ import {TaskV2, IRaindexV6} from "raindex-interface-0.1.1/src/interface/IRaindex import {IERC20Metadata} from "@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol"; import {Float, LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; -import {LibDecimalFloatImplementation} from "rain-math-float-0.1.1/src/lib/implementation/LibDecimalFloatImplementation.sol"; +import { + LibDecimalFloatImplementation +} from "rain-math-float-0.1.1/src/lib/implementation/LibDecimalFloatImplementation.sol"; import {SafeERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol"; /// @title RaindexV6WithdrawTest From 5639577cc8f07c24b2e2136a9cb01698339350e4 Mon Sep 17 00:00:00 2001 From: David Meister Date: Fri, 29 May 2026 15:23:38 +0000 Subject: [PATCH 18/27] Drop submodules/fetch-depth from CI checkouts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit No git submodules remain, so the checkout `submodules: false` is just the default and `fetch-depth: 0` (full history) is no longer needed. Removing both lets checkout do a default shallow clone — faster CI. Co-Authored-By: Claude Opus 4.7 --- .github/workflows/copilot-setup-steps.yml | 3 --- .github/workflows/deploy-subgraph.yaml | 3 --- .github/workflows/git-clean.yaml | 3 --- .github/workflows/manual-rs-release.yml | 3 --- .github/workflows/manual-sol-artifacts.yaml | 3 --- .github/workflows/rainix.yaml | 3 --- .github/workflows/test-subgraph.yml | 3 --- .github/workflows/test-ui-components.yaml | 3 --- .github/workflows/test-webapp.yaml | 3 --- .github/workflows/vercel-docs-preview.yaml | 3 --- .github/workflows/vercel-docs-prod.yaml | 3 --- .github/workflows/vercel-preview.yaml | 3 --- .github/workflows/vercel-prod.yaml | 3 --- 13 files changed, 39 deletions(-) diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml index 79258550cc..3fd5061db4 100644 --- a/.github/workflows/copilot-setup-steps.yml +++ b/.github/workflows/copilot-setup-steps.yml @@ -15,9 +15,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - with: - submodules: false - fetch-depth: 0 - uses: nixbuild/nix-quick-install-action@v30 with: nix_conf: | diff --git a/.github/workflows/deploy-subgraph.yaml b/.github/workflows/deploy-subgraph.yaml index 09ee687d1e..c10c03d10f 100644 --- a/.github/workflows/deploy-subgraph.yaml +++ b/.github/workflows/deploy-subgraph.yaml @@ -12,9 +12,6 @@ jobs: GOLDSKY_SUBGRAPH_NAME: raindex steps: - uses: actions/checkout@v4 - with: - submodules: false - fetch-depth: 0 - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 - uses: nixbuild/nix-quick-install-action@v30 diff --git a/.github/workflows/git-clean.yaml b/.github/workflows/git-clean.yaml index fc00ff0243..b38629e71b 100644 --- a/.github/workflows/git-clean.yaml +++ b/.github/workflows/git-clean.yaml @@ -15,9 +15,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - with: - submodules: false - fetch-depth: 0 - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 - uses: nixbuild/nix-quick-install-action@v30 diff --git a/.github/workflows/manual-rs-release.yml b/.github/workflows/manual-rs-release.yml index 23a8a506a4..99e0a586d8 100644 --- a/.github/workflows/manual-rs-release.yml +++ b/.github/workflows/manual-rs-release.yml @@ -8,9 +8,6 @@ jobs: contents: read steps: - uses: actions/checkout@v4 - with: - fetch-depth: 0 - submodules: false - uses: nixbuild/nix-quick-install-action@v30 with: nix_conf: | diff --git a/.github/workflows/manual-sol-artifacts.yaml b/.github/workflows/manual-sol-artifacts.yaml index 11b380707a..363605960a 100644 --- a/.github/workflows/manual-sol-artifacts.yaml +++ b/.github/workflows/manual-sol-artifacts.yaml @@ -21,9 +21,6 @@ jobs: contents: read steps: - uses: actions/checkout@v4 - with: - submodules: false - fetch-depth: 0 - uses: nixbuild/nix-quick-install-action@v30 with: nix_conf: | diff --git a/.github/workflows/rainix.yaml b/.github/workflows/rainix.yaml index 19ef618a92..fa15946ee4 100644 --- a/.github/workflows/rainix.yaml +++ b/.github/workflows/rainix.yaml @@ -49,9 +49,6 @@ jobs: COMMIT_SHA: ${{ github.sha }} steps: - uses: actions/checkout@v4 - with: - submodules: false - fetch-depth: 0 - name: Free disk space if: matrix.os == 'ubuntu-latest' uses: jlumbroso/free-disk-space@v1.3.1 diff --git a/.github/workflows/test-subgraph.yml b/.github/workflows/test-subgraph.yml index f455c6115e..ef35ecfd6b 100644 --- a/.github/workflows/test-subgraph.yml +++ b/.github/workflows/test-subgraph.yml @@ -16,9 +16,6 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 - with: - fetch-depth: 0 - submodules: false - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 - uses: nixbuild/nix-quick-install-action@v30 diff --git a/.github/workflows/test-ui-components.yaml b/.github/workflows/test-ui-components.yaml index ee772ad32e..296fa79695 100644 --- a/.github/workflows/test-ui-components.yaml +++ b/.github/workflows/test-ui-components.yaml @@ -17,9 +17,6 @@ jobs: COMMIT_SHA: ${{ github.sha }} steps: - uses: actions/checkout@v2 - with: - submodules: false - fetch-depth: 0 - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 - uses: nixbuild/nix-quick-install-action@v30 diff --git a/.github/workflows/test-webapp.yaml b/.github/workflows/test-webapp.yaml index cdb80ebc63..35e4c8b3c1 100644 --- a/.github/workflows/test-webapp.yaml +++ b/.github/workflows/test-webapp.yaml @@ -17,9 +17,6 @@ jobs: COMMIT_SHA: ${{ github.sha }} steps: - uses: actions/checkout@v2 - with: - submodules: false - fetch-depth: 0 - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 - uses: nixbuild/nix-quick-install-action@v30 diff --git a/.github/workflows/vercel-docs-preview.yaml b/.github/workflows/vercel-docs-preview.yaml index 800de1c7ff..ce53233d8c 100644 --- a/.github/workflows/vercel-docs-preview.yaml +++ b/.github/workflows/vercel-docs-preview.yaml @@ -19,9 +19,6 @@ jobs: COMMIT_SHA: ${{ github.sha }} steps: - uses: actions/checkout@v4 - with: - submodules: false - fetch-depth: 0 - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 - uses: DeterminateSystems/nix-installer-action@main diff --git a/.github/workflows/vercel-docs-prod.yaml b/.github/workflows/vercel-docs-prod.yaml index b394703c48..6138c26b47 100644 --- a/.github/workflows/vercel-docs-prod.yaml +++ b/.github/workflows/vercel-docs-prod.yaml @@ -16,9 +16,6 @@ jobs: COMMIT_SHA: ${{ github.sha }} steps: - uses: actions/checkout@v4 - with: - submodules: false - fetch-depth: 0 - uses: DeterminateSystems/nix-installer-action@main with: determinate: true diff --git a/.github/workflows/vercel-preview.yaml b/.github/workflows/vercel-preview.yaml index 62464ebd00..12f6c91ca1 100644 --- a/.github/workflows/vercel-preview.yaml +++ b/.github/workflows/vercel-preview.yaml @@ -33,9 +33,6 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 - with: - submodules: false - fetch-depth: 0 - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 - uses: nixbuild/nix-quick-install-action@v30 diff --git a/.github/workflows/vercel-prod.yaml b/.github/workflows/vercel-prod.yaml index 187da97453..06b20d921f 100644 --- a/.github/workflows/vercel-prod.yaml +++ b/.github/workflows/vercel-prod.yaml @@ -16,9 +16,6 @@ jobs: COMMIT_SHA: ${{ github.sha }} steps: - uses: actions/checkout@v2 - with: - submodules: false - fetch-depth: 0 - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 - uses: nixbuild/nix-quick-install-action@v30 From 64d1f6046ff5e3baa1674f7f5adf5f7fe6a35262 Mon Sep 17 00:00:00 2001 From: David Meister Date: Fri, 29 May 2026 16:20:03 +0000 Subject: [PATCH 19/27] Define sol/rs CI task wrappers; fix reuse compliance rainix dropped its trivial sol/rs task wrappers, so the CI matrix's rainix-sol-test/static/legal and rainix-rs-artifacts were "command not found". Define them in the flake (forge test / slither + forge fmt / reuse lint / cargo build --release) using rainix's sol+rs build inputs, and add them to the devShell. Also declare remappings.txt and soldeer.lock in REUSE.toml (and drop the removed .gitmodules) so `reuse lint` (sol-legal) passes. Co-Authored-By: Claude Opus 4.7 --- REUSE.toml | 69 +++++++++++++++++++++++++++--------------------------- flake.nix | 39 ++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 34 deletions(-) diff --git a/REUSE.toml b/REUSE.toml index aa0a18e581..26c9ef9596 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -2,40 +2,41 @@ version = 1 [[annotations]] path = [ - ".envrc", - ".gas-snapshot", - ".github/**/", - ".gitignore", - ".gitmodules", - ".vscode/**/", - ".cargo/**/", - "README.md", - "AGENTS.md", - "CLAUDE.md", - "flake.lock", - "flake.nix", - "foundry.toml", - "foundry.lock", - "slither.config.json", - "typeshare.toml", - "REUSE.toml", - "pointers.sh", - "package.json", - "package-lock.json", - "Cargo.lock", - "Cargo.toml", - ".devcontainer.json", - ".env.example", - "prep-all.sh", - "packages/**/", - "ai_commands/**/", - "subgraph/**/", - "crates/**/", - "test-resources/**/", - "prep-base.sh", - "prep-webapp.sh", - "audit/**/", - ".coderabbit.yaml", + ".envrc", + ".gas-snapshot", + ".github/**/", + ".gitignore", + ".vscode/**/", + ".cargo/**/", + "README.md", + "AGENTS.md", + "CLAUDE.md", + "flake.lock", + "flake.nix", + "foundry.toml", + "foundry.lock", + "remappings.txt", + "soldeer.lock", + "slither.config.json", + "typeshare.toml", + "REUSE.toml", + "pointers.sh", + "package.json", + "package-lock.json", + "Cargo.lock", + "Cargo.toml", + ".devcontainer.json", + ".env.example", + "prep-all.sh", + "packages/**/", + "ai_commands/**/", + "subgraph/**/", + "crates/**/", + "test-resources/**/", + "prep-base.sh", + "prep-webapp.sh", + "audit/**/", + ".coderabbit.yaml", ] SPDX-FileCopyrightText = "Copyright (c) 2020 Rain Open Source Software Ltd" SPDX-License-Identifier = "LicenseRef-DCL-1.0" diff --git a/flake.nix b/flake.nix index 0aafbe2eb8..be185d0a44 100644 --- a/flake.nix +++ b/flake.nix @@ -160,6 +160,41 @@ ''; }; + # rainix dropped its trivial sol/rs task wrappers, so define the ones + # our CI matrix runs here (tools come from rainix's sol/rs build inputs). + rainix-sol-test = rainix.mkTask.${system} { + name = "rainix-sol-test"; + body = '' + set -euxo pipefail + forge test -vvv + ''; + }; + + rainix-sol-static = rainix.mkTask.${system} { + name = "rainix-sol-static"; + body = '' + set -euxo pipefail + slither . + forge fmt --check + ''; + }; + + rainix-sol-legal = rainix.mkTask.${system} { + name = "rainix-sol-legal"; + body = '' + set -euxo pipefail + reuse lint + ''; + }; + + rainix-rs-artifacts = rainix.mkTask.${system} { + name = "rainix-rs-artifacts"; + body = '' + set -euxo pipefail + cargo build --release + ''; + }; + } // rainix.packages.${system}; @@ -173,6 +208,10 @@ packages.js-install packages.build-js-bindings packages.test-js-bindings + packages.rainix-sol-test + packages.rainix-sol-static + packages.rainix-sol-legal + packages.rainix-rs-artifacts rain.defaultPackage.${system} packages.raindex-ui-components-prelude packages.raindex-cli-artifact From 452f7eb08f6a3c4a3bc49bd933f0db319c379a96 Mon Sep 17 00:00:00 2001 From: David Meister Date: Fri, 29 May 2026 16:56:13 +0000 Subject: [PATCH 20/27] Use rainix reusable workflows for sol + artifact checks Replace the locally-defined sol/rs task wrappers with rainix's reusable workflows: - solidity job -> rainix-sol.yaml (static + legal + test). raindex's fork tests read foundry.toml rpc_endpoints, so repoint those at rainix's *_RPC_URL env names and map our CI_DEPLOY_* secrets onto rainix's RPC_URL_*_FORK inputs. - copy-artifacts job -> rainix-copy-artifacts.yaml asserts the committed generated artifacts stay fresh, replacing the in-line pointers.sh regen. Commit the generated subparser meta (un-gitignore meta/) alongside the already-committed pointers; this lets the reusables build/test without a prelude (a test reads meta/RaindexV6SubParser.rain.meta). Keep rust/wasm/js on raindex's own devshell matrix (they need sqlite3 and forge-build artifacts the slim rainix rs reusables don't provide); inline rs-artifacts as `cargo build --release`. Drop the flake task wrappers. Co-Authored-By: Claude Opus 4.7 --- .github/workflows/rainix.yaml | 41 +++++++++++------- .gitignore | 1 - flake.nix | 39 ----------------- foundry.toml | 10 ++--- meta/RaindexV6SubParser.rain.meta | Bin 0 -> 1350 bytes .../RaindexV6SubParserAuthoringMeta.rain.meta | Bin 0 -> 7200 bytes 6 files changed, 30 insertions(+), 61 deletions(-) create mode 100644 meta/RaindexV6SubParser.rain.meta create mode 100644 meta/RaindexV6SubParserAuthoringMeta.rain.meta diff --git a/.github/workflows/rainix.yaml b/.github/workflows/rainix.yaml index fa15946ee4..b7a68c70b6 100644 --- a/.github/workflows/rainix.yaml +++ b/.github/workflows/rainix.yaml @@ -8,6 +8,30 @@ concurrency: group: ${{ github.ref }}-rainix cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} jobs: + # Solidity static analysis, license check, and tests via rainix's reusable + # workflows. raindex's fork tests read foundry.toml rpc_endpoints, which now + # point at rainix's *_RPC_URL env names, so map our CI_DEPLOY_* secrets onto + # rainix's RPC_URL_*_FORK inputs. + solidity: + uses: rainlanguage/rainix/.github/workflows/rainix-sol.yaml@main + secrets: + PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }} + EXPLORER_VERIFICATION_KEY: ${{ secrets.EXPLORER_VERIFICATION_KEY }} + CI_DEPLOY_SEPOLIA_RPC_URL: ${{ secrets.CI_DEPLOY_SEPOLIA_RPC_URL }} + RPC_URL_ARBITRUM_FORK: ${{ secrets.CI_DEPLOY_ARBITRUM_RPC_URL }} + RPC_URL_BASE_FORK: ${{ secrets.CI_DEPLOY_BASE_RPC_URL }} + RPC_URL_BASE_SEPOLIA_FORK: ${{ secrets.CI_DEPLOY_BASE_SEPOLIA_RPC_URL }} + RPC_URL_FLARE_FORK: ${{ secrets.CI_DEPLOY_FLARE_RPC_URL }} + RPC_URL_POLYGON_FORK: ${{ secrets.CI_DEPLOY_POLYGON_RPC_URL }} + # Assert the committed generated artifacts (src/generated pointers + meta) + # still match a clean rebuild. + copy-artifacts: + uses: rainlanguage/rainix/.github/workflows/rainix-copy-artifacts.yaml@main + secrets: + CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }} + # Rust / wasm / JS bindings run on raindex's own devshell: they need sqlite3 + # (rusqlite) and the forge-build artifacts, which the slim rainix rs reusables + # don't provide. standard-tests: permissions: id-token: write @@ -15,15 +39,10 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest] - task: [raindex-rs-test, rainix-rs-artifacts] + task: [raindex-rs-test, "cargo build --release"] is-not-main: - ${{ github.ref != 'refs/heads/main' }} include: - # Solidity doesn't need to be tested on multiple platforms - - os: ubuntu-latest - task: rainix-sol-test - - os: ubuntu-latest - task: rainix-sol-static # We don't need to do rust static analysis on multiple platforms - os: ubuntu-latest task: rainix-rs-static @@ -37,9 +56,6 @@ jobs: # Testing JS/TS bindings doesnt need to run on multiple platforms - os: ubuntu-latest task: test-js-bindings - # Legal doesnt need to run on multiple platforms - - os: ubuntu-latest - task: rainix-sol-legal exclude: - is-not-main: true os: macos-latest @@ -71,13 +87,6 @@ jobs: gc-max-store-size-linux: 10G - run: ./pointers.sh - name: Run ${{ matrix.task }} - env: - ETH_RPC_URL: ${{ secrets.CI_DEPLOY_BASE_RPC_URL || vars.CI_DEPLOY_BASE_RPC_URL || '' }} - CI_DEPLOY_ARBITRUM_RPC_URL: ${{ secrets.CI_DEPLOY_ARBITRUM_RPC_URL || vars.CI_DEPLOY_ARBITRUM_RPC_URL || '' }} - CI_DEPLOY_BASE_RPC_URL: ${{ secrets.CI_DEPLOY_BASE_RPC_URL || vars.CI_DEPLOY_BASE_RPC_URL || '' }} - CI_DEPLOY_BASE_SEPOLIA_RPC_URL: ${{ secrets.CI_DEPLOY_BASE_SEPOLIA_RPC_URL || vars.CI_DEPLOY_BASE_SEPOLIA_RPC_URL || '' }} - CI_DEPLOY_FLARE_RPC_URL: ${{ secrets.CI_DEPLOY_FLARE_RPC_URL || vars.CI_DEPLOY_FLARE_RPC_URL || '' }} - CI_DEPLOY_POLYGON_RPC_URL: ${{ secrets.CI_DEPLOY_POLYGON_RPC_URL || vars.CI_DEPLOY_POLYGON_RPC_URL || '' }} run: nix develop -c ${{ matrix.task }} # forwards status to telegram chat if this ci fails or gets canceled, only runs for default branch - name: Forward CI Status diff --git a/.gitignore b/.gitignore index 1322af041b..1772bbdc6a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ out cache result -meta target .DS_Store .env diff --git a/flake.nix b/flake.nix index be185d0a44..0aafbe2eb8 100644 --- a/flake.nix +++ b/flake.nix @@ -160,41 +160,6 @@ ''; }; - # rainix dropped its trivial sol/rs task wrappers, so define the ones - # our CI matrix runs here (tools come from rainix's sol/rs build inputs). - rainix-sol-test = rainix.mkTask.${system} { - name = "rainix-sol-test"; - body = '' - set -euxo pipefail - forge test -vvv - ''; - }; - - rainix-sol-static = rainix.mkTask.${system} { - name = "rainix-sol-static"; - body = '' - set -euxo pipefail - slither . - forge fmt --check - ''; - }; - - rainix-sol-legal = rainix.mkTask.${system} { - name = "rainix-sol-legal"; - body = '' - set -euxo pipefail - reuse lint - ''; - }; - - rainix-rs-artifacts = rainix.mkTask.${system} { - name = "rainix-rs-artifacts"; - body = '' - set -euxo pipefail - cargo build --release - ''; - }; - } // rainix.packages.${system}; @@ -208,10 +173,6 @@ packages.js-install packages.build-js-bindings packages.test-js-bindings - packages.rainix-sol-test - packages.rainix-sol-static - packages.rainix-sol-legal - packages.rainix-rs-artifacts rain.defaultPackage.${system} packages.raindex-ui-components-prelude packages.raindex-cli-artifact diff --git a/foundry.toml b/foundry.toml index b622d6ad28..10cf0a8e48 100644 --- a/foundry.toml +++ b/foundry.toml @@ -70,11 +70,11 @@ recursive_deps = false runs = 5096 [rpc_endpoints] -arbitrum = "${CI_DEPLOY_ARBITRUM_RPC_URL}" -base = "${CI_DEPLOY_BASE_RPC_URL}" -base_sepolia = "${CI_DEPLOY_BASE_SEPOLIA_RPC_URL}" -flare = "${CI_DEPLOY_FLARE_RPC_URL}" -polygon = "${CI_DEPLOY_POLYGON_RPC_URL}" +arbitrum = "${ARBITRUM_RPC_URL}" +base = "${BASE_RPC_URL}" +base_sepolia = "${BASE_SEPOLIA_RPC_URL}" +flare = "${FLARE_RPC_URL}" +polygon = "${POLYGON_RPC_URL}" [etherscan] arbitrum = { key = "${CI_DEPLOY_ARBITRUM_ETHERSCAN_API_KEY}" } diff --git a/meta/RaindexV6SubParser.rain.meta b/meta/RaindexV6SubParser.rain.meta new file mode 100644 index 0000000000000000000000000000000000000000..a7713a5508ebe2219fbd7a7d61d3c25999c20c77 GIT binary patch literal 1350 zcmV-M1-bhF3W>&a?s#;h09geTc$~GEOOM+&5XW5z z&1hywY7+jTi2hkve)TG>zjhkYufzK5mtp;lNkos>e>0-Lg(CV@SbzI0tlx>)zjGbd z@192V$n)=9hV^$*M32~i?=-BxAJIQJ3+o?FBKotielN2Az3Z_4(Pdcw7)A7}u>Q$e zSpReq(VuaV5iw13f&~$i!N1e6{L0-Wr9fkf2@!!=LJ=YWJXc~ zGl^40IkPf6lHyWQwluo6r#K>8l9q}jXtshWzdZf}&54x?B2_nfdL7Np} z2s8IEOrH~D51+$$Mg>V#4s+)vET@dECr@Wx_7Ghl45L(J$PGyAoUymzb_t2_5>qA> zA~;(}$+sOz(?_4UgBk49!1m<0V! z^W0~yizj5c(21+Fkm$%V-t}l3AjNrF<`_zITHx)Jmug+AlsZCSfOnPClhgcpj4-VRlDjPniN zNwnsYD%}ty*Tr6xQpZSFkUo3y+G-xbN06f>vF&9+8P0ut?X2t4CyNy87<;bIZulW8| ztAA1zm|e8_X9nkCI1X=>c0s=gxFWTmD6mRbM7pDQUKZwk?Ys&1`kDsOQqb(sK53^; z-PEJ||Icqt6nHUf!7r$8_w!vXi`?z}fxRhU29LmHd0zPflQG+I25mjmT>%i-KJTBD=I+@8g`+xc;sfG4FfR*!{rs$mPYQf5g$yh!zMPl*k zx*u0dR@YEB;=ezbR+lvR#%^FSzOOp?>gRQTMRpkNOS0!1xk1GEzHjaiwTdee1(xv@WX^-?##a@eQhv3eq2*+I&L`B*yokPknd>oVW9Ek8fy! z#Q465)JF)d$)~V@bIa6zJ~V>XV`6V|17~Dq IW^7?}WiP|D8UO$Q literal 0 HcmV?d00001 diff --git a/meta/RaindexV6SubParserAuthoringMeta.rain.meta b/meta/RaindexV6SubParserAuthoringMeta.rain.meta new file mode 100644 index 0000000000000000000000000000000000000000..0a8760fa97f3da7cadf5c32c7ca89f6ff0705f8c GIT binary patch literal 7200 zcmcIoO^@6(7!E>ER8T=c3-kcKRYE&czS;vIluBGU&`Pip;1(Wu1LJEKeEmwW6uP-hgHVU8~b@5zaMszB=|>yXp(#!#$UY((<8P4&ejUc|q!B#w{@a(~_unBA{5p)k zn}+fCBKZ4f;rH)`;pFa%u))1Ff?tR64=%&_ha`euh4GKh!ub6#oZNpQWX|LyD;Skb zMyvxt=~d9h#5uIiau$mpRc3phwy{J>OcGC2B$!lvlMPjAlzBz-Kx2 zq_K|@Y;v~g1BZ>I5wovReLsUkeLvoYh1fG1TfZ7wADwl2 z`74`^oRVL7QMkypdP0;-3|!c5$xzu!kbzhGEHheUO+g_wCneoXM59)X>YMEwiTU?C z`Uey9vMGs~+s6)iEjTPsb7D1m9b6VYqbp=MQX3k10R8R#+>Ac6A> zYD^6Qc)e=a7HLQ&f1>(F@2|3A@xJ*#twS0FI>v7 zhqA^vI0rtPI@DB9-CVBqv;z$Fs{eyvJ1S^`6Yazfa?sD1eqW+~JN3=i1pUU~xu8t} z6$Q2J?ytvhlCzALw5ShaW{hI|zCwO(UZ?vp1Pwn;f5P)4m>tIN3G(~l`z|vhmQE&K zWunx54HFD{8l;YmsT|}~qN`?~pU>ZU$ZMRi*^VJ# zDk0PW+fE1tcSr+HeDUZp1W3`a0cU*vAckbLW)V(4occcop8wYI!RK=*%jg2fA{O+B z&f#FAjSg|hoQ%L}TCC}|CM!{Mg$1D&c+4pqIG@0o2{H)JUP8}n^mC#*1qE3!b6lA7 ziWWAbtkw8>VQT*90uj^q5$d~BA8ea3Eu&i?4CIG_&u>J5i1B-@_utkX7r@65wEV^v zh#0@`kl#&xu*|#y0V4~sQy`#)C^DC#1R*>8jxPW)e$SAf3)OC0`+o{Rhd&hZBMU%` z|37;FWBK2a{iPHDxPZZ}E5jQYZk(wv=6K-LeL01o=8KU>_XPi9`u>Lc+Wcp=OE9x& z_h%00VYoAH6xK2<#BeL?zfn?^En!%JNhXS>)b)Bx^o-aMHDZ6+3CTk8;mZp+U`!|0 z6kR&%FO69L@iXe%`i3X}l@u2o%l&L?wi&+wxZC+drEdzff>+?O46VWX0>-r3iV64syT`Ezqu*9*u8K&+V+JR|39 z>lNUf>6Rr%e49XNV)_i-kJ}}|EprXEBf89iTe@>tjusl*z+(J9_u|(@uW4M4oB51k zX|P_LIesG>M2z1z$nT~bV75Q>8iVEFMP1VV zb@}Pq+hPYiq!F73sNWzzQ|3d|^wevvmbs+sai2e;`SI;Q{M{_sCWssAXNW^aCP+-b zL-WJY*ty*&i329%5+ug&sQhqTDtCB-9d=`u-?0f2^Z)<= literal 0 HcmV?d00001 From 016562a63f0ae8b965db9504cbb3a7e5633b6f71 Mon Sep 17 00:00:00 2001 From: David Meister Date: Fri, 29 May 2026 17:17:51 +0000 Subject: [PATCH 21/27] Split sol + copy-artifacts into rainlang-style reusable callers Match rainlang's CI layout: separate thin workflow files that each call a rainix reusable with `secrets: inherit`, instead of bundling them as jobs in rainix.yaml. - rainix-sol.yaml -> rainix-sol.yaml reusable (static + legal + test) - copy-artifacts.yaml -> rainix-copy-artifacts.yaml reusable rainix.yaml now only carries the rust/wasm/js matrix that needs raindex's own devshell (sqlite3 + forge artifacts). Co-Authored-By: Claude Opus 4.7 --- .github/workflows/copy-artifacts.yaml | 9 +++++++++ .github/workflows/rainix-sol.yaml | 6 ++++++ .github/workflows/rainix.yaml | 24 ++---------------------- 3 files changed, 17 insertions(+), 22 deletions(-) create mode 100644 .github/workflows/copy-artifacts.yaml create mode 100644 .github/workflows/rainix-sol.yaml diff --git a/.github/workflows/copy-artifacts.yaml b/.github/workflows/copy-artifacts.yaml new file mode 100644 index 0000000000..9c5fcbf43f --- /dev/null +++ b/.github/workflows/copy-artifacts.yaml @@ -0,0 +1,9 @@ +name: copy-artifacts +on: [push] +jobs: + copy-artifacts: + # Build from committed sources and assert the committed meta/pointer + # artifacts are still current (no prelude — committing the artifacts is what + # removes the need for one). secrets: inherit carries CACHIX_AUTH_TOKEN. + uses: rainlanguage/rainix/.github/workflows/rainix-copy-artifacts.yaml@main + secrets: inherit diff --git a/.github/workflows/rainix-sol.yaml b/.github/workflows/rainix-sol.yaml new file mode 100644 index 0000000000..827ab3067f --- /dev/null +++ b/.github/workflows/rainix-sol.yaml @@ -0,0 +1,6 @@ +name: rainix-sol +on: [push] +jobs: + rainix-sol: + uses: rainlanguage/rainix/.github/workflows/rainix-sol.yaml@main + secrets: inherit diff --git a/.github/workflows/rainix.yaml b/.github/workflows/rainix.yaml index b7a68c70b6..3234670a1f 100644 --- a/.github/workflows/rainix.yaml +++ b/.github/workflows/rainix.yaml @@ -8,30 +8,10 @@ concurrency: group: ${{ github.ref }}-rainix cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} jobs: - # Solidity static analysis, license check, and tests via rainix's reusable - # workflows. raindex's fork tests read foundry.toml rpc_endpoints, which now - # point at rainix's *_RPC_URL env names, so map our CI_DEPLOY_* secrets onto - # rainix's RPC_URL_*_FORK inputs. - solidity: - uses: rainlanguage/rainix/.github/workflows/rainix-sol.yaml@main - secrets: - PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }} - EXPLORER_VERIFICATION_KEY: ${{ secrets.EXPLORER_VERIFICATION_KEY }} - CI_DEPLOY_SEPOLIA_RPC_URL: ${{ secrets.CI_DEPLOY_SEPOLIA_RPC_URL }} - RPC_URL_ARBITRUM_FORK: ${{ secrets.CI_DEPLOY_ARBITRUM_RPC_URL }} - RPC_URL_BASE_FORK: ${{ secrets.CI_DEPLOY_BASE_RPC_URL }} - RPC_URL_BASE_SEPOLIA_FORK: ${{ secrets.CI_DEPLOY_BASE_SEPOLIA_RPC_URL }} - RPC_URL_FLARE_FORK: ${{ secrets.CI_DEPLOY_FLARE_RPC_URL }} - RPC_URL_POLYGON_FORK: ${{ secrets.CI_DEPLOY_POLYGON_RPC_URL }} - # Assert the committed generated artifacts (src/generated pointers + meta) - # still match a clean rebuild. - copy-artifacts: - uses: rainlanguage/rainix/.github/workflows/rainix-copy-artifacts.yaml@main - secrets: - CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }} # Rust / wasm / JS bindings run on raindex's own devshell: they need sqlite3 # (rusqlite) and the forge-build artifacts, which the slim rainix rs reusables - # don't provide. + # don't provide. Solidity + artifact checks live in rainix-sol.yaml and + # copy-artifacts.yaml (rainix reusables). standard-tests: permissions: id-token: write From 4950580f8b1708643adaf08952044274c7ed8bb6 Mon Sep 17 00:00:00 2001 From: David Meister Date: Fri, 29 May 2026 17:40:56 +0000 Subject: [PATCH 22/27] Fix JS/subgraph CI broken by submodule removal - flake.nix: raindex-ui-components-prelude pulled nixpkgs' wasm-bindgen-cli (0.2.117), shadowing rainix's 0.2.122 on the devshell PATH; the rain crates force the wasm-bindgen crate to 0.2.122, so the npm raindex package's wasm-bindgen step failed with a schema mismatch (webapp + ui-components builds). Drop the redundant pkgs.wasm-bindgen-cli; rainix.rust-build-inputs already provides the matching 0.2.122. - test-subgraph.yml: drop the obsolete `cd lib/rain.interpreter/.../ rain.math.float && rainix-sol-prelude` step (that nested submodule is gone; subgraph-build does its own forge build via soldeer). Co-Authored-By: Claude Opus 4.7 --- .github/workflows/test-subgraph.yml | 2 -- flake.nix | 1 - 2 files changed, 3 deletions(-) diff --git a/.github/workflows/test-subgraph.yml b/.github/workflows/test-subgraph.yml index ef35ecfd6b..f77fe7dc36 100644 --- a/.github/workflows/test-subgraph.yml +++ b/.github/workflows/test-subgraph.yml @@ -34,8 +34,6 @@ jobs: # before trying to save a new cache # 1G = 1073741824 gc-max-store-size-linux: 1G - - run: | - (cd lib/rain.interpreter/lib/rain.interpreter.interface/lib/rain.math.float && nix develop -c rainix-sol-prelude) - name: Build subgraph run: nix develop -c subgraph-build - name: Matchstick tests diff --git a/flake.nix b/flake.nix index 0aafbe2eb8..1c231305b6 100644 --- a/flake.nix +++ b/flake.nix @@ -57,7 +57,6 @@ cd packages/ui-components && npm i && npm run lint ''; additionalBuildInputs = [ - pkgs.wasm-bindgen-cli rainix.rust-toolchain.${system} rainix.rust-build-inputs.${system} ]; From 028cf36031a68f7f86d7ffe8fb6f56b062060268 Mon Sep 17 00:00:00 2001 From: David Meister Date: Fri, 29 May 2026 17:58:15 +0000 Subject: [PATCH 23/27] Fix sol legal + address-config for the new deterministic address - REUSE.toml: declare meta/**/ (committed binary subparser .rain.meta artifacts have no inline SPDX) so reuse lint (sol-legal) passes. - subgraph networks.json + subgraph.yaml: optimizer_runs=800 moved RaindexV6's deterministic Zoltu address to 0xa560e58C...; point the subgraph configs at it (matches the regenerated pointers / deploy lib). testProdDeploy* still fork live networks and check on-chain code at the new address, so they require deploying the new bytecode (manual-sol-artifacts). Co-Authored-By: Claude Opus 4.7 --- REUSE.toml | 1 + subgraph/networks.json | 46 +++++++++++++++++++++--------------------- subgraph/subgraph.yaml | 2 +- 3 files changed, 25 insertions(+), 24 deletions(-) diff --git a/REUSE.toml b/REUSE.toml index 26c9ef9596..4eea063e00 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -32,6 +32,7 @@ path = [ "ai_commands/**/", "subgraph/**/", "crates/**/", + "meta/**/", "test-resources/**/", "prep-base.sh", "prep-webapp.sh", diff --git a/subgraph/networks.json b/subgraph/networks.json index c25a418572..8d81283806 100644 --- a/subgraph/networks.json +++ b/subgraph/networks.json @@ -1,26 +1,26 @@ { - "arbitrum-one": { - "Raindex": { - "address": "0x7242ce1ffe34297921c54cD7f9343c411E1E7759", - "startBlock": 441612693 - } - }, - "matic": { - "Raindex": { - "address": "0x7242ce1ffe34297921c54cD7f9343c411E1E7759", - "startBlock": 84174550 - } - }, - "base": { - "Raindex": { - "address": "0x7242ce1ffe34297921c54cD7f9343c411E1E7759", - "startBlock": 43339885 - } - }, - "flare": { - "Raindex": { - "address": "0x7242ce1ffe34297921c54cD7f9343c411E1E7759", - "startBlock": 56972130 - } + "arbitrum-one": { + "Raindex": { + "address": "0xa560e58C77B8A841f80B4741Ad08E9260Edcab9F", + "startBlock": 441612693 } + }, + "matic": { + "Raindex": { + "address": "0xa560e58C77B8A841f80B4741Ad08E9260Edcab9F", + "startBlock": 84174550 + } + }, + "base": { + "Raindex": { + "address": "0xa560e58C77B8A841f80B4741Ad08E9260Edcab9F", + "startBlock": 43339885 + } + }, + "flare": { + "Raindex": { + "address": "0xa560e58C77B8A841f80B4741Ad08E9260Edcab9F", + "startBlock": 56972130 + } + } } diff --git a/subgraph/subgraph.yaml b/subgraph/subgraph.yaml index 89011e90ac..ebcf930c56 100644 --- a/subgraph/subgraph.yaml +++ b/subgraph/subgraph.yaml @@ -6,7 +6,7 @@ dataSources: name: Raindex network: sepolia source: - address: "0x7242ce1ffe34297921c54cD7f9343c411E1E7759" + address: "0xa560e58C77B8A841f80B4741Ad08E9260Edcab9F" abi: Raindex startBlock: 0 mapping: From ba7bcf6fa532826857fde65508828e76a9ac8e20 Mon Sep 17 00:00:00 2001 From: David Meister Date: Fri, 29 May 2026 18:18:21 +0000 Subject: [PATCH 24/27] Drop codegen preludes; deploy + tests use committed artifacts rainix dropped the trivial rainix-sol-prelude / rainix-rs-prelude wrappers, which the deploy workflow still invoked. Since the meta and pointer artifacts are now committed (and copy-artifacts.yaml enforces their freshness), no codegen prelude is needed: the deploy and standard-tests just soldeer-install + forge-build against the committed artifacts. Co-Authored-By: Claude Opus 4.7 --- .github/workflows/manual-sol-artifacts.yaml | 5 ++--- pointers.sh | 4 ---- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/.github/workflows/manual-sol-artifacts.yaml b/.github/workflows/manual-sol-artifacts.yaml index 363605960a..68c74cc573 100644 --- a/.github/workflows/manual-sol-artifacts.yaml +++ b/.github/workflows/manual-sol-artifacts.yaml @@ -37,9 +37,8 @@ jobs: # before trying to save a new cache # 1G = 1073741824 gc-max-store-size-linux: 1G - - run: nix develop -c rainix-sol-prelude - - run: nix develop -c rainix-rs-prelude - - run: nix develop -c raindex-prelude + - run: nix develop -c forge soldeer install + - run: nix develop -c forge build - name: deploy to all supported networks run: nix develop -c rainix-sol-artifacts env: diff --git a/pointers.sh b/pointers.sh index df02b48358..2642f70a2c 100755 --- a/pointers.sh +++ b/pointers.sh @@ -4,7 +4,3 @@ set -euxo pipefail nix develop -c forge soldeer install nix develop -c forge build - -nix develop -c raindex-prelude - -nix develop -c forge script script/BuildPointers.sol From 11d8b462b55a111dbb8bafc13427cdb1b10a306b Mon Sep 17 00:00:00 2001 From: David Meister Date: Fri, 29 May 2026 18:46:20 +0000 Subject: [PATCH 25/27] Deploy via rainix-manual-sol-artifacts reusable Match rainlang: the deploy workflow is now a thin workflow_dispatch wrapper over rainlanguage/rainix's rainix-manual-sol-artifacts.yaml with secrets: inherit. The reusable maps RPC_URL_*_FORK secrets to the ARBITRUM_RPC_URL/BASE_RPC_URL/... names foundry.toml resolves, fixing the "environment variable ARBITRUM_RPC_URL not found" deploy failure, and deploys from committed artifacts with no codegen prelude. Co-Authored-By: Claude Opus 4.7 --- .github/workflows/manual-sol-artifacts.yaml | 53 ++------------------- 1 file changed, 4 insertions(+), 49 deletions(-) diff --git a/.github/workflows/manual-sol-artifacts.yaml b/.github/workflows/manual-sol-artifacts.yaml index 68c74cc573..5259a91089 100644 --- a/.github/workflows/manual-sol-artifacts.yaml +++ b/.github/workflows/manual-sol-artifacts.yaml @@ -15,52 +15,7 @@ on: - arb-generic-pool-flash-borrower jobs: deploy: - runs-on: ubuntu-latest - permissions: - id-token: write - contents: read - steps: - - uses: actions/checkout@v4 - - uses: nixbuild/nix-quick-install-action@v30 - with: - nix_conf: | - keep-env-derivations = true - keep-outputs = true - - name: Restore and save Nix store - uses: nix-community/cache-nix-action@v6 - with: - # restore and save a cache using this key - primary-key: nix-${{ runner.os }}-${{ hashFiles('**/*.nix', '**/flake.lock') }} - # if there's no cache hit, restore a cache by this prefix - restore-prefixes-first-match: nix-${{ runner.os }}- - # collect garbage until the Nix store size (in bytes) is at most this number - # before trying to save a new cache - # 1G = 1073741824 - gc-max-store-size-linux: 1G - - run: nix develop -c forge soldeer install - - run: nix develop -c forge build - - name: deploy to all supported networks - run: nix develop -c rainix-sol-artifacts - env: - DEPLOYMENT_SUITE: ${{ inputs.suite }} - DEPLOY_BROADCAST: "1" - DEPLOYMENT_KEY: ${{ secrets.PRIVATE_KEY }} - ETH_RPC_URL: ${{ secrets.CI_DEPLOY_BASE_RPC_URL || vars.CI_DEPLOY_BASE_RPC_URL || '' }} - CI_DEPLOY_ARBITRUM_RPC_URL: ${{ secrets.CI_DEPLOY_ARBITRUM_RPC_URL || vars.CI_DEPLOY_ARBITRUM_RPC_URL || '' }} - CI_DEPLOY_BASE_RPC_URL: ${{ secrets.CI_DEPLOY_BASE_RPC_URL || vars.CI_DEPLOY_BASE_RPC_URL || '' }} - CI_DEPLOY_BASE_SEPOLIA_RPC_URL: ${{ secrets.CI_DEPLOY_BASE_SEPOLIA_RPC_URL || vars.CI_DEPLOY_BASE_SEPOLIA_RPC_URL || '' }} - CI_DEPLOY_FLARE_RPC_URL: ${{ secrets.CI_DEPLOY_FLARE_RPC_URL || vars.CI_DEPLOY_FLARE_RPC_URL || '' }} - CI_DEPLOY_POLYGON_RPC_URL: ${{ secrets.CI_DEPLOY_POLYGON_RPC_URL || vars.CI_DEPLOY_POLYGON_RPC_URL || '' }} - CI_DEPLOY_ARBITRUM_ETHERSCAN_API_KEY: ${{ secrets.CI_DEPLOY_ARBITRUM_ETHERSCAN_API_KEY || vars.CI_DEPLOY_ARBITRUM_ETHERSCAN_API_KEY || '' }} - CI_DEPLOY_BASE_ETHERSCAN_API_KEY: ${{ secrets.CI_DEPLOY_BASE_ETHERSCAN_API_KEY || vars.CI_DEPLOY_BASE_ETHERSCAN_API_KEY || '' }} - CI_DEPLOY_BASE_SEPOLIA_ETHERSCAN_API_KEY: ${{ secrets.CI_DEPLOY_BASE_SEPOLIA_ETHERSCAN_API_KEY || vars.CI_DEPLOY_BASE_SEPOLIA_ETHERSCAN_API_KEY || '' }} - CI_DEPLOY_FLARE_ETHERSCAN_API_KEY: ${{ secrets.CI_DEPLOY_FLARE_ETHERSCAN_API_KEY || vars.CI_DEPLOY_FLARE_ETHERSCAN_API_KEY || '' }} - CI_DEPLOY_POLYGON_ETHERSCAN_API_KEY: ${{ secrets.CI_DEPLOY_POLYGON_ETHERSCAN_API_KEY || vars.CI_DEPLOY_POLYGON_ETHERSCAN_API_KEY || '' }} - # forwards status to telegram chat if this ci fails or gets canceled, only runs for default branch - - name: Forward CI Status - if: always() - uses: rainlanguage/github-chore/.github/actions/telegram-status-report@main - with: - status: ${{ job.status }} - telegram-bot-token: ${{ secrets.TELEGRAM_BOT_TOKEN }} - telegram-chat-id: ${{ secrets.TELEGRAM_CHAT_ID }} + uses: rainlanguage/rainix/.github/workflows/rainix-manual-sol-artifacts.yaml@main + with: + suite: ${{ inputs.suite }} + secrets: inherit From 8af265bea8f27fa144e86216c631f84c5684b745 Mon Sep 17 00:00:00 2001 From: David Meister Date: Fri, 29 May 2026 19:33:23 +0000 Subject: [PATCH 26/27] Fix JS/subgraph CI and set new RaindexV6 deploy start blocks - buildPackage.js: refresh the wasm-bindgen string-replace anchors for 0.2.122. node now loads `wasmBytes` via a `${__dirname}` template, web emits `export { initSync, __wbg_init as default };` on one line, and initSync prefers `{ module }`. The stale anchors silently no-opped, so the wasm was never inlined (js-bindings ENOENT) nor initialized (webapp `__wbindgen_export2` undefined). - builder.test.ts: the U256 parser (ruint) now says "invalid digit: t" rather than "digit 29 is out of range for base 10". - ui-components: 0.2.122 generates `[Symbol.dispose]` on wasm classes, so the DotrainRegistry mock must include it. - test-subgraph.yml: run `forge soldeer install` before subgraph-build; without it the migrated `dependencies/` dir is empty and forge build cannot resolve imports. - LibRaindexDeploy.sol + subgraph/networks.json: update RAINDEX_START_BLOCK_* and subgraph startBlocks to the redeployed RaindexV6 blocks (arbitrum 467989192, base 46645657, flare 61847874, polygon 87623401). Co-Authored-By: Claude Opus 4.7 --- .github/workflows/test-subgraph.yml | 2 + packages/raindex/scripts/buildPackage.js | 215 +++++++++--------- packages/raindex/test/js_api/builder.test.ts | 4 +- .../__tests__/DotrainRegistryProvider.test.ts | 1 + src/lib/deploy/LibRaindexDeploy.sol | 8 +- subgraph/networks.json | 8 +- 6 files changed, 123 insertions(+), 115 deletions(-) diff --git a/.github/workflows/test-subgraph.yml b/.github/workflows/test-subgraph.yml index f77fe7dc36..c832d090c4 100644 --- a/.github/workflows/test-subgraph.yml +++ b/.github/workflows/test-subgraph.yml @@ -34,6 +34,8 @@ jobs: # before trying to save a new cache # 1G = 1073741824 gc-max-store-size-linux: 1G + - name: Install Soldeer dependencies + run: nix develop -c forge soldeer install - name: Build subgraph run: nix develop -c subgraph-build - name: Matchstick tests diff --git a/packages/raindex/scripts/buildPackage.js b/packages/raindex/scripts/buildPackage.js index 7ba3821985..f161b75f9f 100644 --- a/packages/raindex/scripts/buildPackage.js +++ b/packages/raindex/scripts/buildPackage.js @@ -1,130 +1,135 @@ -const fs = require('fs'); -const { execSync } = require('child_process'); +const fs = require("fs"); +const { execSync } = require("child_process"); -const packagePrefix = 'raindex_'; +const packagePrefix = "raindex_"; // after using opt-level on wasm build, WasmEncodedResult and WasmEncodedError // are duplicated in the dts so we need to dedupe them const dups = [ - "\nexport type WasmEncodedResult = { value: T; error: undefined } | { value: undefined; error: WasmEncodedError };\n", - `\nexport interface WasmEncodedError { + "\nexport type WasmEncodedResult = { value: T; error: undefined } | { value: undefined; error: WasmEncodedError };\n", + `\nexport interface WasmEncodedError { msg: string; readableMsg: string; -}\n` +}\n`, ]; module.exports.buildCjs = function (pkg) { - // generate node bindgens for cjs output - fs.mkdirSync(`./dist/cjs`, { recursive: true }); - execSync( - `wasm-bindgen --target nodejs ../../target/wasm32-unknown-unknown/release-wasm/${ - packagePrefix + pkg - }.wasm --out-dir ./temp/node/${pkg} --out-name ${pkg}` - ); + // generate node bindgens for cjs output + fs.mkdirSync(`./dist/cjs`, { recursive: true }); + execSync( + `wasm-bindgen --target nodejs ../../target/wasm32-unknown-unknown/release-wasm/${ + packagePrefix + pkg + }.wasm --out-dir ./temp/node/${pkg} --out-name ${pkg}`, + ); - // encode wasm as base64 into a json for cjs that can be natively imported - // in js modules in order to avoid using fetch or fs operations - const wasmCjsBytes = fs.readFileSync(`./temp/node/${pkg}/${pkg}_bg.wasm`); - fs.writeFileSync( - "./dist/cjs/raindex_wbg.json", - JSON.stringify({ - wasm: Buffer.from(wasmCjsBytes, 'binary').toString('base64') - }) - ); + // encode wasm as base64 into a json for cjs that can be natively imported + // in js modules in order to avoid using fetch or fs operations + const wasmCjsBytes = fs.readFileSync(`./temp/node/${pkg}/${pkg}_bg.wasm`); + fs.writeFileSync( + "./dist/cjs/raindex_wbg.json", + JSON.stringify({ + wasm: Buffer.from(wasmCjsBytes, "binary").toString("base64"), + }), + ); - // prepare the dts - let dts = fs.readFileSync(`./temp/node/${pkg}/${pkg}.d.ts`, { - encoding: 'utf-8' - }); - dts = dts.replace( - `/* tslint:disable */ + // prepare the dts + let dts = fs.readFileSync(`./temp/node/${pkg}/${pkg}.d.ts`, { + encoding: "utf-8", + }); + dts = dts.replace( + `/* tslint:disable */ /* eslint-disable */`, - '' - ); - dts = '/* this file is auto-generated, do not modify */\n' + dts; - for (const dup of dups) { - const index = dts.indexOf(dup); - const lastIndex = dts.lastIndexOf(dup); - if (index === -1 || lastIndex === index) continue; - dts = dts.replaceAll(dup, ""); - const start = dts.slice(0, index); - const end = dts.slice(index); - dts = start + dup + end; - } - fs.writeFileSync(`./dist/cjs/index.d.ts`, dts); + "", + ); + dts = "/* this file is auto-generated, do not modify */\n" + dts; + for (const dup of dups) { + const index = dts.indexOf(dup); + const lastIndex = dts.lastIndexOf(dup); + if (index === -1 || lastIndex === index) continue; + dts = dts.replaceAll(dup, ""); + const start = dts.slice(0, index); + const end = dts.slice(index); + dts = start + dup + end; + } + fs.writeFileSync(`./dist/cjs/index.d.ts`, dts); - // prepare cjs - let cjs = fs.readFileSync(`./temp/node/${pkg}/${pkg}.js`, { - encoding: 'utf-8' - }); - cjs = cjs.replace( - `const path = require('path').join(__dirname, '${pkg}_bg.wasm'); -const bytes = require('fs').readFileSync(path);`, - ` -const { Buffer } = require('buffer'); + // prepare cjs + let cjs = fs.readFileSync(`./temp/node/${pkg}/${pkg}.js`, { + encoding: "utf-8", + }); + cjs = cjs.replace( + `const wasmPath = \`\${__dirname}/${pkg}_bg.wasm\`; +const wasmBytes = require('fs').readFileSync(wasmPath);`, + `const { Buffer } = require('buffer'); const wasmB64 = require('./raindex_wbg.json'); -const bytes = Buffer.from(wasmB64.wasm, 'base64');` - ); - cjs = cjs.replace('const { TextEncoder, TextDecoder } = require(`util`);', ''); - cjs = '/* this file is auto-generated, do not modify */\n' + cjs; - fs.writeFileSync(`./dist/cjs/index.js`, cjs); -} +const wasmBytes = Buffer.from(wasmB64.wasm, 'base64');`, + ); + cjs = cjs.replace( + "const { TextEncoder, TextDecoder } = require(`util`);", + "", + ); + cjs = "/* this file is auto-generated, do not modify */\n" + cjs; + fs.writeFileSync(`./dist/cjs/index.js`, cjs); +}; module.exports.buildEsm = function (pkg) { - // generate web bindgens for esm output - fs.mkdirSync(`./dist/esm`, { recursive: true }); - execSync( - `wasm-bindgen --target web ../../target/wasm32-unknown-unknown/release-wasm/${ - packagePrefix + pkg - }.wasm --out-dir ./temp/web/${pkg} --out-name ${pkg}` - ); + // generate web bindgens for esm output + fs.mkdirSync(`./dist/esm`, { recursive: true }); + execSync( + `wasm-bindgen --target web ../../target/wasm32-unknown-unknown/release-wasm/${ + packagePrefix + pkg + }.wasm --out-dir ./temp/web/${pkg} --out-name ${pkg}`, + ); - // encode wasm as base64 into a json for esm that can be natively imported - // in js modules in order to avoid using fetch or fs operations - const wasmEsmBytes = fs.readFileSync(`./temp/web/${pkg}/${pkg}_bg.wasm`); - fs.writeFileSync( - `./dist/esm/raindex_wbg.json`, - JSON.stringify({ - wasm: Buffer.from(wasmEsmBytes, 'binary').toString('base64') - }) - ); + // encode wasm as base64 into a json for esm that can be natively imported + // in js modules in order to avoid using fetch or fs operations + const wasmEsmBytes = fs.readFileSync(`./temp/web/${pkg}/${pkg}_bg.wasm`); + fs.writeFileSync( + `./dist/esm/raindex_wbg.json`, + JSON.stringify({ + wasm: Buffer.from(wasmEsmBytes, "binary").toString("base64"), + }), + ); - // prepare the dts - let dts = fs.readFileSync(`./temp/web/${pkg}/${pkg}.d.ts`, { - encoding: 'utf-8' - }); - dts = dts.replace( - `/* tslint:disable */ + // prepare the dts + let dts = fs.readFileSync(`./temp/web/${pkg}/${pkg}.d.ts`, { + encoding: "utf-8", + }); + dts = dts.replace( + `/* tslint:disable */ /* eslint-disable */`, - '' - ); - dts = '/* this file is auto-generated, do not modify */\n' + dts; - for (const dup of dups) { - const index = dts.indexOf(dup); - const lastIndex = dts.lastIndexOf(dup); - if (index === -1 || index === lastIndex) continue; - dts = dts.replaceAll(dup, ""); - const start = dts.slice(0, index); - const end = dts.slice(index); - dts = start + dup + end; - } - fs.writeFileSync(`./dist/esm/index.d.ts`, dts); + "", + ); + dts = "/* this file is auto-generated, do not modify */\n" + dts; + for (const dup of dups) { + const index = dts.indexOf(dup); + const lastIndex = dts.lastIndexOf(dup); + if (index === -1 || index === lastIndex) continue; + dts = dts.replaceAll(dup, ""); + const start = dts.slice(0, index); + const end = dts.slice(index); + dts = start + dup + end; + } + fs.writeFileSync(`./dist/esm/index.d.ts`, dts); - // prepare esm .js - let esm = fs.readFileSync(`./temp/web/${pkg}/${pkg}.js`, { - encoding: 'utf-8' - }); + // prepare esm .js + let esm = fs.readFileSync(`./temp/web/${pkg}/${pkg}.js`, { + encoding: "utf-8", + }); - // remove unused wasm import as we import the wasm through json - esm = esm.replaceAll(`module_or_path = new URL('${pkg}_bg.wasm', import.meta.url);`, ""); + // remove unused wasm import as we import the wasm through json + esm = esm.replaceAll( + `module_or_path = new URL('${pkg}_bg.wasm', import.meta.url);`, + "", + ); - esm = esm.replace(`export { initSync }; -export default __wbg_init;`, - `import { Buffer } from 'buffer'; + esm = esm.replace( + `export { initSync, __wbg_init as default };`, + `import { Buffer } from 'buffer'; import wasmB64 from './raindex_wbg.json'; const bytes = Buffer.from(wasmB64.wasm, 'base64');\n -initSync(bytes);` - ); - esm = '/* this file is auto-generated, do not modify */\n' + esm; - fs.writeFileSync(`./dist/esm/index.js`, esm); -} +initSync({ module: bytes });`, + ); + esm = "/* this file is auto-generated, do not modify */\n" + esm; + fs.writeFileSync(`./dist/esm/index.js`, esm); +}; diff --git a/packages/raindex/test/js_api/builder.test.ts b/packages/raindex/test/js_api/builder.test.ts index 07a12736c6..40588ea1c5 100644 --- a/packages/raindex/test/js_api/builder.test.ts +++ b/packages/raindex/test/js_api/builder.test.ts @@ -2052,13 +2052,13 @@ ${dotrainWithoutVaultIds}`; const result = builder.setVaultId("input", "token1", "test"); if (!result.error) expect.fail("Expected error"); expect(result.error.msg).toBe( - "Invalid value for field 'vault-id': Failed to parse vault id: digit 29 is out of range for base 10 in token 'token1' in inputs of order 'some-order'", + "Invalid value for field 'vault-id': Failed to parse vault id: invalid digit: t in token 'token1' in inputs of order 'some-order'", ); expect(result.error.msg).toContain("token 'token1'"); expect(result.error.msg).toContain("order 'some-order'"); expect(result.error.readableMsg).toBe( - "YAML configuration error: Invalid value for field 'vault-id': Failed to parse vault id: digit 29 is out of range for base 10 in token 'token1' in inputs of order 'some-order'", + "YAML configuration error: Invalid value for field 'vault-id': Failed to parse vault id: invalid digit: t in token 'token1' in inputs of order 'some-order'", ); assert.equal(stateUpdateCallback.mock.calls.length, 4); diff --git a/packages/ui-components/src/__tests__/DotrainRegistryProvider.test.ts b/packages/ui-components/src/__tests__/DotrainRegistryProvider.test.ts index ea9d37dbdb..b522303a1d 100644 --- a/packages/ui-components/src/__tests__/DotrainRegistryProvider.test.ts +++ b/packages/ui-components/src/__tests__/DotrainRegistryProvider.test.ts @@ -26,6 +26,7 @@ describe("DotrainRegistryProvider", () => { const registry: NonNullable = { free: vi.fn(), + [Symbol.dispose]: vi.fn(), getAllOrderDetails: vi.fn(() => wasmErrorResult), getOrderKeys: vi.fn(() => ({ value: [], error: undefined })), getDeploymentDetails: vi.fn(() => wasmErrorResult), diff --git a/src/lib/deploy/LibRaindexDeploy.sol b/src/lib/deploy/LibRaindexDeploy.sol index db5e7dfdc2..12606d6983 100644 --- a/src/lib/deploy/LibRaindexDeploy.sol +++ b/src/lib/deploy/LibRaindexDeploy.sol @@ -79,8 +79,8 @@ library LibRaindexDeploy { /// deployed with the rain standard zoltu deployer. bytes32 constant GENERIC_POOL_FLASH_BORROWER_DEPLOYED_CODEHASH = GENERIC_POOL_FB_HASH; - uint256 constant RAINDEX_START_BLOCK_ARBITRUM = 441612693; - uint256 constant RAINDEX_START_BLOCK_BASE = 43339885; - uint256 constant RAINDEX_START_BLOCK_FLARE = 56972130; - uint256 constant RAINDEX_START_BLOCK_POLYGON = 84174550; + uint256 constant RAINDEX_START_BLOCK_ARBITRUM = 467989192; + uint256 constant RAINDEX_START_BLOCK_BASE = 46645657; + uint256 constant RAINDEX_START_BLOCK_FLARE = 61847874; + uint256 constant RAINDEX_START_BLOCK_POLYGON = 87623401; } diff --git a/subgraph/networks.json b/subgraph/networks.json index 8d81283806..99f61042a2 100644 --- a/subgraph/networks.json +++ b/subgraph/networks.json @@ -2,25 +2,25 @@ "arbitrum-one": { "Raindex": { "address": "0xa560e58C77B8A841f80B4741Ad08E9260Edcab9F", - "startBlock": 441612693 + "startBlock": 467989192 } }, "matic": { "Raindex": { "address": "0xa560e58C77B8A841f80B4741Ad08E9260Edcab9F", - "startBlock": 84174550 + "startBlock": 87623401 } }, "base": { "Raindex": { "address": "0xa560e58C77B8A841f80B4741Ad08E9260Edcab9F", - "startBlock": 43339885 + "startBlock": 46645657 } }, "flare": { "Raindex": { "address": "0xa560e58C77B8A841f80B4741Ad08E9260Edcab9F", - "startBlock": 56972130 + "startBlock": 61847874 } } } From 74326cbe2d2c717a6af0933d5b44738f4f68b1b3 Mon Sep 17 00:00:00 2001 From: David Meister Date: Fri, 29 May 2026 20:17:31 +0000 Subject: [PATCH 27/27] Force-compile concrete DecimalFloat ABI for the subgraph The subgraph reads out/DecimalFloat.sol/DecimalFloat.json, but raindex only imports LibDecimalFloat (not the concrete contract), so after the submodule->soldeer migration forge no longer emits that ABI (the rain.math.float submodule build that used to produce it was dropped from test-subgraph.yml). Importing the concrete contract in script/ forces forge to compile it, restoring the ABI the subgraph build consumes. Co-Authored-By: Claude Opus 4.7 --- script/SubgraphAbi.sol | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 script/SubgraphAbi.sol diff --git a/script/SubgraphAbi.sol b/script/SubgraphAbi.sol new file mode 100644 index 0000000000..c667550261 --- /dev/null +++ b/script/SubgraphAbi.sol @@ -0,0 +1,9 @@ +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd +pragma solidity =0.8.25; + +// The subgraph build reads out/DecimalFloat.sol/DecimalFloat.json, but raindex +// only imports LibDecimalFloat (not the concrete contract), so forge would not +// otherwise emit that ABI. Importing the concrete contract here forces forge to +// compile it. +import {DecimalFloat} from "rain-math-float-0.1.1/src/concrete/DecimalFloat.sol";