From 86c3c2f618e999cf802998c8eade5950b475f56e Mon Sep 17 00:00:00 2001 From: Joby Thundil Date: Fri, 7 Nov 2025 13:17:48 -0500 Subject: [PATCH 01/23] deploy new fault disupute games --- sepolia/2025-11-07-upgrade-fault-proofs/.env | 13 ++ .../2025-11-07-upgrade-fault-proofs/Makefile | 60 ++++++ .../2025-11-07-upgrade-fault-proofs/README.md | 193 ++++++++++++++++++ .../addresses.json | 1 + .../foundry.toml | 20 ++ .../11155111/run-1762539213527.json | 53 +++++ .../11155111/run-1762539301055.json | 86 ++++++++ .../script/DeployDisputeGames.s.sol | 146 +++++++++++++ .../script/UpgradeDGF.s.sol | 150 ++++++++++++++ 9 files changed, 722 insertions(+) create mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/.env create mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/Makefile create mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/README.md create mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/addresses.json create mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/foundry.toml create mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/records/DeployDisputeGames.s.sol/11155111/run-1762539213527.json create mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/records/DeployDisputeGames.s.sol/11155111/run-1762539301055.json create mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/script/DeployDisputeGames.s.sol create mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeDGF.s.sol diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/.env b/sepolia/2025-11-07-upgrade-fault-proofs/.env new file mode 100644 index 00000000..3d15f54d --- /dev/null +++ b/sepolia/2025-11-07-upgrade-fault-proofs/.env @@ -0,0 +1,13 @@ +OP_COMMIT=94706ec5072b13030600d1b45ae10b673b660c0d +BASE_CONTRACTS_COMMIT=dcd8c98aa881e0ae4ebf872e0d91692a7bf94000 + +ABSOLUTE_PRESTATE=0x03caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b + +# Sepolia Config +SYSTEM_CONFIG=0xf272670eb55e895584501d564AfEB048bEd26194 + +OWNER_SAFE=0x0fe884546476dDd290eC46318785046ef68a0BA9 +CB_SIGNER_SAFE_ADDR=0x646132A1667ca7aD00d36616AFBA1A28116C770A +CB_NESTED_SAFE_ADDR=0x5dfEB066334B67355A15dc9b67317fD2a2e1f77f +CB_SC_SAFE_ADDR=0x6AF0674791925f767060Dd52f7fB20984E8639d8 +OP_SIGNER_SAFE_ADDR=0x6AF0674791925f767060Dd52f7fB20984E8639d8 diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/Makefile b/sepolia/2025-11-07-upgrade-fault-proofs/Makefile new file mode 100644 index 00000000..02d9cb46 --- /dev/null +++ b/sepolia/2025-11-07-upgrade-fault-proofs/Makefile @@ -0,0 +1,60 @@ +include ../../Makefile +include ../../Multisig.mk + +include ../.env +include .env + +ifndef LEDGER_ACCOUNT +override LEDGER_ACCOUNT = 1 +endif + +.PHONY: deploy +deploy: + forge script --rpc-url $(L1_RPC_URL) DeployDisputeGames \ + --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" --broadcast -vvvv + + +# Mainnet Commands + +# OWNER_SAFE/ +# ├── CB_SIGNER_SAFE_ADDR/ +# │ ├── CB_NESTED_SAFE_ADDR/ +# │ │ └── Signers +# │ └── CB_SC_SAFE_ADDR/ +# │ └── Signers +# └── OP_SIGNER_SAFE_ADDR/ +# └── Signers + +RPC_URL = $(L1_RPC_URL) +SCRIPT_NAME = UpgradeDGF + +# CB +.PHONY: sign-cb +sign-cb: + $(call MULTISIG_SIGN,$(CB_NESTED_SAFE_ADDR) $(CB_SIGNER_SAFE_ADDR)) + +.PHONY: approve-cb +approve-cb: + $(call MULTISIG_APPROVE,$(CB_NESTED_SAFE_ADDR) $(CB_SIGNER_SAFE_ADDR),$(SIGNATURES)) + +.PHONY: sign-cb-sc +sign-cb-sc: + $(call MULTISIG_SIGN,$(CB_SC_SAFE_ADDR) $(CB_SIGNER_SAFE_ADDR)) + +.PHONY: approve-cb-sc +approve-cb-sc: + $(call MULTISIG_APPROVE,$(CB_SC_SAFE_ADDR) $(CB_SIGNER_SAFE_ADDR),$(SIGNATURES)) + +# OP +.PHONY: sign-op +sign-op: + $(call MULTISIG_SIGN,$(OP_SIGNER_SAFE_ADDR)) + +.PHONY: approve-op +approve-op: + $(call MULTISIG_APPROVE,$(OP_SIGNER_SAFE_ADDR),$(SIGNATURES)) + +# Execute +.PHONY: execute +execute: + $(call MULTISIG_EXECUTE,0x) diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/README.md b/sepolia/2025-11-07-upgrade-fault-proofs/README.md new file mode 100644 index 00000000..bbff6d1b --- /dev/null +++ b/sepolia/2025-11-07-upgrade-fault-proofs/README.md @@ -0,0 +1,193 @@ +# Upgrade Fault Proofs + +Status: PENDING + +## Description + +This task contains two scripts. One for deploying new versions of the `FaultDisputeGame` and `PermissionedDisputeGame` contracts, and one for updating the `DisputeGameFactory` contract to reference the new dispute game contracts. + +## Procedure + +### 1. Update repo: + +```bash +cd contract-deployments +git pull +cd /-upgrade-fault-proofs +make deps +``` + +### 2. Setup Ledger + +Your Ledger needs to be connected and unlocked. The Ethereum +application needs to be opened on Ledger with the message "Application +is ready". + +### 3. Run relevant script(s) + +#### 3.1 Deploy new Dispute Game Implementations + +```bash +make deploy +``` + +This will output the new addresses of the `FaultDisputeGame` and `PermissionedDisputeGame` contracts to an `addresses.json` file. You will need to commit this file to the repo before signers can sign. + +#### 3.2 Sign the transaction + +**If on testnet**: + +```bash +make sign +``` + +**If on mainnet**: + +Coinbase signer: + +```bash +make sign-cb +``` + +Op signer: + +```bash +make sign-op +``` + +You will see a "Simulation link" from the output. + +Paste this URL in your browser. A prompt may ask you to choose a +project, any project will do. You can create one if necessary. + +Click "Simulate Transaction". + +We will be performing 3 validations and extract the domain hash and message hash to approve on your Ledger: + +1. Validate integrity of the simulation. +2. Validate correctness of the state diff. +3. Validate and extract domain hash and message hash to approve. + +##### 3.2.1 Validate integrity of the simulation. + +Make sure you are on the "Summary" tab of the tenderly simulation, to +validate integrity of the simulation, we need to check the following: + +1. "Network": Check the network is Sepolia or Mainnet. +2. "Timestamp": Check the simulation is performed on a block with a + recent timestamp (i.e. close to when you run the script). +3. "Sender": Check the address shown is your signer account. If not see the derivation path Note above. + +##### 3.2.2. Validate correctness of the state diff. + +Now click on the "State" tab, and refer to the [State Validations](./VALIDATION.md) instructions for the transaction you are signing. +Once complete return to this document to complete the signing. + +##### 3.2.3. Extract the domain hash and the message hash to approve. + +Now that we have verified the transaction performs the right +operation, we need to extract the domain hash and the message hash to +approve. + +Go back to the "Summary" tab, and find the +`GnosisSafe.checkSignatures` (for OP signers) or `Safe.checkSignatures` (for Coinbase signers) call. +This call's `data` parameter contains both the domain hash and the +message hash that will show up in your Ledger. + +It will be a concatenation of `0x1901`, the domain hash, and the +message hash: `0x1901[domain hash][message hash]`. + +Note down this value. You will need to compare it with the ones +displayed on the Ledger screen at signing. + +Once the validations are done, it's time to actually sign the +transaction. + +> [!WARNING] +> This is the most security critical part of the playbook: make sure the +> domain hash and message hash in the following two places match: +> +> 1. On your Ledger screen. +> 2. In the Tenderly simulation. You should use the same Tenderly +> simulation as the one you used to verify the state diffs, instead +> of opening the new one printed in the console. +> +> There is no need to verify anything printed in the console. There is +> no need to open the new Tenderly simulation link either. + +After verification, sign the transaction. You will see the `Data`, +`Signer` and `Signature` printed in the console. Format should be +something like this: + +```shell +Data: +Signer:
+Signature: +``` + +Double check the signer address is the right one. + +##### 3.2.4 Send the output to Facilitator(s) + +Nothing has occurred onchain - these are offchain signatures which +will be collected by Facilitators for execution. Execution can occur +by anyone once a threshold of signatures are collected, so a +Facilitator will do the final execution for convenience. + +Share the `Data`, `Signer` and `Signature` with the Facilitator, and +congrats, you are done! + +### [For Facilitator ONLY] How to execute + +#### Execute the transaction + +1. IMPORTANT: Ensure op-challenger has been updated before executing. +1. Collect outputs from all participating signers. +1. Concatenate all signatures and export it as the `SIGNATURES` + environment variable, i.e. `export +SIGNATURES="[SIGNATURE1][SIGNATURE2]..."`. +1. Run the `make execute` or `make approve` command as described below to execute the transaction. + +For example, if the quorum is 2 and you get the following outputs: + +```shell +Data: 0xDEADBEEF +Signer: 0xC0FFEE01 +Signature: AAAA +``` + +```shell +Data: 0xDEADBEEF +Signer: 0xC0FFEE02 +Signature: BBBB +``` + +If on testnet, then you should run: + +Coinbase facilitator: + +```bash +SIGNATURES=AAAABBBB make execute +``` + +If on mainnet, then you should run: + +Coinbase facilitator: + +```bash +SIGNATURES=AAAABBBB make approve-cb +``` + +Optimism facilitator: + +```bash +SIGNATURES=AAAABBBB make approve-op +``` + +#### If on mainnet, execute the transaction + +Once the signatures have been submitted approving the transaction for all nested Safes run: + +```bash +make execute +``` diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/addresses.json b/sepolia/2025-11-07-upgrade-fault-proofs/addresses.json new file mode 100644 index 00000000..a7719acd --- /dev/null +++ b/sepolia/2025-11-07-upgrade-fault-proofs/addresses.json @@ -0,0 +1 @@ +{"faultDisputeGame": "0xf0b64b080548b1f688356b9cf880076c2145f79a","permissionedDisputeGame": "0x284a4cf8cb83d3377f8eadfff2414f2bfa68484b"} \ No newline at end of file diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/foundry.toml b/sepolia/2025-11-07-upgrade-fault-proofs/foundry.toml new file mode 100644 index 00000000..7a443d45 --- /dev/null +++ b/sepolia/2025-11-07-upgrade-fault-proofs/foundry.toml @@ -0,0 +1,20 @@ +[profile.default] +src = 'src' +out = 'out' +libs = ['lib'] +broadcast = 'records' +fs_permissions = [{ access = "read-write", path = "./" }] +optimizer = true +optimizer_runs = 200 +via-ir = false +remappings = [ + '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', + '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', + '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', + '@rari-capital/solmate/=lib/solmate/', + '@base-contracts/=lib/base-contracts', + 'solady/=lib/solady/src/', + '@lib-keccak/=lib/lib-keccak/contracts/lib', +] + +# See more config options https://github.com/foundry-rs/foundry/tree/master/config diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/records/DeployDisputeGames.s.sol/11155111/run-1762539213527.json b/sepolia/2025-11-07-upgrade-fault-proofs/records/DeployDisputeGames.s.sol/11155111/run-1762539213527.json new file mode 100644 index 00000000..64acca4e --- /dev/null +++ b/sepolia/2025-11-07-upgrade-fault-proofs/records/DeployDisputeGames.s.sol/11155111/run-1762539213527.json @@ -0,0 +1,53 @@ +{ + "transactions": [ + { + "hash": null, + "transactionType": "CREATE", + "contractName": "FaultDisputeGame", + "contractAddress": "0x3955d1aa50b657cb0ce8d549197bd44478c6ed5c", + "function": null, + "arguments": [ + "(0, 0x03caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b, 73, 30, 10800, 302400, 0x07BABE08EE4D07dBA236530183B24055535A7011, 0xd3683e4947A7769603Ab6418eC02f000CE3cF30b, 0x2fF5cC82dBf333Ea30D8ee462178ab1707315355, 84532)" + ], + "transaction": { + "from": "0x24c3ae1aedb8142d32bb6d3b988f5910f272d53b", + "gas": "0x538b43", + "value": "0x0", + "input": "0x6101c06040523480156200001257600080fd5b50604051620053023803806200530283398101604081905262000035916200052d565b620000436001607e62000600565b60ff16816040015111156200006b57604051633beff19960e11b815260040160405180910390fd5b60001981606001511480620000955750604081015160608201516200009290600162000626565b10155b15620000b45760405163e62ccf3960e01b815260040160405180910390fd5b600281606001511015620000db5760405163e62ccf3960e01b815260040160405180910390fd5b6001600160401b0380168160c001516001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000128573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014e919062000641565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b2919062000661565b1115620001d25760405163b4e1243360e01b815260040160405180910390fd5b6000620001f782608001516001600160401b03166200048060201b62000baf1760201c565b6200020d906001600160401b031660026200067b565b905060008260c001516001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027a919062000641565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002de919062000661565b6200030184608001516001600160401b03166200048060201b62000baf1760201c565b6001600160401b031662000316919062000626565b905060006200033183836200048360201b6200318b1760201c565b90506001600160401b038111156200035c5760405163235dfb2b60e21b815260040160405180910390fd5b6200037f8460a001516001600160401b03166200048060201b62000baf1760201c565b6001600160401b0316816001600160401b03161115620003b25760405163235dfb2b60e21b815260040160405180910390fd5b63ffffffff8016620003d9856000015163ffffffff166200048060201b62000baf1760201c565b63ffffffff1603620003fe5760405163073ed16760e31b815260040160405180910390fd5b5050815163ffffffff1661012090815260208301516080908152604084015160a0908152606085015160c0908152918501516001600160401b039081166101a052908501511660e0908152908401516001600160a01b03908116610100908152918501518116610140529084015116610160529091015161018052506200069d565b90565b600081831162000494578162000496565b825b9392505050565b60405161014081016001600160401b0381118282101715620004cf57634e487b7160e01b600052604160045260246000fd5b60405290565b805163ffffffff81168114620004ea57600080fd5b919050565b80516001600160401b0381168114620004ea57600080fd5b6001600160a01b03811681146200051d57600080fd5b50565b8051620004ea8162000507565b600061014082840312156200054157600080fd5b6200054b6200049d565b6200055683620004d5565b81526020830151602082015260408301516040820152606083015160608201526200058460808401620004ef565b60808201526200059760a08401620004ef565b60a0820152620005aa60c0840162000520565b60c0820152620005bd60e0840162000520565b60e0820152610100620005d281850162000520565b90820152610120928301519281019290925250919050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8416808210156200061d576200061d620005ea565b90039392505050565b600082198211156200063c576200063c620005ea565b500190565b6000602082840312156200065457600080fd5b8151620004968162000507565b6000602082840312156200067457600080fd5b5051919050565b6000816000190483118215151615620006985762000698620005ea565b500290565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051614ac36200083f600039600081816106a701528181611a6401528181611ace0152611b000152600081816109bb01526130e301526000818161062a01528181611f74015281816120660152818161210e015281816121840152818161229e01526125fd015260008181610530015281816114e0015281816115aa01528181611e4a015261253501526000818161084c015281816125d4015261314f0152600081816104dc0152818161197d01528181612c900152612e49015260008181610a0e01528181610d930152818161190601528181611b2f01528181611b8a015281816127dd015261281d015260008181610a41015281816117c30152818161188f01528181611a9f01528181612b3901528181612fca015281816135c901528181613af901528181613c1401528181613c720152613cbd015260008181610ae80152818161184b0152818161195101528181612861015281816128ce01528181612ad20152612b5a01526000818161075c0152612bdd0152614ac36000f3fe6080604052600436106102ff5760003560e01c806370872aa511610190578063c395e1ca116100dc578063dabd396d11610095578063f8f43ff61161006f578063f8f43ff614610a95578063fa24f74314610ab5578063fa315aa914610ad9578063fe2bbeb214610b0c57600080fd5b8063dabd396d146109ff578063ec5e630814610a32578063eff0f59214610a6557600080fd5b8063c395e1ca146108d8578063c6f0308c146108f8578063cf09e0d01461096c578063d5d44d801461098c578063d6ae3cd5146109ac578063d8cc1a3c146109df57600080fd5b80638d450a9511610149578063bbdc02db11610123578063bbdc02db14610835578063bcef3b5514610876578063bd8da9561461088b578063c0d8bb74146108ab57600080fd5b80638d450a951461074d57806399735e3214610780578063a445ece61461079557600080fd5b806370872aa5146106de578063786b844b146106f35780637b0f0adc146107085780638129fc1c1461071b5780638980e0cc146107235780638b85902b1461073857600080fd5b80633e3ac9121161024f5780635a5fa2d91161020857806360e27464116101e257806360e27464146106635780636361506d146106835780636b6716c0146106985780636f034409146106cb57600080fd5b80635a5fa2d9146105fb5780635c0cba331461061b578063609d33341461064e57600080fd5b80633e3ac912146105005780633fc8cef314610521578063472777c614610554578063529d6a8c1461056757806354fd4d501461059457806357da950e146105cb57600080fd5b806325fc2ace116102bc57806330dbe5701161029657806330dbe57014610466578063378dd48c1461049e57806337b1b229146104b85780633a768463146104cd57600080fd5b806325fc2ace146104125780632810e1d6146104315780632ad69aeb1461044657600080fd5b8063019351301461030457806303c2924d1461032657806319effeb414610346578063200d2ed21461038a578063222abf45146103b8578063250e69bd146103f8575b600080fd5b34801561031057600080fd5b5061032461031f3660046143a2565b610b3c565b005b34801561033257600080fd5b506103246103413660046143fc565b610d1a565b34801561035257600080fd5b5060005461036d90600160401b90046001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b34801561039657600080fd5b506000546103ab90600160801b900460ff1681565b6040516103819190614455565b3480156103c457600080fd5b506103e86103d336600461447d565b600c6020526000908152604090205460ff1681565b6040519015158152602001610381565b34801561040457600080fd5b50600a546103e89060ff1681565b34801561041e57600080fd5b506008545b604051908152602001610381565b34801561043d57600080fd5b506103ab6111c5565b34801561045257600080fd5b506104236104613660046143fc565b611345565b34801561047257600080fd5b50600154610486906001600160a01b031681565b6040516001600160a01b039091168152602001610381565b3480156104aa57600080fd5b50600d546103ab9060ff1681565b3480156104c457600080fd5b50610486611376565b3480156104d957600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610486565b34801561050c57600080fd5b506000546103e890600160901b900460ff1681565b34801561052d57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610486565b61032461056236600461449a565b611387565b34801561057357600080fd5b5061042361058236600461447d565b60036020526000908152604090205481565b3480156105a057600080fd5b506040805180820190915260058152640312e382e360dc1b60208201525b6040516103819190614513565b3480156105d757600080fd5b506008546009546105e6919082565b60408051928352602083019190915201610381565b34801561060757600080fd5b50610423610616366004614526565b611399565b34801561062757600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610486565b34801561065a57600080fd5b506105be6113d3565b34801561066f57600080fd5b5061032461067e36600461447d565b6113e1565b34801561068f57600080fd5b5061042361167c565b3480156106a457600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061036d565b6103246106d936600461454d565b611688565b3480156106ea57600080fd5b50600954610423565b3480156106ff57600080fd5b50610324611ef9565b61032461071636600461449a565b612262565b61032461226f565b34801561072f57600080fd5b50600254610423565b34801561074457600080fd5b50610423612690565b34801561075957600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610423565b34801561078c57600080fd5b5061042361269c565b3480156107a157600080fd5b506107f76107b0366004614526565b6007602052600090815260409020805460019091015460ff821691610100810463ffffffff1691650100000000009091046001600160801b0316906001600160a01b031684565b60408051941515855263ffffffff90931660208501526001600160801b03909116918301919091526001600160a01b03166060820152608001610381565b34801561084157600080fd5b5060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610381565b34801561088257600080fd5b506104236126a6565b34801561089757600080fd5b5061036d6108a6366004614526565b6126b2565b3480156108b757600080fd5b506104236108c636600461447d565b600b6020526000908152604090205481565b3480156108e457600080fd5b506104236108f336600461458e565b612845565b34801561090457600080fd5b50610918610913366004614526565b612985565b6040805163ffffffff90981688526001600160a01b03968716602089015295909416948601949094526001600160801b039182166060860152608085015291821660a08401521660c082015260e001610381565b34801561097857600080fd5b5060005461036d906001600160401b031681565b34801561099857600080fd5b506104236109a736600461447d565b6129f8565b3480156109b857600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610423565b3480156109eb57600080fd5b506103246109fa3660046145b7565b612a50565b348015610a0b57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061036d565b348015610a3e57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610423565b348015610a7157600080fd5b506103e8610a80366004614526565b60046020526000908152604090205460ff1681565b348015610aa157600080fd5b50610324610ab036600461449a565b612de1565b348015610ac157600080fd5b50610aca61314d565b60405161038193929190614642565b348015610ae557600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610423565b348015610b1857600080fd5b506103e8610b27366004614526565b60066020526000908152604090205460ff1681565b60008054600160801b900460ff166002811115610b5b57610b5b61441e565b14610b795760405163067fe19560e41b815260040160405180910390fd5b600054600160901b900460ff1615610ba45760405163075173a960e11b815260040160405180910390fd5b610bb2610baf6126a6565b90565b610bc9610bc43686900386018661467d565b6131a5565b14610be757604051639cc00b5b60e01b815260040160405180910390fd5b82606001358282604051610bfc9291906146f0565b604051809103902014610c225760405163d81d583b60e01b815260040160405180910390fd5b6000610c6b610c6684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061320192505050565b613255565b90506000610c9282600881518110610c8557610c85614700565b60200260200101516133d9565b9050602081511115610cb75760405163d81d583b60e01b815260040160405180910390fd5b602081810151825190910360031b1c610cce612690565b8103610ced57604051630b8ed88360e41b815260040160405180910390fd5b5050600180546001600160a01b0319163317905550506000805460ff60901b1916600160901b1790555050565b60008054600160801b900460ff166002811115610d3957610d3961441e565b14610d575760405163067fe19560e41b815260040160405180910390fd5b600060028381548110610d6c57610d6c614700565b906000526020600020906005020190506000610d87846126b2565b90506001600160401b037f000000000000000000000000000000000000000000000000000000000000000081169082161015610dd65760405163f2440b5360e01b815260040160405180910390fd5b60008481526006602052604090205460ff1615610e065760405163f1a9458160e01b815260040160405180910390fd5b6000848152600560205260409020805480158015610e2357508515155b15610e85578354600160201b90046001600160a01b031660008115610e485781610e57565b60018601546001600160a01b03165b9050610e63818761345b565b505050600094855250506006602052505060409020805460ff19166001179055565b6000868152600760209081526040918290208251608081018452815460ff81161515808352610100820463ffffffff16948301949094526501000000000090046001600160801b031693810193909352600101546001600160a01b03166060830152610f09576001600160801b036040820152600181526000869003610f09578195505b600086826020015163ffffffff16610f21919061472c565b90506000838211610f325781610f34565b835b602084015190915063ffffffff165b8181101561103a576000868281548110610f5f57610f5f614700565b6000918252602080832090910154808352600690915260409091205490915060ff16610f9e57604051634d03b32360e11b815260040160405180910390fd5b600060028281548110610fb357610fb3614700565b600091825260209091206005909102018054909150600160201b90046001600160a01b0316158015610ff95750600481015460408701516001600160801b039182169116115b156110255760018101546001600160a01b0316606087015260048101546001600160801b031660408701525b5050808061103290614744565b915050610f43565b5063ffffffff818116602085810191825260008c815260079091526040908190208651815493519288015164ffffffffff1990941690151564ffffffff00191617610100929094169182029390931774ffffffffffffffffffffffffffffffff00000000001916650100000000006001600160801b03909316929092029190911782556060850151600190920180546001600160a01b0319166001600160a01b03909316929092179091558490036111ba57606083015160008a8152600660205260409020805460ff19166001179055891580156111215750600054600160901b900460ff165b15611167576001546001600160a01b031661113c818a61345b565b88546001600160a01b03909116600160201b02640100000000600160c01b03199091161788556111b8565b6111946001600160a01b0382161561117f578161118e565b60018901546001600160a01b03165b8961345b565b8754640100000000600160c01b031916600160201b6001600160a01b038316021788555b505b505050505050505050565b600080600054600160801b900460ff1660028111156111e6576111e661441e565b146112045760405163067fe19560e41b815260040160405180910390fd5b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85460ff1661124f57604051634d03b32360e11b815260040160405180910390fd5b60006001600160a01b0316600260008154811061126e5761126e614700565b6000918252602090912060059091020154600160201b90046001600160a01b03161461129b57600161129e565b60025b600080546001600160401b034216600160401b026fffffffffffffffff000000000000000019821681178355929350839260ff60801b191670ffffffffffffffffff00000000000000001990911617600160801b8360028111156113045761130461441e565b0217905560028111156113195761131961441e565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a290565b6005602052816000526040600020818154811061136157600080fd5b90600052602060002001600091509150505481565b6000611382600061349d565b905090565b6113948383836001611688565b505050565b600081815260076020908152604080832060059092528220805482546113ca90610100900463ffffffff168261475d565b95945050505050565b6060611382605460206134c0565b6113e9611ef9565b60006002600d5460ff1660028111156114045761140461441e565b0361142857506001600160a01b0381166000908152600b602052604090205461147e565b6001600d5460ff1660028111156114415761144161441e565b0361146557506001600160a01b03811660009081526003602052604090205461147e565b6040516301e28f7d60e21b815260040160405180910390fd5b6001600160a01b0382166000908152600c602052604090205460ff16611542576001600160a01b038281166000818152600c602052604090819020805460ff1916600117905551637eee288d60e01b81526004810191909152602481018390527f000000000000000000000000000000000000000000000000000000000000000090911690637eee288d90604401600060405180830381600087803b15801561152657600080fd5b505af115801561153a573d6000803e3d6000fd5b505050505050565b80600003611563576040516317bfe5f760e01b815260040160405180910390fd5b6001600160a01b038281166000818152600b602090815260408083208390556003909152808220919091555163f3fef3a360e01b81526004810191909152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063f3fef3a390604401600060405180830381600087803b1580156115f057600080fd5b505af1158015611604573d6000803e3d6000fd5b505050506000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611655576040519150601f19603f3d011682016040523d82523d6000602084013e61165a565b606091505b5050905080611394576040516383e6cc6b60e01b815260040160405180910390fd5b60006113826034613502565b60008054600160801b900460ff1660028111156116a7576116a761441e565b146116c55760405163067fe19560e41b815260040160405180910390fd5b6000600284815481106116da576116da614700565b60009182526020918290206040805160e0810182526005909302909101805463ffffffff811684526001600160a01b03600160201b90910481169484019490945260018101549093169082015260028201546001600160801b03908116606083015260038301546080830181905260049093015480821660a0840152600160801b90041660c0820152915085146117845760405163180a019960e11b815260040160405180910390fd5b60a0810151600083156001600160801b0383161760011b905060006117b1826001600160801b0316613522565b60ff1690508615806117ec57506117e97f0000000000000000000000000000000000000000000000000000000000000000600261472c565b81145b80156117f6575084155b15611814576040516329098def60e21b815260040160405180910390fd5b600054600160901b900460ff16801561182b575086155b156118495760405163075173a960e11b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081111561188a576040516356f57b2b60e01b815260040160405180910390fd5b6118b57f0000000000000000000000000000000000000000000000000000000000000000600161472c565b81036118c7576118c78688858861358e565b346118d183612845565b146118ef57604051638620aa1960e01b815260040160405180910390fd5b60006118fa886126b2565b90506001600160401b037f000000000000000000000000000000000000000000000000000000000000000081169082160361194857604051630ce0744560e21b815260040160405180910390fd5b600061197560017f000000000000000000000000000000000000000000000000000000000000000061475d565b8303611a98577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fd9190614774565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5e9190614791565b611a91907f00000000000000000000000000000000000000000000000000000000000000006001600160401b03166147aa565b9050611b29565b611ac360017f000000000000000000000000000000000000000000000000000000000000000061475d565b8303611afd57611a917f00000000000000000000000000000000000000000000000000000000000000006001600160401b031660026147d5565b507f00000000000000000000000000000000000000000000000000000000000000006001600160401b03165b611b5c817f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316614804565b6001600160401b0316611b75836001600160401b031690565b6001600160401b03161115611bba57611bb7817f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316614804565b91505b6000604083901b421760008a8152608087901b6001600160801b038d1617602052604081209192509060008181526004602052604090205490915060ff1615611c16576040516380497e3b60e01b815260040160405180910390fd5b60016004600083815260200190815260200160002060006101000a81548160ff02191690831515021790555060026040518060e001604052808d63ffffffff16815260200160006001600160a01b03168152602001336001600160a01b03168152602001346001600160801b031681526020018c8152602001886001600160801b03168152602001846001600160801b0316815250908060018154018082558091505060019003906000526020600020906005020160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160020160006101000a8154816001600160801b0302191690836001600160801b031602179055506080820151816003015560a08201518160040160006101000a8154816001600160801b0302191690836001600160801b0316021790555060c08201518160040160106101000a8154816001600160801b0302191690836001600160801b031602179055505050600560008c81526020019081526020016000206001600280549050611e0d919061475d565b81546001810183556000928352602080842090910191909155338252600b9052604081208054349290611e4190849061472c565b925050819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015611ea357600080fd5b505af1158015611eb7573d6000803e3d6000fd5b50506040513393508d92508e91507f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be90600090a4505050505050505050505050565b6002600d5460ff166002811115611f1257611f1261441e565b1480611f3457506001600d5460ff166002811115611f3257611f3261441e565b145b15611f3b57565b6000600d5460ff166002811115611f5457611f5461441e565b14611f72576040516301e28f7d60e21b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff4919061482c565b156120125760405163379a7ed960e01b815260040160405180910390fd5b600054600160401b90046001600160401b03166001600160401b031660000361204e57604051636082930560e11b815260040160405180910390fd5b604051630314d2b360e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630314d2b390602401602060405180830381865afa1580156120b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d9919061482c565b9050806120f957604051634851bd9b60e01b815260040160405180910390fd5b6040516317cf21a960e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906317cf21a990602401600060405180830381600087803b15801561215a57600080fd5b505af192505050801561216b575060015b506040516324b5ce0b60e11b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063496b9c1690602401602060405180830381865afa1580156121d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f7919061482c565b9050801561221157600d805460ff1916600117905561221f565b600d805460ff191660021790555b600d546040517f9908eaac0645df9d0704d06adc9e07337c951de2f06b5f2836151d48d5e4722f916122569160ff90911690614455565b60405180910390a15050565b6113948383836000611688565b600054600160881b900460ff16156122995760405162dc149f60e41b815260040160405180910390fd5b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d83ef2676040518163ffffffff1660e01b81526004016040805180830381865afa1580156122f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231d9190614849565b90925090508161234057604051633535e1d960e11b815260040160405180910390fd5b6040805180820190915282815260200181905260088290556009819055607a361461237e57604051639824bdab60e01b815260040160405180910390fd5b80612387612690565b116123b9576123946126a6565b60405163f40239db60e01b81526004016123b091815260200190565b60405180910390fd5b6040805160e08101825263ffffffff81526000602082015260029181016123de611376565b6001600160a01b03168152602001346001600160801b031681526020016124036126a6565b815260016020820152604001426001600160801b0390811690915282546001808201855560009485526020808620855160059094020180549186015163ffffffff9094166001600160c01b031990921691909117600160201b6001600160a01b0394851602178155604085015191810180546001600160a01b031916929093169190911790915560608301516002820180546fffffffffffffffffffffffffffffffff19169184169190911790556080830151600382015560a083015160c090930151928216600160801b9390921692909202176004909101558054600160881b60ff60881b199091161781553490600b906124fd611376565b6001600160a01b03166001600160a01b03168152602001908152602001600020600082825461252c919061472c565b925050819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561258e57600080fd5b505af11580156125a2573d6000803e3d6000fd5b50506000805467ffffffffffffffff1916426001600160401b0316179055505060408051630f27ce5f60e21b815290517f000000000000000000000000000000000000000000000000000000000000000063ffffffff1692507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691633c9f397c9160048083019260209291908290030181865afa158015612650573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612674919061486d565b600a805460ff191663ffffffff92909216929092141790555050565b60006113826054613502565b6000611382612690565b60006113826014613502565b600080600054600160801b900460ff1660028111156126d3576126d361441e565b146126f15760405163067fe19560e41b815260040160405180910390fd5b60006002838154811061270657612706614700565b600091825260208220600590910201805490925063ffffffff9081161461276c57815460028054909163ffffffff1690811061274457612744614700565b906000526020600020906005020160040160109054906101000a90046001600160801b031690505b600482015460009061279590600160801b90046001600160401b03165b6001600160401b031690565b6127a8906001600160401b03164261475d565b6127be612789846001600160801b031660401c90565b6001600160401b03166127d1919061472c565b90506001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166001600160401b0316816001600160401b03161161281b57806113ca565b7f000000000000000000000000000000000000000000000000000000000000000095945050505050565b60008061285a836001600160801b0316613522565b60ff1690507f00000000000000000000000000000000000000000000000000000000000000008111156128a0576040516356f57b2b60e01b815260040160405180910390fd5b642e90edd00062061a806311e1a30060006128bb83836148a9565b9050670de0b6b3a764000060006128f2827f00000000000000000000000000000000000000000000000000000000000000006148bd565b9050600061291061290b670de0b6b3a7640000866148bd565b613683565b9050600061291e8484613899565b9050600061292c83836138e8565b9050600061293982613916565b9050600061295882612953670de0b6b3a76400008f6148bd565b613a93565b905060006129668b836138e8565b9050612972818d6148bd565b9f9e505050505050505050505050505050565b6002818154811061299557600080fd5b60009182526020909120600590910201805460018201546002830154600384015460049094015463ffffffff84169550600160201b9093046001600160a01b03908116949216926001600160801b03918216929180821691600160801b90041687565b60006002600d5460ff166002811115612a1357612a1361441e565b03612a3457506001600160a01b03166000908152600b602052604090205490565b506001600160a01b031660009081526003602052604090205490565b60008054600160801b900460ff166002811115612a6f57612a6f61441e565b14612a8d5760405163067fe19560e41b815260040160405180910390fd5b600060028781548110612aa257612aa2614700565b6000918252602082206005919091020160048101549092506001600160801b0316908715821760011b9050612af87f0000000000000000000000000000000000000000000000000000000000000000600161472c565b612b0a826001600160801b0316613522565b60ff1614612b2b57604051630bea7bb360e31b815260040160405180910390fd5b6000808915612c0757612b7e7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061475d565b6001901b612b94846001600160801b0316613ac4565b6001600160801b0316612ba791906148dc565b15612bdb57612bd2612bc360016001600160801b0387166148f0565b865463ffffffff166000613ae2565b60030154612bfd565b7f00000000000000000000000000000000000000000000000000000000000000005b9150849050612c28565b60038501549150612c25612bc36001600160801b0386166001614910565b90505b600882901b60088a8a604051612c3f9291906146f0565b6040518091039020901b14612c675760405163696550ff60e01b815260040160405180910390fd5b6000612c728c613bab565b90506000612c81836003015490565b6040516370a6769960e11b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e14ced3290612cd5908f908f908f908f908a9060040161495b565b6020604051808303816000875af1158015612cf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d189190614791565b600485015491149150600090600290612d39906001600160801b0316613522565b612d4b896001600160801b0316613522565b612d559190614995565b612d5f91906149b8565b60ff161590508115158103612d875760405163fb4e40dd60e01b815260040160405180910390fd5b8754600160201b90046001600160a01b031615612db757604051639071e6af60e01b815260040160405180910390fd5b50508554640100000000600160c01b03191633600160201b02179095555050505050505050505050565b60008054600160801b900460ff166002811115612e0057612e0061441e565b14612e1e5760405163067fe19560e41b815260040160405180910390fd5b600080600080612e2d86613bda565b93509350935093506000612e4385858585613e49565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec99190614774565b905060018903612f73576001600160a01b0381166352f0f3ad8a84612eef610baf61167c565b6040516001600160e01b031960e086901b16815260048101939093526024830191909152604482015260206064820152608481018a905260a4015b6020604051808303816000875af1158015612f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6d9190614791565b506111ba565b60028903612f92576001600160a01b0381166352f0f3ad8a8489612eef565b60038903612fb1576001600160a01b0381166352f0f3ad8a8487612eef565b600489036130be576000612fee6001600160801b0385167f0000000000000000000000000000000000000000000000000000000000000000613ee8565b600954612ffb919061472c565b61300690600161472c565b9050613010612690565b81106130235761301e612690565b613025565b805b90506001600160a01b0382166352f0f3ad8b8560405160e084901b6001600160e01b03191681526004810192909252602482015260c084901b604482015260086064820152608481018b905260a4016020604051808303816000875af1158015613093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b79190614791565b50506111ba565b60058903613131576040516352f0f3ad60e01b8152600481018a9052602481018390527f000000000000000000000000000000000000000000000000000000000000000060c01b604482015260086064820152608481018890526001600160a01b038216906352f0f3ad9060a401612f2a565b604051600162ec819b60e01b0319815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006000606061317a6126a6565b91506131846113d3565b9050909192565b600081831161319a578161319c565b825b90505b92915050565b600081600001518260200151836040015184606001516040516020016131e4949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b6040805180820190915260008082526020820152815160000361323757604051635ab458fb60e01b815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b6060600080600061326585613f15565b9194509250905060018160018111156132805761328061441e565b1461329e576040516325ce355f60e11b815260040160405180910390fd5b84516132aa838561472c565b146132c857604051630b8aa6f760e31b815260040160405180910390fd5b604080516020808252610420820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816132df5790505093506000835b86518110156133cd576000806133526040518060400160405280858c60000151613336919061475d565b8152602001858c6020015161334b919061472c565b9052613f15565b50915091506040518060400160405280838361336e919061472c565b8152602001848b60200151613383919061472c565b81525088858151811061339857613398614700565b60209081029190910101526133ae60018561472c565b93506133ba818361472c565b6133c4908461472c565b9250505061330c565b50845250919392505050565b606060008060006133e985613f15565b9194509250905060008160018111156134045761340461441e565b14613422576040516307fe6cb960e21b815260040160405180910390fd5b61342c828461472c565b85511461344c57604051630b8aa6f760e31b815260040160405180910390fd5b6113ca8560200151848461420b565b60028101546001600160a01b038316600090815260036020526040812080546001600160801b039093169290919061349490849061472c565b90915550505050565b6000806134b23660011981013560f01c900390565b929092013560601c92915050565b606060006134d63660011981013560f01c900390565b905060405191508282528284820160208401378260208301016000815260208101604052505092915050565b6000806135173660011981013560f01c900390565b929092013592915050565b7e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b6001600160401b03831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b60006135a46001600160801b0384166001614910565b905060006135b482866001613ae2565b9050600086901a838061361657506135ed60027f00000000000000000000000000000000000000000000000000000000000000006148dc565b6004830154600290613607906001600160801b0316613522565b61361191906149b8565b60ff16145b156136555760ff811660011480613630575060ff81166002145b6136505760405163f40239db60e01b8152600481018890526024016123b0565b61367a565b60ff81161561367a5760405163f40239db60e01b8152600481018890526024016123b0565b50505050505050565b6001600160801b03811160071b81811c6001600160401b031060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c60ff1060031b17600082136136d857631615e6386000526004601cfd5b7ff8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffff6f8421084210842108cc6318c6db6d54be83831c1c601f161a1890811b609f90811c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d6c8c3f38e95a6b1ff2ab1c3b343619018302821d6d02384773bdf1ac5676facced60901901830290911d6cb9a025d814b29c212b8b1a07cd1901909102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a5506029190037d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b60007812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f218311670de0b6b3a7640000021582026138d657637c5f487d6000526004601cfd5b50670de0b6b3a7640000919091020490565b6000816000190483118202156139065763bac65e5b6000526004601cfd5b50670de0b6b3a764000091020490565b600068023f2fa8f6da5b9d2819821361392e57919050565b680755bf798b4a1bf1e5821261394c5763a37bfec96000526004601cfd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b600061319c670de0b6b3a764000083613aab86613683565b613ab591906149da565b613abf9190614a5f565b613916565b600080613ad083613522565b600160ff919091161b90920392915050565b60008082613b2257613b1d6001600160801b0386167f000000000000000000000000000000000000000000000000000000000000000061429f565b613b34565b613b34856001600160801b031661430e565b905060028481548110613b4957613b49614700565b906000526020600020906005020191505b60048201546001600160801b03828116911614613ba357815460028054909163ffffffff16908110613b8e57613b8e614700565b90600052602060002090600502019150613b5a565b509392505050565b6000806000806000613bbc86613bda565b9350935093509350613bd084848484613e49565b9695505050505050565b6000806000806000859050600060028281548110613bfa57613bfa614700565b6000918252602090912060059091020160048101549091507f000000000000000000000000000000000000000000000000000000000000000090613c46906001600160801b0316613522565b60ff1611613c67576040516359a5ae1160e11b815260040160405180910390fd5b6000815b60048301547f000000000000000000000000000000000000000000000000000000000000000090613ca4906001600160801b0316613522565b60ff169250821115613d1957825463ffffffff16613ce37f0000000000000000000000000000000000000000000000000000000000000000600161472c565b8303613ced578391505b60028181548110613d0057613d00614700565b9060005260206000209060050201935080945050613c6b565b600481810154908401546001600160801b0391821691166000816001600160801b0316613d5e613d52856001600160801b031660011c90565b6001600160801b031690565b6001600160801b03161490508015613df7576000613d84836001600160801b0316613ac4565b6001600160801b03161115613dd4576000613db4613dac60016001600160801b0386166148f0565b896001613ae2565b6003810154600490910154909c506001600160801b03169a50613dda9050565b6008549a505b600386015460048701549099506001600160801b03169750613e3b565b6000613e10613dac6001600160801b0385166001614910565b6003808901546004808b015492840154930154909e506001600160801b039182169d50919b50169850505b505050505050509193509193565b60006001600160801b03841615613ea45760408051602081018790526001600160801b038087169282019290925260608101859052908316608082015260a001604051602081830303815290604052805190602001206113ca565b8282604051602001613ec99291909182526001600160801b0316602082015260400190565b6040516020818303038152906040528051906020012095945050505050565b600080613ef484613522565b60ff1690508083036001841b600180831b0386831b17039250505092915050565b60008060008360000151600003613f3f57604051635ab458fb60e01b815260040160405180910390fd5b6020840151805160001a607f8111613f64576000600160009450945094505050614204565b60b78111613ffc576000613f7960808361475d565b905080876000015111613f9f576040516366c9448560e01b815260040160405180910390fd5b6001838101516001600160f81b0319169082148015613fcb5750600160ff1b6001600160f81b03198216105b15613fe95760405163babb01dd60e01b815260040160405180910390fd5b5060019550935060009250614204915050565b60bf81116140de57600061401160b78361475d565b905080876000015111614037576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b03191660008190036140685760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c603781116140975760405163babb01dd60e01b815260040160405180910390fd5b6140a1818461472c565b8951116140c1576040516366c9448560e01b815260040160405180910390fd5b6140cc83600161472c565b97509550600094506142049350505050565b60f7811161412a5760006140f360c08361475d565b905080876000015111614119576040516366c9448560e01b815260040160405180910390fd5b600195509350849250614204915050565b600061413760f78361475d565b90508087600001511161415d576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b031916600081900361418e5760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c603781116141bd5760405163babb01dd60e01b815260040160405180910390fd5b6141c7818461472c565b8951116141e7576040516366c9448560e01b815260040160405180910390fd5b6141f283600161472c565b97509550600194506142049350505050565b9193909250565b6060816001600160401b0381111561422557614225614667565b6040519080825280601f01601f19166020018201604052801561424f576020820181803683370190505b5090508115614298576000614264848661472c565b90506020820160005b8481101561428557828101518282015260200161426d565b84811115614294576000858301525b5050505b9392505050565b6000816142b4846001600160801b0316613522565b60ff16116142ca5763b34b5c226000526004601cfd5b6142d38361430e565b9050816142e8826001600160801b0316613522565b60ff161161319f5761319c6142fe83600161472c565b6001600160801b03831690614332565b6000811960018301168161432182613522565b60ff169390931c8015179392505050565b60008061433e84613522565b60ff169050808303600180821b0385821b179250505092915050565b60008083601f84011261436c57600080fd5b5081356001600160401b0381111561438357600080fd5b60208301915083602082850101111561439b57600080fd5b9250929050565b600080600083850360a08112156143b857600080fd5b60808112156143c657600080fd5b5083925060808401356001600160401b038111156143e357600080fd5b6143ef8682870161435a565b9497909650939450505050565b6000806040838503121561440f57600080fd5b50508035926020909101359150565b634e487b7160e01b600052602160045260246000fd5b6003811061445257634e487b7160e01b600052602160045260246000fd5b50565b6020810161446283614434565b91905290565b6001600160a01b038116811461445257600080fd5b60006020828403121561448f57600080fd5b813561429881614468565b6000806000606084860312156144af57600080fd5b505081359360208301359350604090920135919050565b6000815180845260005b818110156144ec576020818501810151868301820152016144d0565b818111156144fe576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061319c60208301846144c6565b60006020828403121561453857600080fd5b5035919050565b801515811461445257600080fd5b6000806000806080858703121561456357600080fd5b84359350602085013592506040850135915060608501356145838161453f565b939692955090935050565b6000602082840312156145a057600080fd5b81356001600160801b038116811461429857600080fd5b600080600080600080608087890312156145d057600080fd5b8635955060208701356145e28161453f565b945060408701356001600160401b03808211156145fe57600080fd5b61460a8a838b0161435a565b9096509450606089013591508082111561462357600080fd5b5061463089828a0161435a565b979a9699509497509295939492505050565b63ffffffff841681528260208201526060604082015260006113ca60608301846144c6565b634e487b7160e01b600052604160045260246000fd5b60006080828403121561468f57600080fd5b604051608081018181106001600160401b03821117156146bf57634e487b7160e01b600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561473f5761473f614716565b500190565b60006001820161475657614756614716565b5060010190565b60008282101561476f5761476f614716565b500390565b60006020828403121561478657600080fd5b815161429881614468565b6000602082840312156147a357600080fd5b5051919050565b60006001600160401b038083168185168083038211156147cc576147cc614716565b01949350505050565b60006001600160401b03808316818516818304811182151516156147fb576147fb614716565b02949350505050565b60006001600160401b038381169083168181101561482457614824614716565b039392505050565b60006020828403121561483e57600080fd5b81516142988161453f565b6000806040838503121561485c57600080fd5b505080516020909101519092909150565b60006020828403121561487f57600080fd5b815163ffffffff8116811461429857600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826148b8576148b8614893565b500490565b60008160001904831182151516156148d7576148d7614716565b500290565b6000826148eb576148eb614893565b500690565b60006001600160801b038381169083168181101561482457614824614716565b60006001600160801b038083168185168083038211156147cc576147cc614716565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061496f606083018789614932565b8281036020840152614982818688614932565b9150508260408301529695505050505050565b600060ff821660ff8416808210156149af576149af614716565b90039392505050565b600060ff8316806149cb576149cb614893565b8060ff84160691505092915050565b60006001600160ff1b0381841382841380821686840486111615614a0057614a00614716565b600160ff1b6000871282811687830589121615614a1f57614a1f614716565b60008712925087820587128484161615614a3b57614a3b614716565b87850587128184161615614a5157614a51614716565b505050929093029392505050565b600082614a6e57614a6e614893565b600160ff1b821460001984141615614a8857614a88614716565b50059056fea264697066735822122075c70c4154051a88cbed0ac70536a54db779f3d30e831b1083f705c1b425257864736f6c634300080f0033000000000000000000000000000000000000000000000000000000000000000003caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b0000000000000000000000000000000000000000000000000000000000000049000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000000000000000000049d4000000000000000000000000007babe08ee4d07dba236530183b24055535a7011000000000000000000000000d3683e4947a7769603ab6418ec02f000ce3cf30b0000000000000000000000002ff5cc82dbf333ea30d8ee462178ab17073153550000000000000000000000000000000000000000000000000000000000014a34", + "nonce": "0x0", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "PermissionedDisputeGame", + "contractAddress": "0xff537e0d3154f7e6526d766e1495e6d7ab7cf5d6", + "function": null, + "arguments": [ + "(1, 0x03caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b, 73, 30, 10800, 302400, 0x07BABE08EE4D07dBA236530183B24055535A7011, 0x32cE910d9C6c8F78dc6779c1499aB05F281A054e, 0x2fF5cC82dBf333Ea30D8ee462178ab1707315355, 84532)", + "0x037637067c1DbE6d2430616d8f54Cb774Daa5999", + "0x8b8c52B04A38f10515C52670fcb23f3C4C44474F" + ], + "transaction": { + "from": "0x24c3ae1aedb8142d32bb6d3b988f5910f272d53b", + "gas": "0x55c89c", + "value": "0x0", + "input": "0x6102006040523480156200001257600080fd5b506040516200558c3803806200558c83398101604081905262000035916200053b565b82620000446001607e6200064a565b60ff16816040015111156200006c57604051633beff19960e11b815260040160405180910390fd5b60001981606001511480620000965750604081015160608201516200009390600162000670565b10155b15620000b55760405163e62ccf3960e01b815260040160405180910390fd5b600281606001511015620000dc5760405163e62ccf3960e01b815260040160405180910390fd5b6001600160401b0380168160c001516001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000129573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014f91906200068b565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b39190620006ab565b1115620001d35760405163b4e1243360e01b815260040160405180910390fd5b6000620001f882608001516001600160401b03166200048e60201b62000c4b1760201c565b6200020e906001600160401b03166002620006c5565b905060008260c001516001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000255573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027b91906200068b565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002df9190620006ab565b6200030284608001516001600160401b03166200048e60201b62000c4b1760201c565b6001600160401b031662000317919062000670565b905060006200033283836200049160201b6200236f1760201c565b90506001600160401b038111156200035d5760405163235dfb2b60e21b815260040160405180910390fd5b620003808460a001516001600160401b03166200048e60201b62000c4b1760201c565b6001600160401b0316816001600160401b03161115620003b35760405163235dfb2b60e21b815260040160405180910390fd5b63ffffffff8016620003da856000015163ffffffff166200048e60201b62000c4b1760201c565b63ffffffff1603620003ff5760405163073ed16760e31b815260040160405180910390fd5b5050815163ffffffff1661012090815260208301516080908152604084015160a0908152606085015160c0908152918501516001600160401b039081166101a052908501511660e0908152908401516001600160a01b03908116610100908152918501518116610140529084015181166101605292015161018052509182166101c052166101e05250620006e7565b90565b6000818311620004a25781620004a4565b825b9392505050565b60405161014081016001600160401b0381118282101715620004dd57634e487b7160e01b600052604160045260246000fd5b60405290565b805163ffffffff81168114620004f857600080fd5b919050565b80516001600160401b0381168114620004f857600080fd5b6001600160a01b03811681146200052b57600080fd5b50565b8051620004f88162000515565b60008060008385036101808112156200055357600080fd5b610140808212156200056457600080fd5b6200056e620004ab565b91506200057b86620004e3565b8252602086015160208301526040860151604083015260608601516060830152620005a960808701620004fd565b6080830152620005bc60a08701620004fd565b60a0830152620005cf60c087016200052e565b60c0830152620005e260e087016200052e565b60e0830152610100620005f78188016200052e565b8184015250610120808701518184015250819450620006188187016200052e565b935050506200062b61016085016200052e565b90509250925092565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff84168082101562000667576200066762000634565b90039392505050565b6000821982111562000686576200068662000634565b500190565b6000602082840312156200069e57600080fd5b8151620004a48162000515565b600060208284031215620006be57600080fd5b5051919050565b6000816000190483118215151615620006e257620006e262000634565b500290565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051614cca620008c2600039600081816105d9015281816117610152611f780152600081816108ad0152818161172f01528181611b330152611f4601526000818161071001528181612ae201528181612b4c0152612b7e015260008181610a5701526122c70152600081816106930152818161182d0152818161191f015281816119c701528181611a3d01528181612fa601526133050152600081816105660152818161157c0152818161164601528181612ec8015261323d0152600081816108e80152818161233301526132dc0152600081816105120152818161202d015281816129fb0152613a85015260008181610aaa01528181610e2f01528181611cc801528181611d080152818161298401528181612bad0152612c08015260008181610add015281816121ae015281816128410152818161290d01528181612b1d0152818161392e01528181613c1001528181613c6e01528181613cb9015281816142d601526143c5015260008181610b8401528181611d4c01528181611db9015281816128c9015281816129cf015281816138c7015261394f0152600081816107c501526139d20152614cca6000f3fe6080604052600436106103355760003560e01c806370872aa5116101ab578063c0d8bb74116100f7578063dabd396d11610095578063f8f43ff61161006f578063f8f43ff614610b31578063fa24f74314610b51578063fa315aa914610b75578063fe2bbeb214610ba857600080fd5b8063dabd396d14610a9b578063ec5e630814610ace578063eff0f59214610b0157600080fd5b8063cf09e0d0116100d1578063cf09e0d014610a08578063d5d44d8014610a28578063d6ae3cd514610a48578063d8cc1a3c14610a7b57600080fd5b8063c0d8bb7414610947578063c395e1ca14610974578063c6f0308c1461099457600080fd5b80638d450a9511610164578063a8e4fb901161013e578063a8e4fb901461089e578063bbdc02db146108d1578063bcef3b5514610912578063bd8da9561461092757600080fd5b80638d450a95146107b657806399735e32146107e9578063a445ece6146107fe57600080fd5b806370872aa514610747578063786b844b1461075c5780637b0f0adc146107715780638129fc1c146107845780638980e0cc1461078c5780638b85902b146107a157600080fd5b80633e3ac912116102855780635a5fa2d91161022357806360e27464116101fd57806360e27464146106cc5780636361506d146106ec5780636b6716c0146107015780636f0344091461073457600080fd5b80635a5fa2d9146106645780635c0cba3314610684578063609d3334146106b757600080fd5b8063529d6a8c1161025f578063529d6a8c1461059d578063534db0e2146105ca57806354fd4d50146105fd57806357da950e1461063457600080fd5b80633e3ac912146105365780633fc8cef314610557578063472777c61461058a57600080fd5b806325fc2ace116102f257806330dbe570116102cc57806330dbe5701461049c578063378dd48c146104d457806337b1b229146104ee5780633a7684631461050357600080fd5b806325fc2ace146104485780632810e1d6146104675780632ad69aeb1461047c57600080fd5b8063019351301461033a57806303c2924d1461035c57806319effeb41461037c578063200d2ed2146103c0578063222abf45146103ee578063250e69bd1461042e575b600080fd5b34801561034657600080fd5b5061035a6103553660046145a9565b610bd8565b005b34801561036857600080fd5b5061035a610377366004614603565b610db6565b34801561038857600080fd5b506000546103a390600160401b90046001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b3480156103cc57600080fd5b506000546103e190600160801b900460ff1681565b6040516103b7919061465c565b3480156103fa57600080fd5b5061041e610409366004614684565b600c6020526000908152604090205460ff1681565b60405190151581526020016103b7565b34801561043a57600080fd5b50600a5461041e9060ff1681565b34801561045457600080fd5b506008545b6040519081526020016103b7565b34801561047357600080fd5b506103e1611261565b34801561048857600080fd5b50610459610497366004614603565b6113e1565b3480156104a857600080fd5b506001546104bc906001600160a01b031681565b6040516001600160a01b0390911681526020016103b7565b3480156104e057600080fd5b50600d546103e19060ff1681565b3480156104fa57600080fd5b506104bc611412565b34801561050f57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104bc565b34801561054257600080fd5b5060005461041e90600160901b900460ff1681565b34801561056357600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104bc565b61035a6105983660046146a1565b611423565b3480156105a957600080fd5b506104596105b8366004614684565b60036020526000908152604090205481565b3480156105d657600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104bc565b34801561060957600080fd5b506040805180820190915260058152640312e382e360dc1b60208201525b6040516103b7919061471a565b34801561064057600080fd5b5060085460095461064f919082565b604080519283526020830191909152016103b7565b34801561067057600080fd5b5061045961067f36600461472d565b611435565b34801561069057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104bc565b3480156106c357600080fd5b5061062761146f565b3480156106d857600080fd5b5061035a6106e7366004614684565b61147d565b3480156106f857600080fd5b50610459611718565b34801561070d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006103a3565b61035a610742366004614754565b611724565b34801561075357600080fd5b50600954610459565b34801561076857600080fd5b5061035a6117b2565b61035a61077f3660046146a1565b611b1b565b61035a611b28565b34801561079857600080fd5b50600254610459565b3480156107ad57600080fd5b50610459611b7b565b3480156107c257600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610459565b3480156107f557600080fd5b50610459611b87565b34801561080a57600080fd5b5061086061081936600461472d565b6007602052600090815260409020805460019091015460ff821691610100810463ffffffff1691650100000000009091046001600160801b0316906001600160a01b031684565b60408051941515855263ffffffff90931660208501526001600160801b03909116918301919091526001600160a01b031660608201526080016103b7565b3480156108aa57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104bc565b3480156108dd57600080fd5b5060405163ffffffff7f00000000000000000000000000000000000000000000000000000000000000001681526020016103b7565b34801561091e57600080fd5b50610459611b91565b34801561093357600080fd5b506103a361094236600461472d565b611b9d565b34801561095357600080fd5b50610459610962366004614684565b600b6020526000908152604090205481565b34801561098057600080fd5b5061045961098f366004614795565b611d30565b3480156109a057600080fd5b506109b46109af36600461472d565b611e70565b6040805163ffffffff90981688526001600160a01b03968716602089015295909416948601949094526001600160801b039182166060860152608085015291821660a08401521660c082015260e0016103b7565b348015610a1457600080fd5b506000546103a3906001600160401b031681565b348015610a3457600080fd5b50610459610a43366004614684565b611ee3565b348015610a5457600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610459565b348015610a8757600080fd5b5061035a610a963660046147be565b611f3b565b348015610aa757600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006103a3565b348015610ada57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610459565b348015610b0d57600080fd5b5061041e610b1c36600461472d565b60046020526000908152604090205460ff1681565b348015610b3d57600080fd5b5061035a610b4c3660046146a1565b611fc5565b348015610b5d57600080fd5b50610b66612331565b6040516103b793929190614849565b348015610b8157600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610459565b348015610bb457600080fd5b5061041e610bc336600461472d565b60066020526000908152604090205460ff1681565b60008054600160801b900460ff166002811115610bf757610bf7614625565b14610c155760405163067fe19560e41b815260040160405180910390fd5b600054600160901b900460ff1615610c405760405163075173a960e11b815260040160405180910390fd5b610c4e610c4b611b91565b90565b610c65610c6036869003860186614884565b612389565b14610c8357604051639cc00b5b60e01b815260040160405180910390fd5b82606001358282604051610c989291906148f7565b604051809103902014610cbe5760405163d81d583b60e01b815260040160405180910390fd5b6000610d07610d0284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506123e592505050565b612439565b90506000610d2e82600881518110610d2157610d21614907565b60200260200101516125bd565b9050602081511115610d535760405163d81d583b60e01b815260040160405180910390fd5b602081810151825190910360031b1c610d6a611b7b565b8103610d8957604051630b8ed88360e41b815260040160405180910390fd5b5050600180546001600160a01b0319163317905550506000805460ff60901b1916600160901b1790555050565b60008054600160801b900460ff166002811115610dd557610dd5614625565b14610df35760405163067fe19560e41b815260040160405180910390fd5b600060028381548110610e0857610e08614907565b906000526020600020906005020190506000610e2384611b9d565b90506001600160401b037f000000000000000000000000000000000000000000000000000000000000000081169082161015610e725760405163f2440b5360e01b815260040160405180910390fd5b60008481526006602052604090205460ff1615610ea25760405163f1a9458160e01b815260040160405180910390fd5b6000848152600560205260409020805480158015610ebf57508515155b15610f21578354600160201b90046001600160a01b031660008115610ee45781610ef3565b60018601546001600160a01b03165b9050610eff818761263f565b505050600094855250506006602052505060409020805460ff19166001179055565b6000868152600760209081526040918290208251608081018452815460ff81161515808352610100820463ffffffff16948301949094526501000000000090046001600160801b031693810193909352600101546001600160a01b03166060830152610fa5576001600160801b036040820152600181526000869003610fa5578195505b600086826020015163ffffffff16610fbd9190614933565b90506000838211610fce5781610fd0565b835b602084015190915063ffffffff165b818110156110d6576000868281548110610ffb57610ffb614907565b6000918252602080832090910154808352600690915260409091205490915060ff1661103a57604051634d03b32360e11b815260040160405180910390fd5b60006002828154811061104f5761104f614907565b600091825260209091206005909102018054909150600160201b90046001600160a01b03161580156110955750600481015460408701516001600160801b039182169116115b156110c15760018101546001600160a01b0316606087015260048101546001600160801b031660408701525b505080806110ce9061494b565b915050610fdf565b5063ffffffff818116602085810191825260008c815260079091526040908190208651815493519288015164ffffffffff1990941690151564ffffffff00191617610100929094169182029390931774ffffffffffffffffffffffffffffffff00000000001916650100000000006001600160801b03909316929092029190911782556060850151600190920180546001600160a01b0319166001600160a01b039093169290921790915584900361125657606083015160008a8152600660205260409020805460ff19166001179055891580156111bd5750600054600160901b900460ff165b15611203576001546001600160a01b03166111d8818a61263f565b88546001600160a01b03909116600160201b02640100000000600160c01b0319909116178855611254565b6112306001600160a01b0382161561121b578161122a565b60018901546001600160a01b03165b8961263f565b8754640100000000600160c01b031916600160201b6001600160a01b038316021788555b505b505050505050505050565b600080600054600160801b900460ff16600281111561128257611282614625565b146112a05760405163067fe19560e41b815260040160405180910390fd5b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85460ff166112eb57604051634d03b32360e11b815260040160405180910390fd5b60006001600160a01b0316600260008154811061130a5761130a614907565b6000918252602090912060059091020154600160201b90046001600160a01b03161461133757600161133a565b60025b600080546001600160401b034216600160401b026fffffffffffffffff000000000000000019821681178355929350839260ff60801b191670ffffffffffffffffff00000000000000001990911617600160801b8360028111156113a0576113a0614625565b0217905560028111156113b5576113b5614625565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a290565b600560205281600052604060002081815481106113fd57600080fd5b90600052602060002001600091509150505481565b600061141e6000612681565b905090565b6114308383836001611724565b505050565b6000818152600760209081526040808320600590925282208054825461146690610100900463ffffffff1682614964565b95945050505050565b606061141e605460206126a4565b6114856117b2565b60006002600d5460ff1660028111156114a0576114a0614625565b036114c457506001600160a01b0381166000908152600b602052604090205461151a565b6001600d5460ff1660028111156114dd576114dd614625565b0361150157506001600160a01b03811660009081526003602052604090205461151a565b6040516301e28f7d60e21b815260040160405180910390fd5b6001600160a01b0382166000908152600c602052604090205460ff166115de576001600160a01b038281166000818152600c602052604090819020805460ff1916600117905551637eee288d60e01b81526004810191909152602481018390527f000000000000000000000000000000000000000000000000000000000000000090911690637eee288d90604401600060405180830381600087803b1580156115c257600080fd5b505af11580156115d6573d6000803e3d6000fd5b505050505050565b806000036115ff576040516317bfe5f760e01b815260040160405180910390fd5b6001600160a01b038281166000818152600b602090815260408083208390556003909152808220919091555163f3fef3a360e01b81526004810191909152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063f3fef3a390604401600060405180830381600087803b15801561168c57600080fd5b505af11580156116a0573d6000803e3d6000fd5b505050506000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146116f1576040519150601f19603f3d011682016040523d82523d6000602084013e6116f6565b606091505b5050905080611430576040516383e6cc6b60e01b815260040160405180910390fd5b600061141e60346126e6565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806117835750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6117a0576040516369c3779f60e11b815260040160405180910390fd5b6117ac84848484612706565b50505050565b6002600d5460ff1660028111156117cb576117cb614625565b14806117ed57506001600d5460ff1660028111156117eb576117eb614625565b145b156117f457565b6000600d5460ff16600281111561180d5761180d614625565b1461182b576040516301e28f7d60e21b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ad919061497b565b156118cb5760405163379a7ed960e01b815260040160405180910390fd5b600054600160401b90046001600160401b03166001600160401b031660000361190757604051636082930560e11b815260040160405180910390fd5b604051630314d2b360e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630314d2b390602401602060405180830381865afa15801561196e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611992919061497b565b9050806119b257604051634851bd9b60e01b815260040160405180910390fd5b6040516317cf21a960e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906317cf21a990602401600060405180830381600087803b158015611a1357600080fd5b505af1925050508015611a24575060015b506040516324b5ce0b60e11b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063496b9c1690602401602060405180830381865afa158015611a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab0919061497b565b90508015611aca57600d805460ff19166001179055611ad8565b600d805460ff191660021790555b600d546040517f9908eaac0645df9d0704d06adc9e07337c951de2f06b5f2836151d48d5e4722f91611b0f9160ff9091169061465c565b60405180910390a15050565b6114308383836000611724565b326001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b71576040516369c3779f60e11b815260040160405180910390fd5b611b79612f77565b565b600061141e60546126e6565b600061141e611b7b565b600061141e60146126e6565b600080600054600160801b900460ff166002811115611bbe57611bbe614625565b14611bdc5760405163067fe19560e41b815260040160405180910390fd5b600060028381548110611bf157611bf1614907565b600091825260208220600590910201805490925063ffffffff90811614611c5757815460028054909163ffffffff16908110611c2f57611c2f614907565b906000526020600020906005020160040160109054906101000a90046001600160801b031690505b6004820154600090611c8090600160801b90046001600160401b03165b6001600160401b031690565b611c93906001600160401b031642614964565b611ca9611c74846001600160801b031660401c90565b6001600160401b0316611cbc9190614933565b90506001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166001600160401b0316816001600160401b031611611d065780611466565b7f000000000000000000000000000000000000000000000000000000000000000095945050505050565b600080611d45836001600160801b0316613398565b60ff1690507f0000000000000000000000000000000000000000000000000000000000000000811115611d8b576040516356f57b2b60e01b815260040160405180910390fd5b642e90edd00062061a806311e1a3006000611da683836149ae565b9050670de0b6b3a76400006000611ddd827f00000000000000000000000000000000000000000000000000000000000000006149c2565b90506000611dfb611df6670de0b6b3a7640000866149c2565b613404565b90506000611e09848461361a565b90506000611e178383613669565b90506000611e2482613697565b90506000611e4382611e3e670de0b6b3a76400008f6149c2565b613814565b90506000611e518b83613669565b9050611e5d818d6149c2565b9f9e505050505050505050505050505050565b60028181548110611e8057600080fd5b60009182526020909120600590910201805460018201546002830154600384015460049094015463ffffffff84169550600160201b9093046001600160a01b03908116949216926001600160801b03918216929180821691600160801b90041687565b60006002600d5460ff166002811115611efe57611efe614625565b03611f1f57506001600160a01b03166000908152600b602052604090205490565b506001600160a01b031660009081526003602052604090205490565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611f9a5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b611fb7576040516369c3779f60e11b815260040160405180910390fd5b6115d6868686868686613845565b60008054600160801b900460ff166002811115611fe457611fe4614625565b146120025760405163067fe19560e41b815260040160405180910390fd5b60008060008061201186613bd6565b9350935093509350600061202785858585613e45565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ad91906149e1565b905060018903612157576001600160a01b0381166352f0f3ad8a846120d3610c4b611718565b6040516001600160e01b031960e086901b16815260048101939093526024830191909152604482015260206064820152608481018a905260a4015b6020604051808303816000875af115801561212d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215191906149fe565b50611256565b60028903612176576001600160a01b0381166352f0f3ad8a84896120d3565b60038903612195576001600160a01b0381166352f0f3ad8a84876120d3565b600489036122a25760006121d26001600160801b0385167f0000000000000000000000000000000000000000000000000000000000000000613ee4565b6009546121df9190614933565b6121ea906001614933565b90506121f4611b7b565b811061220757612202611b7b565b612209565b805b90506001600160a01b0382166352f0f3ad8b8560405160e084901b6001600160e01b03191681526004810192909252602482015260c084901b604482015260086064820152608481018b905260a4016020604051808303816000875af1158015612277573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229b91906149fe565b5050611256565b60058903612315576040516352f0f3ad60e01b8152600481018a9052602481018390527f000000000000000000000000000000000000000000000000000000000000000060c01b604482015260086064820152608481018890526001600160a01b038216906352f0f3ad9060a40161210e565b604051600162ec819b60e01b0319815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006000606061235e611b91565b915061236861146f565b9050909192565b600081831161237e5781612380565b825b90505b92915050565b600081600001518260200151836040015184606001516040516020016123c8949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b6040805180820190915260008082526020820152815160000361241b57604051635ab458fb60e01b815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b6060600080600061244985613f11565b91945092509050600181600181111561246457612464614625565b14612482576040516325ce355f60e11b815260040160405180910390fd5b845161248e8385614933565b146124ac57604051630b8aa6f760e31b815260040160405180910390fd5b604080516020808252610420820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816124c35790505093506000835b86518110156125b1576000806125366040518060400160405280858c6000015161251a9190614964565b8152602001858c6020015161252f9190614933565b9052613f11565b5091509150604051806040016040528083836125529190614933565b8152602001848b602001516125679190614933565b81525088858151811061257c5761257c614907565b6020908102919091010152612592600185614933565b935061259e8183614933565b6125a89084614933565b925050506124f0565b50845250919392505050565b606060008060006125cd85613f11565b9194509250905060008160018111156125e8576125e8614625565b14612606576040516307fe6cb960e21b815260040160405180910390fd5b6126108284614933565b85511461263057604051630b8aa6f760e31b815260040160405180910390fd5b61146685602001518484614207565b60028101546001600160a01b038316600090815260036020526040812080546001600160801b0390931692909190612678908490614933565b90915550505050565b6000806126963660011981013560f01c900390565b929092013560601c92915050565b606060006126ba3660011981013560f01c900390565b905060405191508282528284820160208401378260208301016000815260208101604052505092915050565b6000806126fb3660011981013560f01c900390565b929092013592915050565b60008054600160801b900460ff16600281111561272557612725614625565b146127435760405163067fe19560e41b815260040160405180910390fd5b60006002848154811061275857612758614907565b60009182526020918290206040805160e0810182526005909302909101805463ffffffff811684526001600160a01b03600160201b90910481169484019490945260018101549093169082015260028201546001600160801b03908116606083015260038301546080830181905260049093015480821660a0840152600160801b90041660c0820152915085146128025760405163180a019960e11b815260040160405180910390fd5b60a0810151600083156001600160801b0383161760011b9050600061282f826001600160801b0316613398565b60ff16905086158061286a57506128677f00000000000000000000000000000000000000000000000000000000000000006002614933565b81145b8015612874575084155b15612892576040516329098def60e21b815260040160405180910390fd5b600054600160901b900460ff1680156128a9575086155b156128c75760405163075173a960e11b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000811115612908576040516356f57b2b60e01b815260040160405180910390fd5b6129337f00000000000000000000000000000000000000000000000000000000000000006001614933565b8103612945576129458688858861429b565b3461294f83611d30565b1461296d57604051638620aa1960e01b815260040160405180910390fd5b600061297888611b9d565b90506001600160401b037f00000000000000000000000000000000000000000000000000000000000000008116908216036129c657604051630ce0744560e21b815260040160405180910390fd5b60006129f360017f0000000000000000000000000000000000000000000000000000000000000000614964565b8303612b16577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7b91906149e1565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612adc91906149fe565b612b0f907f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316614a17565b9050612ba7565b612b4160017f0000000000000000000000000000000000000000000000000000000000000000614964565b8303612b7b57612b0f7f00000000000000000000000000000000000000000000000000000000000000006001600160401b03166002614a42565b507f00000000000000000000000000000000000000000000000000000000000000006001600160401b03165b612bda817f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316614a71565b6001600160401b0316612bf3836001600160401b031690565b6001600160401b03161115612c3857612c35817f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316614a71565b91505b6000604083901b421760008a8152608087901b6001600160801b038d1617602052604081209192509060008181526004602052604090205490915060ff1615612c94576040516380497e3b60e01b815260040160405180910390fd5b60016004600083815260200190815260200160002060006101000a81548160ff02191690831515021790555060026040518060e001604052808d63ffffffff16815260200160006001600160a01b03168152602001336001600160a01b03168152602001346001600160801b031681526020018c8152602001886001600160801b03168152602001846001600160801b0316815250908060018154018082558091505060019003906000526020600020906005020160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160020160006101000a8154816001600160801b0302191690836001600160801b031602179055506080820151816003015560a08201518160040160006101000a8154816001600160801b0302191690836001600160801b0316021790555060c08201518160040160106101000a8154816001600160801b0302191690836001600160801b031602179055505050600560008c81526020019081526020016000206001600280549050612e8b9190614964565b81546001810183556000928352602080842090910191909155338252600b9052604081208054349290612ebf908490614933565b925050819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015612f2157600080fd5b505af1158015612f35573d6000803e3d6000fd5b50506040513393508d92508e91507f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be90600090a4505050505050505050505050565b600054600160881b900460ff1615612fa15760405162dc149f60e41b815260040160405180910390fd5b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d83ef2676040518163ffffffff1660e01b81526004016040805180830381865afa158015613001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130259190614a99565b90925090508161304857604051633535e1d960e11b815260040160405180910390fd5b6040805180820190915282815260200181905260088290556009819055607a361461308657604051639824bdab60e01b815260040160405180910390fd5b8061308f611b7b565b116130c15761309c611b91565b60405163f40239db60e01b81526004016130b891815260200190565b60405180910390fd5b6040805160e08101825263ffffffff81526000602082015260029181016130e6611412565b6001600160a01b03168152602001346001600160801b0316815260200161310b611b91565b815260016020820152604001426001600160801b0390811690915282546001808201855560009485526020808620855160059094020180549186015163ffffffff9094166001600160c01b031990921691909117600160201b6001600160a01b0394851602178155604085015191810180546001600160a01b031916929093169190911790915560608301516002820180546fffffffffffffffffffffffffffffffff19169184169190911790556080830151600382015560a083015160c090930151928216600160801b9390921692909202176004909101558054600160881b60ff60881b199091161781553490600b90613205611412565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546132349190614933565b925050819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561329657600080fd5b505af11580156132aa573d6000803e3d6000fd5b50506000805467ffffffffffffffff1916426001600160401b0316179055505060408051630f27ce5f60e21b815290517f000000000000000000000000000000000000000000000000000000000000000063ffffffff1692507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691633c9f397c9160048083019260209291908290030181865afa158015613358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061337c9190614abd565b600a805460ff191663ffffffff92909216929092141790555050565b7e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b6001600160401b03831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b6001600160801b03811160071b81811c6001600160401b031060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c60ff1060031b176000821361345957631615e6386000526004601cfd5b7ff8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffff6f8421084210842108cc6318c6db6d54be83831c1c601f161a1890811b609f90811c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d6c8c3f38e95a6b1ff2ab1c3b343619018302821d6d02384773bdf1ac5676facced60901901830290911d6cb9a025d814b29c212b8b1a07cd1901909102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a5506029190037d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b60007812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f218311670de0b6b3a76400000215820261365757637c5f487d6000526004601cfd5b50670de0b6b3a7640000919091020490565b6000816000190483118202156136875763bac65e5b6000526004601cfd5b50670de0b6b3a764000091020490565b600068023f2fa8f6da5b9d281982136136af57919050565b680755bf798b4a1bf1e582126136cd5763a37bfec96000526004601cfd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6000612380670de0b6b3a76400008361382c86613404565b6138369190614ae3565b6138409190614b68565b613697565b60008054600160801b900460ff16600281111561386457613864614625565b146138825760405163067fe19560e41b815260040160405180910390fd5b60006002878154811061389757613897614907565b6000918252602082206005919091020160048101549092506001600160801b0316908715821760011b90506138ed7f00000000000000000000000000000000000000000000000000000000000000006001614933565b6138ff826001600160801b0316613398565b60ff161461392057604051630bea7bb360e31b815260040160405180910390fd5b60008089156139fc576139737f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614964565b6001901b613989846001600160801b0316614390565b6001600160801b031661399c9190614b96565b156139d0576139c76139b860016001600160801b038716614baa565b865463ffffffff1660006143ae565b600301546139f2565b7f00000000000000000000000000000000000000000000000000000000000000005b9150849050613a1d565b60038501549150613a1a6139b86001600160801b0386166001614bca565b90505b600882901b60088a8a604051613a349291906148f7565b6040518091039020901b14613a5c5760405163696550ff60e01b815260040160405180910390fd5b6000613a678c614477565b90506000613a76836003015490565b6040516370a6769960e11b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e14ced3290613aca908f908f908f908f908a90600401614c15565b6020604051808303816000875af1158015613ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b0d91906149fe565b600485015491149150600090600290613b2e906001600160801b0316613398565b613b40896001600160801b0316613398565b613b4a9190614c4f565b613b549190614c72565b60ff161590508115158103613b7c5760405163fb4e40dd60e01b815260040160405180910390fd5b8754600160201b90046001600160a01b031615613bac57604051639071e6af60e01b815260040160405180910390fd5b50508554640100000000600160c01b03191633600160201b02179095555050505050505050505050565b6000806000806000859050600060028281548110613bf657613bf6614907565b6000918252602090912060059091020160048101549091507f000000000000000000000000000000000000000000000000000000000000000090613c42906001600160801b0316613398565b60ff1611613c63576040516359a5ae1160e11b815260040160405180910390fd5b6000815b60048301547f000000000000000000000000000000000000000000000000000000000000000090613ca0906001600160801b0316613398565b60ff169250821115613d1557825463ffffffff16613cdf7f00000000000000000000000000000000000000000000000000000000000000006001614933565b8303613ce9578391505b60028181548110613cfc57613cfc614907565b9060005260206000209060050201935080945050613c67565b600481810154908401546001600160801b0391821691166000816001600160801b0316613d5a613d4e856001600160801b031660011c90565b6001600160801b031690565b6001600160801b03161490508015613df3576000613d80836001600160801b0316614390565b6001600160801b03161115613dd0576000613db0613da860016001600160801b038616614baa565b8960016143ae565b6003810154600490910154909c506001600160801b03169a50613dd69050565b6008549a505b600386015460048701549099506001600160801b03169750613e37565b6000613e0c613da86001600160801b0385166001614bca565b6003808901546004808b015492840154930154909e506001600160801b039182169d50919b50169850505b505050505050509193509193565b60006001600160801b03841615613ea05760408051602081018790526001600160801b038087169282019290925260608101859052908316608082015260a00160405160208183030381529060405280519060200120611466565b8282604051602001613ec59291909182526001600160801b0316602082015260400190565b6040516020818303038152906040528051906020012095945050505050565b600080613ef084613398565b60ff1690508083036001841b600180831b0386831b17039250505092915050565b60008060008360000151600003613f3b57604051635ab458fb60e01b815260040160405180910390fd5b6020840151805160001a607f8111613f60576000600160009450945094505050614200565b60b78111613ff8576000613f75608083614964565b905080876000015111613f9b576040516366c9448560e01b815260040160405180910390fd5b6001838101516001600160f81b0319169082148015613fc75750600160ff1b6001600160f81b03198216105b15613fe55760405163babb01dd60e01b815260040160405180910390fd5b5060019550935060009250614200915050565b60bf81116140da57600061400d60b783614964565b905080876000015111614033576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b03191660008190036140645760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c603781116140935760405163babb01dd60e01b815260040160405180910390fd5b61409d8184614933565b8951116140bd576040516366c9448560e01b815260040160405180910390fd5b6140c8836001614933565b97509550600094506142009350505050565b60f781116141265760006140ef60c083614964565b905080876000015111614115576040516366c9448560e01b815260040160405180910390fd5b600195509350849250614200915050565b600061413360f783614964565b905080876000015111614159576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b031916600081900361418a5760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c603781116141b95760405163babb01dd60e01b815260040160405180910390fd5b6141c38184614933565b8951116141e3576040516366c9448560e01b815260040160405180910390fd5b6141ee836001614933565b97509550600194506142009350505050565b9193909250565b6060816001600160401b038111156142215761422161486e565b6040519080825280601f01601f19166020018201604052801561424b576020820181803683370190505b50905081156142945760006142608486614933565b90506020820160005b84811015614281578281015182820152602001614269565b84811115614290576000858301525b5050505b9392505050565b60006142b16001600160801b0384166001614bca565b905060006142c1828660016143ae565b9050600086901a838061432357506142fa60027f0000000000000000000000000000000000000000000000000000000000000000614b96565b6004830154600290614314906001600160801b0316613398565b61431e9190614c72565b60ff16145b156143625760ff81166001148061433d575060ff81166002145b61435d5760405163f40239db60e01b8152600481018890526024016130b8565b614387565b60ff8116156143875760405163f40239db60e01b8152600481018890526024016130b8565b50505050505050565b60008061439c83613398565b600160ff919091161b90920392915050565b600080826143ee576143e96001600160801b0386167f00000000000000000000000000000000000000000000000000000000000000006144a6565b614400565b614400856001600160801b0316614515565b90506002848154811061441557614415614907565b906000526020600020906005020191505b60048201546001600160801b0382811691161461446f57815460028054909163ffffffff1690811061445a5761445a614907565b90600052602060002090600502019150614426565b509392505050565b600080600080600061448886613bd6565b935093509350935061449c84848484613e45565b9695505050505050565b6000816144bb846001600160801b0316613398565b60ff16116144d15763b34b5c226000526004601cfd5b6144da83614515565b9050816144ef826001600160801b0316613398565b60ff161161238357612380614505836001614933565b6001600160801b03831690614539565b6000811960018301168161452882613398565b60ff169390931c8015179392505050565b60008061454584613398565b60ff169050808303600180821b0385821b179250505092915050565b60008083601f84011261457357600080fd5b5081356001600160401b0381111561458a57600080fd5b6020830191508360208285010111156145a257600080fd5b9250929050565b600080600083850360a08112156145bf57600080fd5b60808112156145cd57600080fd5b5083925060808401356001600160401b038111156145ea57600080fd5b6145f686828701614561565b9497909650939450505050565b6000806040838503121561461657600080fd5b50508035926020909101359150565b634e487b7160e01b600052602160045260246000fd5b6003811061465957634e487b7160e01b600052602160045260246000fd5b50565b602081016146698361463b565b91905290565b6001600160a01b038116811461465957600080fd5b60006020828403121561469657600080fd5b81356142948161466f565b6000806000606084860312156146b657600080fd5b505081359360208301359350604090920135919050565b6000815180845260005b818110156146f3576020818501810151868301820152016146d7565b81811115614705576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061238060208301846146cd565b60006020828403121561473f57600080fd5b5035919050565b801515811461465957600080fd5b6000806000806080858703121561476a57600080fd5b843593506020850135925060408501359150606085013561478a81614746565b939692955090935050565b6000602082840312156147a757600080fd5b81356001600160801b038116811461429457600080fd5b600080600080600080608087890312156147d757600080fd5b8635955060208701356147e981614746565b945060408701356001600160401b038082111561480557600080fd5b6148118a838b01614561565b9096509450606089013591508082111561482a57600080fd5b5061483789828a01614561565b979a9699509497509295939492505050565b63ffffffff8416815282602082015260606040820152600061146660608301846146cd565b634e487b7160e01b600052604160045260246000fd5b60006080828403121561489657600080fd5b604051608081018181106001600160401b03821117156148c657634e487b7160e01b600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156149465761494661491d565b500190565b60006001820161495d5761495d61491d565b5060010190565b6000828210156149765761497661491d565b500390565b60006020828403121561498d57600080fd5b815161429481614746565b634e487b7160e01b600052601260045260246000fd5b6000826149bd576149bd614998565b500490565b60008160001904831182151516156149dc576149dc61491d565b500290565b6000602082840312156149f357600080fd5b81516142948161466f565b600060208284031215614a1057600080fd5b5051919050565b60006001600160401b03808316818516808303821115614a3957614a3961491d565b01949350505050565b60006001600160401b0380831681851681830481118215151615614a6857614a6861491d565b02949350505050565b60006001600160401b0383811690831681811015614a9157614a9161491d565b039392505050565b60008060408385031215614aac57600080fd5b505080516020909101519092909150565b600060208284031215614acf57600080fd5b815163ffffffff8116811461429457600080fd5b60006001600160ff1b0381841382841380821686840486111615614b0957614b0961491d565b600160ff1b6000871282811687830589121615614b2857614b2861491d565b60008712925087820587128484161615614b4457614b4461491d565b87850587128184161615614b5a57614b5a61491d565b505050929093029392505050565b600082614b7757614b77614998565b600160ff1b821460001984141615614b9157614b9161491d565b500590565b600082614ba557614ba5614998565b500690565b60006001600160801b0383811690831681811015614a9157614a9161491d565b60006001600160801b03808316818516808303821115614a3957614a3961491d565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b606081526000614c29606083018789614bec565b8281036020840152614c3c818688614bec565b9150508260408301529695505050505050565b600060ff821660ff841680821015614c6957614c6961491d565b90039392505050565b600060ff831680614c8557614c85614998565b8060ff8416069150509291505056fea2646970667358221220860c23a83884cc08df9069441e34e5ac65668559b49819edea26545ff6110aec64736f6c634300080f0033000000000000000000000000000000000000000000000000000000000000000103caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b0000000000000000000000000000000000000000000000000000000000000049000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000000000000000000049d4000000000000000000000000007babe08ee4d07dba236530183b24055535a701100000000000000000000000032ce910d9c6c8f78dc6779c1499ab05f281a054e0000000000000000000000002ff5cc82dbf333ea30d8ee462178ab17073153550000000000000000000000000000000000000000000000000000000000014a34000000000000000000000000037637067c1dbe6d2430616d8f54cb774daa59990000000000000000000000008b8c52b04a38f10515c52670fcb23f3c4c44474f", + "nonce": "0x1", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1762539213527, + "chain": 11155111, + "commit": "4b699c9" +} \ No newline at end of file diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/records/DeployDisputeGames.s.sol/11155111/run-1762539301055.json b/sepolia/2025-11-07-upgrade-fault-proofs/records/DeployDisputeGames.s.sol/11155111/run-1762539301055.json new file mode 100644 index 00000000..37642625 --- /dev/null +++ b/sepolia/2025-11-07-upgrade-fault-proofs/records/DeployDisputeGames.s.sol/11155111/run-1762539301055.json @@ -0,0 +1,86 @@ +{ + "transactions": [ + { + "hash": "0x1acc71fe9278c821be87cb7adaee7253dda2736c6c2a6e2c2752af52531f5195", + "transactionType": "CREATE", + "contractName": "FaultDisputeGame", + "contractAddress": "0xf0b64b080548b1f688356b9cf880076c2145f79a", + "function": null, + "arguments": [ + "(0, 0x03caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b, 73, 30, 10800, 302400, 0x07BABE08EE4D07dBA236530183B24055535A7011, 0xd3683e4947A7769603Ab6418eC02f000CE3cF30b, 0x2fF5cC82dBf333Ea30D8ee462178ab1707315355, 84532)" + ], + "transaction": { + "from": "0x7f10098bd53519c739ca8a404afe127647d94774", + "gas": "0x538b43", + "value": "0x0", + "input": "0x6101c06040523480156200001257600080fd5b50604051620053023803806200530283398101604081905262000035916200052d565b620000436001607e62000600565b60ff16816040015111156200006b57604051633beff19960e11b815260040160405180910390fd5b60001981606001511480620000955750604081015160608201516200009290600162000626565b10155b15620000b45760405163e62ccf3960e01b815260040160405180910390fd5b600281606001511015620000db5760405163e62ccf3960e01b815260040160405180910390fd5b6001600160401b0380168160c001516001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000128573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014e919062000641565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b2919062000661565b1115620001d25760405163b4e1243360e01b815260040160405180910390fd5b6000620001f782608001516001600160401b03166200048060201b62000baf1760201c565b6200020d906001600160401b031660026200067b565b905060008260c001516001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027a919062000641565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002de919062000661565b6200030184608001516001600160401b03166200048060201b62000baf1760201c565b6001600160401b031662000316919062000626565b905060006200033183836200048360201b6200318b1760201c565b90506001600160401b038111156200035c5760405163235dfb2b60e21b815260040160405180910390fd5b6200037f8460a001516001600160401b03166200048060201b62000baf1760201c565b6001600160401b0316816001600160401b03161115620003b25760405163235dfb2b60e21b815260040160405180910390fd5b63ffffffff8016620003d9856000015163ffffffff166200048060201b62000baf1760201c565b63ffffffff1603620003fe5760405163073ed16760e31b815260040160405180910390fd5b5050815163ffffffff1661012090815260208301516080908152604084015160a0908152606085015160c0908152918501516001600160401b039081166101a052908501511660e0908152908401516001600160a01b03908116610100908152918501518116610140529084015116610160529091015161018052506200069d565b90565b600081831162000494578162000496565b825b9392505050565b60405161014081016001600160401b0381118282101715620004cf57634e487b7160e01b600052604160045260246000fd5b60405290565b805163ffffffff81168114620004ea57600080fd5b919050565b80516001600160401b0381168114620004ea57600080fd5b6001600160a01b03811681146200051d57600080fd5b50565b8051620004ea8162000507565b600061014082840312156200054157600080fd5b6200054b6200049d565b6200055683620004d5565b81526020830151602082015260408301516040820152606083015160608201526200058460808401620004ef565b60808201526200059760a08401620004ef565b60a0820152620005aa60c0840162000520565b60c0820152620005bd60e0840162000520565b60e0820152610100620005d281850162000520565b90820152610120928301519281019290925250919050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8416808210156200061d576200061d620005ea565b90039392505050565b600082198211156200063c576200063c620005ea565b500190565b6000602082840312156200065457600080fd5b8151620004968162000507565b6000602082840312156200067457600080fd5b5051919050565b6000816000190483118215151615620006985762000698620005ea565b500290565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051614ac36200083f600039600081816106a701528181611a6401528181611ace0152611b000152600081816109bb01526130e301526000818161062a01528181611f74015281816120660152818161210e015281816121840152818161229e01526125fd015260008181610530015281816114e0015281816115aa01528181611e4a015261253501526000818161084c015281816125d4015261314f0152600081816104dc0152818161197d01528181612c900152612e49015260008181610a0e01528181610d930152818161190601528181611b2f01528181611b8a015281816127dd015261281d015260008181610a41015281816117c30152818161188f01528181611a9f01528181612b3901528181612fca015281816135c901528181613af901528181613c1401528181613c720152613cbd015260008181610ae80152818161184b0152818161195101528181612861015281816128ce01528181612ad20152612b5a01526000818161075c0152612bdd0152614ac36000f3fe6080604052600436106102ff5760003560e01c806370872aa511610190578063c395e1ca116100dc578063dabd396d11610095578063f8f43ff61161006f578063f8f43ff614610a95578063fa24f74314610ab5578063fa315aa914610ad9578063fe2bbeb214610b0c57600080fd5b8063dabd396d146109ff578063ec5e630814610a32578063eff0f59214610a6557600080fd5b8063c395e1ca146108d8578063c6f0308c146108f8578063cf09e0d01461096c578063d5d44d801461098c578063d6ae3cd5146109ac578063d8cc1a3c146109df57600080fd5b80638d450a9511610149578063bbdc02db11610123578063bbdc02db14610835578063bcef3b5514610876578063bd8da9561461088b578063c0d8bb74146108ab57600080fd5b80638d450a951461074d57806399735e3214610780578063a445ece61461079557600080fd5b806370872aa5146106de578063786b844b146106f35780637b0f0adc146107085780638129fc1c1461071b5780638980e0cc146107235780638b85902b1461073857600080fd5b80633e3ac9121161024f5780635a5fa2d91161020857806360e27464116101e257806360e27464146106635780636361506d146106835780636b6716c0146106985780636f034409146106cb57600080fd5b80635a5fa2d9146105fb5780635c0cba331461061b578063609d33341461064e57600080fd5b80633e3ac912146105005780633fc8cef314610521578063472777c614610554578063529d6a8c1461056757806354fd4d501461059457806357da950e146105cb57600080fd5b806325fc2ace116102bc57806330dbe5701161029657806330dbe57014610466578063378dd48c1461049e57806337b1b229146104b85780633a768463146104cd57600080fd5b806325fc2ace146104125780632810e1d6146104315780632ad69aeb1461044657600080fd5b8063019351301461030457806303c2924d1461032657806319effeb414610346578063200d2ed21461038a578063222abf45146103b8578063250e69bd146103f8575b600080fd5b34801561031057600080fd5b5061032461031f3660046143a2565b610b3c565b005b34801561033257600080fd5b506103246103413660046143fc565b610d1a565b34801561035257600080fd5b5060005461036d90600160401b90046001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b34801561039657600080fd5b506000546103ab90600160801b900460ff1681565b6040516103819190614455565b3480156103c457600080fd5b506103e86103d336600461447d565b600c6020526000908152604090205460ff1681565b6040519015158152602001610381565b34801561040457600080fd5b50600a546103e89060ff1681565b34801561041e57600080fd5b506008545b604051908152602001610381565b34801561043d57600080fd5b506103ab6111c5565b34801561045257600080fd5b506104236104613660046143fc565b611345565b34801561047257600080fd5b50600154610486906001600160a01b031681565b6040516001600160a01b039091168152602001610381565b3480156104aa57600080fd5b50600d546103ab9060ff1681565b3480156104c457600080fd5b50610486611376565b3480156104d957600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610486565b34801561050c57600080fd5b506000546103e890600160901b900460ff1681565b34801561052d57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610486565b61032461056236600461449a565b611387565b34801561057357600080fd5b5061042361058236600461447d565b60036020526000908152604090205481565b3480156105a057600080fd5b506040805180820190915260058152640312e382e360dc1b60208201525b6040516103819190614513565b3480156105d757600080fd5b506008546009546105e6919082565b60408051928352602083019190915201610381565b34801561060757600080fd5b50610423610616366004614526565b611399565b34801561062757600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610486565b34801561065a57600080fd5b506105be6113d3565b34801561066f57600080fd5b5061032461067e36600461447d565b6113e1565b34801561068f57600080fd5b5061042361167c565b3480156106a457600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061036d565b6103246106d936600461454d565b611688565b3480156106ea57600080fd5b50600954610423565b3480156106ff57600080fd5b50610324611ef9565b61032461071636600461449a565b612262565b61032461226f565b34801561072f57600080fd5b50600254610423565b34801561074457600080fd5b50610423612690565b34801561075957600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610423565b34801561078c57600080fd5b5061042361269c565b3480156107a157600080fd5b506107f76107b0366004614526565b6007602052600090815260409020805460019091015460ff821691610100810463ffffffff1691650100000000009091046001600160801b0316906001600160a01b031684565b60408051941515855263ffffffff90931660208501526001600160801b03909116918301919091526001600160a01b03166060820152608001610381565b34801561084157600080fd5b5060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610381565b34801561088257600080fd5b506104236126a6565b34801561089757600080fd5b5061036d6108a6366004614526565b6126b2565b3480156108b757600080fd5b506104236108c636600461447d565b600b6020526000908152604090205481565b3480156108e457600080fd5b506104236108f336600461458e565b612845565b34801561090457600080fd5b50610918610913366004614526565b612985565b6040805163ffffffff90981688526001600160a01b03968716602089015295909416948601949094526001600160801b039182166060860152608085015291821660a08401521660c082015260e001610381565b34801561097857600080fd5b5060005461036d906001600160401b031681565b34801561099857600080fd5b506104236109a736600461447d565b6129f8565b3480156109b857600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610423565b3480156109eb57600080fd5b506103246109fa3660046145b7565b612a50565b348015610a0b57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061036d565b348015610a3e57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610423565b348015610a7157600080fd5b506103e8610a80366004614526565b60046020526000908152604090205460ff1681565b348015610aa157600080fd5b50610324610ab036600461449a565b612de1565b348015610ac157600080fd5b50610aca61314d565b60405161038193929190614642565b348015610ae557600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610423565b348015610b1857600080fd5b506103e8610b27366004614526565b60066020526000908152604090205460ff1681565b60008054600160801b900460ff166002811115610b5b57610b5b61441e565b14610b795760405163067fe19560e41b815260040160405180910390fd5b600054600160901b900460ff1615610ba45760405163075173a960e11b815260040160405180910390fd5b610bb2610baf6126a6565b90565b610bc9610bc43686900386018661467d565b6131a5565b14610be757604051639cc00b5b60e01b815260040160405180910390fd5b82606001358282604051610bfc9291906146f0565b604051809103902014610c225760405163d81d583b60e01b815260040160405180910390fd5b6000610c6b610c6684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061320192505050565b613255565b90506000610c9282600881518110610c8557610c85614700565b60200260200101516133d9565b9050602081511115610cb75760405163d81d583b60e01b815260040160405180910390fd5b602081810151825190910360031b1c610cce612690565b8103610ced57604051630b8ed88360e41b815260040160405180910390fd5b5050600180546001600160a01b0319163317905550506000805460ff60901b1916600160901b1790555050565b60008054600160801b900460ff166002811115610d3957610d3961441e565b14610d575760405163067fe19560e41b815260040160405180910390fd5b600060028381548110610d6c57610d6c614700565b906000526020600020906005020190506000610d87846126b2565b90506001600160401b037f000000000000000000000000000000000000000000000000000000000000000081169082161015610dd65760405163f2440b5360e01b815260040160405180910390fd5b60008481526006602052604090205460ff1615610e065760405163f1a9458160e01b815260040160405180910390fd5b6000848152600560205260409020805480158015610e2357508515155b15610e85578354600160201b90046001600160a01b031660008115610e485781610e57565b60018601546001600160a01b03165b9050610e63818761345b565b505050600094855250506006602052505060409020805460ff19166001179055565b6000868152600760209081526040918290208251608081018452815460ff81161515808352610100820463ffffffff16948301949094526501000000000090046001600160801b031693810193909352600101546001600160a01b03166060830152610f09576001600160801b036040820152600181526000869003610f09578195505b600086826020015163ffffffff16610f21919061472c565b90506000838211610f325781610f34565b835b602084015190915063ffffffff165b8181101561103a576000868281548110610f5f57610f5f614700565b6000918252602080832090910154808352600690915260409091205490915060ff16610f9e57604051634d03b32360e11b815260040160405180910390fd5b600060028281548110610fb357610fb3614700565b600091825260209091206005909102018054909150600160201b90046001600160a01b0316158015610ff95750600481015460408701516001600160801b039182169116115b156110255760018101546001600160a01b0316606087015260048101546001600160801b031660408701525b5050808061103290614744565b915050610f43565b5063ffffffff818116602085810191825260008c815260079091526040908190208651815493519288015164ffffffffff1990941690151564ffffffff00191617610100929094169182029390931774ffffffffffffffffffffffffffffffff00000000001916650100000000006001600160801b03909316929092029190911782556060850151600190920180546001600160a01b0319166001600160a01b03909316929092179091558490036111ba57606083015160008a8152600660205260409020805460ff19166001179055891580156111215750600054600160901b900460ff165b15611167576001546001600160a01b031661113c818a61345b565b88546001600160a01b03909116600160201b02640100000000600160c01b03199091161788556111b8565b6111946001600160a01b0382161561117f578161118e565b60018901546001600160a01b03165b8961345b565b8754640100000000600160c01b031916600160201b6001600160a01b038316021788555b505b505050505050505050565b600080600054600160801b900460ff1660028111156111e6576111e661441e565b146112045760405163067fe19560e41b815260040160405180910390fd5b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85460ff1661124f57604051634d03b32360e11b815260040160405180910390fd5b60006001600160a01b0316600260008154811061126e5761126e614700565b6000918252602090912060059091020154600160201b90046001600160a01b03161461129b57600161129e565b60025b600080546001600160401b034216600160401b026fffffffffffffffff000000000000000019821681178355929350839260ff60801b191670ffffffffffffffffff00000000000000001990911617600160801b8360028111156113045761130461441e565b0217905560028111156113195761131961441e565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a290565b6005602052816000526040600020818154811061136157600080fd5b90600052602060002001600091509150505481565b6000611382600061349d565b905090565b6113948383836001611688565b505050565b600081815260076020908152604080832060059092528220805482546113ca90610100900463ffffffff168261475d565b95945050505050565b6060611382605460206134c0565b6113e9611ef9565b60006002600d5460ff1660028111156114045761140461441e565b0361142857506001600160a01b0381166000908152600b602052604090205461147e565b6001600d5460ff1660028111156114415761144161441e565b0361146557506001600160a01b03811660009081526003602052604090205461147e565b6040516301e28f7d60e21b815260040160405180910390fd5b6001600160a01b0382166000908152600c602052604090205460ff16611542576001600160a01b038281166000818152600c602052604090819020805460ff1916600117905551637eee288d60e01b81526004810191909152602481018390527f000000000000000000000000000000000000000000000000000000000000000090911690637eee288d90604401600060405180830381600087803b15801561152657600080fd5b505af115801561153a573d6000803e3d6000fd5b505050505050565b80600003611563576040516317bfe5f760e01b815260040160405180910390fd5b6001600160a01b038281166000818152600b602090815260408083208390556003909152808220919091555163f3fef3a360e01b81526004810191909152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063f3fef3a390604401600060405180830381600087803b1580156115f057600080fd5b505af1158015611604573d6000803e3d6000fd5b505050506000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611655576040519150601f19603f3d011682016040523d82523d6000602084013e61165a565b606091505b5050905080611394576040516383e6cc6b60e01b815260040160405180910390fd5b60006113826034613502565b60008054600160801b900460ff1660028111156116a7576116a761441e565b146116c55760405163067fe19560e41b815260040160405180910390fd5b6000600284815481106116da576116da614700565b60009182526020918290206040805160e0810182526005909302909101805463ffffffff811684526001600160a01b03600160201b90910481169484019490945260018101549093169082015260028201546001600160801b03908116606083015260038301546080830181905260049093015480821660a0840152600160801b90041660c0820152915085146117845760405163180a019960e11b815260040160405180910390fd5b60a0810151600083156001600160801b0383161760011b905060006117b1826001600160801b0316613522565b60ff1690508615806117ec57506117e97f0000000000000000000000000000000000000000000000000000000000000000600261472c565b81145b80156117f6575084155b15611814576040516329098def60e21b815260040160405180910390fd5b600054600160901b900460ff16801561182b575086155b156118495760405163075173a960e11b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081111561188a576040516356f57b2b60e01b815260040160405180910390fd5b6118b57f0000000000000000000000000000000000000000000000000000000000000000600161472c565b81036118c7576118c78688858861358e565b346118d183612845565b146118ef57604051638620aa1960e01b815260040160405180910390fd5b60006118fa886126b2565b90506001600160401b037f000000000000000000000000000000000000000000000000000000000000000081169082160361194857604051630ce0744560e21b815260040160405180910390fd5b600061197560017f000000000000000000000000000000000000000000000000000000000000000061475d565b8303611a98577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fd9190614774565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5e9190614791565b611a91907f00000000000000000000000000000000000000000000000000000000000000006001600160401b03166147aa565b9050611b29565b611ac360017f000000000000000000000000000000000000000000000000000000000000000061475d565b8303611afd57611a917f00000000000000000000000000000000000000000000000000000000000000006001600160401b031660026147d5565b507f00000000000000000000000000000000000000000000000000000000000000006001600160401b03165b611b5c817f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316614804565b6001600160401b0316611b75836001600160401b031690565b6001600160401b03161115611bba57611bb7817f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316614804565b91505b6000604083901b421760008a8152608087901b6001600160801b038d1617602052604081209192509060008181526004602052604090205490915060ff1615611c16576040516380497e3b60e01b815260040160405180910390fd5b60016004600083815260200190815260200160002060006101000a81548160ff02191690831515021790555060026040518060e001604052808d63ffffffff16815260200160006001600160a01b03168152602001336001600160a01b03168152602001346001600160801b031681526020018c8152602001886001600160801b03168152602001846001600160801b0316815250908060018154018082558091505060019003906000526020600020906005020160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160020160006101000a8154816001600160801b0302191690836001600160801b031602179055506080820151816003015560a08201518160040160006101000a8154816001600160801b0302191690836001600160801b0316021790555060c08201518160040160106101000a8154816001600160801b0302191690836001600160801b031602179055505050600560008c81526020019081526020016000206001600280549050611e0d919061475d565b81546001810183556000928352602080842090910191909155338252600b9052604081208054349290611e4190849061472c565b925050819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015611ea357600080fd5b505af1158015611eb7573d6000803e3d6000fd5b50506040513393508d92508e91507f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be90600090a4505050505050505050505050565b6002600d5460ff166002811115611f1257611f1261441e565b1480611f3457506001600d5460ff166002811115611f3257611f3261441e565b145b15611f3b57565b6000600d5460ff166002811115611f5457611f5461441e565b14611f72576040516301e28f7d60e21b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff4919061482c565b156120125760405163379a7ed960e01b815260040160405180910390fd5b600054600160401b90046001600160401b03166001600160401b031660000361204e57604051636082930560e11b815260040160405180910390fd5b604051630314d2b360e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630314d2b390602401602060405180830381865afa1580156120b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d9919061482c565b9050806120f957604051634851bd9b60e01b815260040160405180910390fd5b6040516317cf21a960e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906317cf21a990602401600060405180830381600087803b15801561215a57600080fd5b505af192505050801561216b575060015b506040516324b5ce0b60e11b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063496b9c1690602401602060405180830381865afa1580156121d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f7919061482c565b9050801561221157600d805460ff1916600117905561221f565b600d805460ff191660021790555b600d546040517f9908eaac0645df9d0704d06adc9e07337c951de2f06b5f2836151d48d5e4722f916122569160ff90911690614455565b60405180910390a15050565b6113948383836000611688565b600054600160881b900460ff16156122995760405162dc149f60e41b815260040160405180910390fd5b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d83ef2676040518163ffffffff1660e01b81526004016040805180830381865afa1580156122f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231d9190614849565b90925090508161234057604051633535e1d960e11b815260040160405180910390fd5b6040805180820190915282815260200181905260088290556009819055607a361461237e57604051639824bdab60e01b815260040160405180910390fd5b80612387612690565b116123b9576123946126a6565b60405163f40239db60e01b81526004016123b091815260200190565b60405180910390fd5b6040805160e08101825263ffffffff81526000602082015260029181016123de611376565b6001600160a01b03168152602001346001600160801b031681526020016124036126a6565b815260016020820152604001426001600160801b0390811690915282546001808201855560009485526020808620855160059094020180549186015163ffffffff9094166001600160c01b031990921691909117600160201b6001600160a01b0394851602178155604085015191810180546001600160a01b031916929093169190911790915560608301516002820180546fffffffffffffffffffffffffffffffff19169184169190911790556080830151600382015560a083015160c090930151928216600160801b9390921692909202176004909101558054600160881b60ff60881b199091161781553490600b906124fd611376565b6001600160a01b03166001600160a01b03168152602001908152602001600020600082825461252c919061472c565b925050819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561258e57600080fd5b505af11580156125a2573d6000803e3d6000fd5b50506000805467ffffffffffffffff1916426001600160401b0316179055505060408051630f27ce5f60e21b815290517f000000000000000000000000000000000000000000000000000000000000000063ffffffff1692507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691633c9f397c9160048083019260209291908290030181865afa158015612650573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612674919061486d565b600a805460ff191663ffffffff92909216929092141790555050565b60006113826054613502565b6000611382612690565b60006113826014613502565b600080600054600160801b900460ff1660028111156126d3576126d361441e565b146126f15760405163067fe19560e41b815260040160405180910390fd5b60006002838154811061270657612706614700565b600091825260208220600590910201805490925063ffffffff9081161461276c57815460028054909163ffffffff1690811061274457612744614700565b906000526020600020906005020160040160109054906101000a90046001600160801b031690505b600482015460009061279590600160801b90046001600160401b03165b6001600160401b031690565b6127a8906001600160401b03164261475d565b6127be612789846001600160801b031660401c90565b6001600160401b03166127d1919061472c565b90506001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166001600160401b0316816001600160401b03161161281b57806113ca565b7f000000000000000000000000000000000000000000000000000000000000000095945050505050565b60008061285a836001600160801b0316613522565b60ff1690507f00000000000000000000000000000000000000000000000000000000000000008111156128a0576040516356f57b2b60e01b815260040160405180910390fd5b642e90edd00062061a806311e1a30060006128bb83836148a9565b9050670de0b6b3a764000060006128f2827f00000000000000000000000000000000000000000000000000000000000000006148bd565b9050600061291061290b670de0b6b3a7640000866148bd565b613683565b9050600061291e8484613899565b9050600061292c83836138e8565b9050600061293982613916565b9050600061295882612953670de0b6b3a76400008f6148bd565b613a93565b905060006129668b836138e8565b9050612972818d6148bd565b9f9e505050505050505050505050505050565b6002818154811061299557600080fd5b60009182526020909120600590910201805460018201546002830154600384015460049094015463ffffffff84169550600160201b9093046001600160a01b03908116949216926001600160801b03918216929180821691600160801b90041687565b60006002600d5460ff166002811115612a1357612a1361441e565b03612a3457506001600160a01b03166000908152600b602052604090205490565b506001600160a01b031660009081526003602052604090205490565b60008054600160801b900460ff166002811115612a6f57612a6f61441e565b14612a8d5760405163067fe19560e41b815260040160405180910390fd5b600060028781548110612aa257612aa2614700565b6000918252602082206005919091020160048101549092506001600160801b0316908715821760011b9050612af87f0000000000000000000000000000000000000000000000000000000000000000600161472c565b612b0a826001600160801b0316613522565b60ff1614612b2b57604051630bea7bb360e31b815260040160405180910390fd5b6000808915612c0757612b7e7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061475d565b6001901b612b94846001600160801b0316613ac4565b6001600160801b0316612ba791906148dc565b15612bdb57612bd2612bc360016001600160801b0387166148f0565b865463ffffffff166000613ae2565b60030154612bfd565b7f00000000000000000000000000000000000000000000000000000000000000005b9150849050612c28565b60038501549150612c25612bc36001600160801b0386166001614910565b90505b600882901b60088a8a604051612c3f9291906146f0565b6040518091039020901b14612c675760405163696550ff60e01b815260040160405180910390fd5b6000612c728c613bab565b90506000612c81836003015490565b6040516370a6769960e11b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e14ced3290612cd5908f908f908f908f908a9060040161495b565b6020604051808303816000875af1158015612cf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d189190614791565b600485015491149150600090600290612d39906001600160801b0316613522565b612d4b896001600160801b0316613522565b612d559190614995565b612d5f91906149b8565b60ff161590508115158103612d875760405163fb4e40dd60e01b815260040160405180910390fd5b8754600160201b90046001600160a01b031615612db757604051639071e6af60e01b815260040160405180910390fd5b50508554640100000000600160c01b03191633600160201b02179095555050505050505050505050565b60008054600160801b900460ff166002811115612e0057612e0061441e565b14612e1e5760405163067fe19560e41b815260040160405180910390fd5b600080600080612e2d86613bda565b93509350935093506000612e4385858585613e49565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec99190614774565b905060018903612f73576001600160a01b0381166352f0f3ad8a84612eef610baf61167c565b6040516001600160e01b031960e086901b16815260048101939093526024830191909152604482015260206064820152608481018a905260a4015b6020604051808303816000875af1158015612f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6d9190614791565b506111ba565b60028903612f92576001600160a01b0381166352f0f3ad8a8489612eef565b60038903612fb1576001600160a01b0381166352f0f3ad8a8487612eef565b600489036130be576000612fee6001600160801b0385167f0000000000000000000000000000000000000000000000000000000000000000613ee8565b600954612ffb919061472c565b61300690600161472c565b9050613010612690565b81106130235761301e612690565b613025565b805b90506001600160a01b0382166352f0f3ad8b8560405160e084901b6001600160e01b03191681526004810192909252602482015260c084901b604482015260086064820152608481018b905260a4016020604051808303816000875af1158015613093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b79190614791565b50506111ba565b60058903613131576040516352f0f3ad60e01b8152600481018a9052602481018390527f000000000000000000000000000000000000000000000000000000000000000060c01b604482015260086064820152608481018890526001600160a01b038216906352f0f3ad9060a401612f2a565b604051600162ec819b60e01b0319815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006000606061317a6126a6565b91506131846113d3565b9050909192565b600081831161319a578161319c565b825b90505b92915050565b600081600001518260200151836040015184606001516040516020016131e4949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b6040805180820190915260008082526020820152815160000361323757604051635ab458fb60e01b815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b6060600080600061326585613f15565b9194509250905060018160018111156132805761328061441e565b1461329e576040516325ce355f60e11b815260040160405180910390fd5b84516132aa838561472c565b146132c857604051630b8aa6f760e31b815260040160405180910390fd5b604080516020808252610420820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816132df5790505093506000835b86518110156133cd576000806133526040518060400160405280858c60000151613336919061475d565b8152602001858c6020015161334b919061472c565b9052613f15565b50915091506040518060400160405280838361336e919061472c565b8152602001848b60200151613383919061472c565b81525088858151811061339857613398614700565b60209081029190910101526133ae60018561472c565b93506133ba818361472c565b6133c4908461472c565b9250505061330c565b50845250919392505050565b606060008060006133e985613f15565b9194509250905060008160018111156134045761340461441e565b14613422576040516307fe6cb960e21b815260040160405180910390fd5b61342c828461472c565b85511461344c57604051630b8aa6f760e31b815260040160405180910390fd5b6113ca8560200151848461420b565b60028101546001600160a01b038316600090815260036020526040812080546001600160801b039093169290919061349490849061472c565b90915550505050565b6000806134b23660011981013560f01c900390565b929092013560601c92915050565b606060006134d63660011981013560f01c900390565b905060405191508282528284820160208401378260208301016000815260208101604052505092915050565b6000806135173660011981013560f01c900390565b929092013592915050565b7e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b6001600160401b03831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b60006135a46001600160801b0384166001614910565b905060006135b482866001613ae2565b9050600086901a838061361657506135ed60027f00000000000000000000000000000000000000000000000000000000000000006148dc565b6004830154600290613607906001600160801b0316613522565b61361191906149b8565b60ff16145b156136555760ff811660011480613630575060ff81166002145b6136505760405163f40239db60e01b8152600481018890526024016123b0565b61367a565b60ff81161561367a5760405163f40239db60e01b8152600481018890526024016123b0565b50505050505050565b6001600160801b03811160071b81811c6001600160401b031060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c60ff1060031b17600082136136d857631615e6386000526004601cfd5b7ff8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffff6f8421084210842108cc6318c6db6d54be83831c1c601f161a1890811b609f90811c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d6c8c3f38e95a6b1ff2ab1c3b343619018302821d6d02384773bdf1ac5676facced60901901830290911d6cb9a025d814b29c212b8b1a07cd1901909102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a5506029190037d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b60007812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f218311670de0b6b3a7640000021582026138d657637c5f487d6000526004601cfd5b50670de0b6b3a7640000919091020490565b6000816000190483118202156139065763bac65e5b6000526004601cfd5b50670de0b6b3a764000091020490565b600068023f2fa8f6da5b9d2819821361392e57919050565b680755bf798b4a1bf1e5821261394c5763a37bfec96000526004601cfd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b600061319c670de0b6b3a764000083613aab86613683565b613ab591906149da565b613abf9190614a5f565b613916565b600080613ad083613522565b600160ff919091161b90920392915050565b60008082613b2257613b1d6001600160801b0386167f000000000000000000000000000000000000000000000000000000000000000061429f565b613b34565b613b34856001600160801b031661430e565b905060028481548110613b4957613b49614700565b906000526020600020906005020191505b60048201546001600160801b03828116911614613ba357815460028054909163ffffffff16908110613b8e57613b8e614700565b90600052602060002090600502019150613b5a565b509392505050565b6000806000806000613bbc86613bda565b9350935093509350613bd084848484613e49565b9695505050505050565b6000806000806000859050600060028281548110613bfa57613bfa614700565b6000918252602090912060059091020160048101549091507f000000000000000000000000000000000000000000000000000000000000000090613c46906001600160801b0316613522565b60ff1611613c67576040516359a5ae1160e11b815260040160405180910390fd5b6000815b60048301547f000000000000000000000000000000000000000000000000000000000000000090613ca4906001600160801b0316613522565b60ff169250821115613d1957825463ffffffff16613ce37f0000000000000000000000000000000000000000000000000000000000000000600161472c565b8303613ced578391505b60028181548110613d0057613d00614700565b9060005260206000209060050201935080945050613c6b565b600481810154908401546001600160801b0391821691166000816001600160801b0316613d5e613d52856001600160801b031660011c90565b6001600160801b031690565b6001600160801b03161490508015613df7576000613d84836001600160801b0316613ac4565b6001600160801b03161115613dd4576000613db4613dac60016001600160801b0386166148f0565b896001613ae2565b6003810154600490910154909c506001600160801b03169a50613dda9050565b6008549a505b600386015460048701549099506001600160801b03169750613e3b565b6000613e10613dac6001600160801b0385166001614910565b6003808901546004808b015492840154930154909e506001600160801b039182169d50919b50169850505b505050505050509193509193565b60006001600160801b03841615613ea45760408051602081018790526001600160801b038087169282019290925260608101859052908316608082015260a001604051602081830303815290604052805190602001206113ca565b8282604051602001613ec99291909182526001600160801b0316602082015260400190565b6040516020818303038152906040528051906020012095945050505050565b600080613ef484613522565b60ff1690508083036001841b600180831b0386831b17039250505092915050565b60008060008360000151600003613f3f57604051635ab458fb60e01b815260040160405180910390fd5b6020840151805160001a607f8111613f64576000600160009450945094505050614204565b60b78111613ffc576000613f7960808361475d565b905080876000015111613f9f576040516366c9448560e01b815260040160405180910390fd5b6001838101516001600160f81b0319169082148015613fcb5750600160ff1b6001600160f81b03198216105b15613fe95760405163babb01dd60e01b815260040160405180910390fd5b5060019550935060009250614204915050565b60bf81116140de57600061401160b78361475d565b905080876000015111614037576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b03191660008190036140685760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c603781116140975760405163babb01dd60e01b815260040160405180910390fd5b6140a1818461472c565b8951116140c1576040516366c9448560e01b815260040160405180910390fd5b6140cc83600161472c565b97509550600094506142049350505050565b60f7811161412a5760006140f360c08361475d565b905080876000015111614119576040516366c9448560e01b815260040160405180910390fd5b600195509350849250614204915050565b600061413760f78361475d565b90508087600001511161415d576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b031916600081900361418e5760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c603781116141bd5760405163babb01dd60e01b815260040160405180910390fd5b6141c7818461472c565b8951116141e7576040516366c9448560e01b815260040160405180910390fd5b6141f283600161472c565b97509550600194506142049350505050565b9193909250565b6060816001600160401b0381111561422557614225614667565b6040519080825280601f01601f19166020018201604052801561424f576020820181803683370190505b5090508115614298576000614264848661472c565b90506020820160005b8481101561428557828101518282015260200161426d565b84811115614294576000858301525b5050505b9392505050565b6000816142b4846001600160801b0316613522565b60ff16116142ca5763b34b5c226000526004601cfd5b6142d38361430e565b9050816142e8826001600160801b0316613522565b60ff161161319f5761319c6142fe83600161472c565b6001600160801b03831690614332565b6000811960018301168161432182613522565b60ff169390931c8015179392505050565b60008061433e84613522565b60ff169050808303600180821b0385821b179250505092915050565b60008083601f84011261436c57600080fd5b5081356001600160401b0381111561438357600080fd5b60208301915083602082850101111561439b57600080fd5b9250929050565b600080600083850360a08112156143b857600080fd5b60808112156143c657600080fd5b5083925060808401356001600160401b038111156143e357600080fd5b6143ef8682870161435a565b9497909650939450505050565b6000806040838503121561440f57600080fd5b50508035926020909101359150565b634e487b7160e01b600052602160045260246000fd5b6003811061445257634e487b7160e01b600052602160045260246000fd5b50565b6020810161446283614434565b91905290565b6001600160a01b038116811461445257600080fd5b60006020828403121561448f57600080fd5b813561429881614468565b6000806000606084860312156144af57600080fd5b505081359360208301359350604090920135919050565b6000815180845260005b818110156144ec576020818501810151868301820152016144d0565b818111156144fe576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061319c60208301846144c6565b60006020828403121561453857600080fd5b5035919050565b801515811461445257600080fd5b6000806000806080858703121561456357600080fd5b84359350602085013592506040850135915060608501356145838161453f565b939692955090935050565b6000602082840312156145a057600080fd5b81356001600160801b038116811461429857600080fd5b600080600080600080608087890312156145d057600080fd5b8635955060208701356145e28161453f565b945060408701356001600160401b03808211156145fe57600080fd5b61460a8a838b0161435a565b9096509450606089013591508082111561462357600080fd5b5061463089828a0161435a565b979a9699509497509295939492505050565b63ffffffff841681528260208201526060604082015260006113ca60608301846144c6565b634e487b7160e01b600052604160045260246000fd5b60006080828403121561468f57600080fd5b604051608081018181106001600160401b03821117156146bf57634e487b7160e01b600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561473f5761473f614716565b500190565b60006001820161475657614756614716565b5060010190565b60008282101561476f5761476f614716565b500390565b60006020828403121561478657600080fd5b815161429881614468565b6000602082840312156147a357600080fd5b5051919050565b60006001600160401b038083168185168083038211156147cc576147cc614716565b01949350505050565b60006001600160401b03808316818516818304811182151516156147fb576147fb614716565b02949350505050565b60006001600160401b038381169083168181101561482457614824614716565b039392505050565b60006020828403121561483e57600080fd5b81516142988161453f565b6000806040838503121561485c57600080fd5b505080516020909101519092909150565b60006020828403121561487f57600080fd5b815163ffffffff8116811461429857600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826148b8576148b8614893565b500490565b60008160001904831182151516156148d7576148d7614716565b500290565b6000826148eb576148eb614893565b500690565b60006001600160801b038381169083168181101561482457614824614716565b60006001600160801b038083168185168083038211156147cc576147cc614716565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061496f606083018789614932565b8281036020840152614982818688614932565b9150508260408301529695505050505050565b600060ff821660ff8416808210156149af576149af614716565b90039392505050565b600060ff8316806149cb576149cb614893565b8060ff84160691505092915050565b60006001600160ff1b0381841382841380821686840486111615614a0057614a00614716565b600160ff1b6000871282811687830589121615614a1f57614a1f614716565b60008712925087820587128484161615614a3b57614a3b614716565b87850587128184161615614a5157614a51614716565b505050929093029392505050565b600082614a6e57614a6e614893565b600160ff1b821460001984141615614a8857614a88614716565b50059056fea264697066735822122075c70c4154051a88cbed0ac70536a54db779f3d30e831b1083f705c1b425257864736f6c634300080f0033000000000000000000000000000000000000000000000000000000000000000003caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b0000000000000000000000000000000000000000000000000000000000000049000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000000000000000000049d4000000000000000000000000007babe08ee4d07dba236530183b24055535a7011000000000000000000000000d3683e4947a7769603ab6418ec02f000ce3cf30b0000000000000000000000002ff5cc82dbf333ea30d8ee462178ab17073153550000000000000000000000000000000000000000000000000000000000014a34", + "nonce": "0x0", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x8082b4730637f84bbd3a353e051f07d75c00a8bd27725d6453229a5af30592a2", + "transactionType": "CREATE", + "contractName": "PermissionedDisputeGame", + "contractAddress": "0x284a4cf8cb83d3377f8eadfff2414f2bfa68484b", + "function": null, + "arguments": [ + "(1, 0x03caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b, 73, 30, 10800, 302400, 0x07BABE08EE4D07dBA236530183B24055535A7011, 0x32cE910d9C6c8F78dc6779c1499aB05F281A054e, 0x2fF5cC82dBf333Ea30D8ee462178ab1707315355, 84532)", + "0x037637067c1DbE6d2430616d8f54Cb774Daa5999", + "0x8b8c52B04A38f10515C52670fcb23f3C4C44474F" + ], + "transaction": { + "from": "0x7f10098bd53519c739ca8a404afe127647d94774", + "gas": "0x55c89c", + "value": "0x0", + "input": "0x6102006040523480156200001257600080fd5b506040516200558c3803806200558c83398101604081905262000035916200053b565b82620000446001607e6200064a565b60ff16816040015111156200006c57604051633beff19960e11b815260040160405180910390fd5b60001981606001511480620000965750604081015160608201516200009390600162000670565b10155b15620000b55760405163e62ccf3960e01b815260040160405180910390fd5b600281606001511015620000dc5760405163e62ccf3960e01b815260040160405180910390fd5b6001600160401b0380168160c001516001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000129573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014f91906200068b565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b39190620006ab565b1115620001d35760405163b4e1243360e01b815260040160405180910390fd5b6000620001f882608001516001600160401b03166200048e60201b62000c4b1760201c565b6200020e906001600160401b03166002620006c5565b905060008260c001516001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000255573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027b91906200068b565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002df9190620006ab565b6200030284608001516001600160401b03166200048e60201b62000c4b1760201c565b6001600160401b031662000317919062000670565b905060006200033283836200049160201b6200236f1760201c565b90506001600160401b038111156200035d5760405163235dfb2b60e21b815260040160405180910390fd5b620003808460a001516001600160401b03166200048e60201b62000c4b1760201c565b6001600160401b0316816001600160401b03161115620003b35760405163235dfb2b60e21b815260040160405180910390fd5b63ffffffff8016620003da856000015163ffffffff166200048e60201b62000c4b1760201c565b63ffffffff1603620003ff5760405163073ed16760e31b815260040160405180910390fd5b5050815163ffffffff1661012090815260208301516080908152604084015160a0908152606085015160c0908152918501516001600160401b039081166101a052908501511660e0908152908401516001600160a01b03908116610100908152918501518116610140529084015181166101605292015161018052509182166101c052166101e05250620006e7565b90565b6000818311620004a25781620004a4565b825b9392505050565b60405161014081016001600160401b0381118282101715620004dd57634e487b7160e01b600052604160045260246000fd5b60405290565b805163ffffffff81168114620004f857600080fd5b919050565b80516001600160401b0381168114620004f857600080fd5b6001600160a01b03811681146200052b57600080fd5b50565b8051620004f88162000515565b60008060008385036101808112156200055357600080fd5b610140808212156200056457600080fd5b6200056e620004ab565b91506200057b86620004e3565b8252602086015160208301526040860151604083015260608601516060830152620005a960808701620004fd565b6080830152620005bc60a08701620004fd565b60a0830152620005cf60c087016200052e565b60c0830152620005e260e087016200052e565b60e0830152610100620005f78188016200052e565b8184015250610120808701518184015250819450620006188187016200052e565b935050506200062b61016085016200052e565b90509250925092565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff84168082101562000667576200066762000634565b90039392505050565b6000821982111562000686576200068662000634565b500190565b6000602082840312156200069e57600080fd5b8151620004a48162000515565b600060208284031215620006be57600080fd5b5051919050565b6000816000190483118215151615620006e257620006e262000634565b500290565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051614cca620008c2600039600081816105d9015281816117610152611f780152600081816108ad0152818161172f01528181611b330152611f4601526000818161071001528181612ae201528181612b4c0152612b7e015260008181610a5701526122c70152600081816106930152818161182d0152818161191f015281816119c701528181611a3d01528181612fa601526133050152600081816105660152818161157c0152818161164601528181612ec8015261323d0152600081816108e80152818161233301526132dc0152600081816105120152818161202d015281816129fb0152613a85015260008181610aaa01528181610e2f01528181611cc801528181611d080152818161298401528181612bad0152612c08015260008181610add015281816121ae015281816128410152818161290d01528181612b1d0152818161392e01528181613c1001528181613c6e01528181613cb9015281816142d601526143c5015260008181610b8401528181611d4c01528181611db9015281816128c9015281816129cf015281816138c7015261394f0152600081816107c501526139d20152614cca6000f3fe6080604052600436106103355760003560e01c806370872aa5116101ab578063c0d8bb74116100f7578063dabd396d11610095578063f8f43ff61161006f578063f8f43ff614610b31578063fa24f74314610b51578063fa315aa914610b75578063fe2bbeb214610ba857600080fd5b8063dabd396d14610a9b578063ec5e630814610ace578063eff0f59214610b0157600080fd5b8063cf09e0d0116100d1578063cf09e0d014610a08578063d5d44d8014610a28578063d6ae3cd514610a48578063d8cc1a3c14610a7b57600080fd5b8063c0d8bb7414610947578063c395e1ca14610974578063c6f0308c1461099457600080fd5b80638d450a9511610164578063a8e4fb901161013e578063a8e4fb901461089e578063bbdc02db146108d1578063bcef3b5514610912578063bd8da9561461092757600080fd5b80638d450a95146107b657806399735e32146107e9578063a445ece6146107fe57600080fd5b806370872aa514610747578063786b844b1461075c5780637b0f0adc146107715780638129fc1c146107845780638980e0cc1461078c5780638b85902b146107a157600080fd5b80633e3ac912116102855780635a5fa2d91161022357806360e27464116101fd57806360e27464146106cc5780636361506d146106ec5780636b6716c0146107015780636f0344091461073457600080fd5b80635a5fa2d9146106645780635c0cba3314610684578063609d3334146106b757600080fd5b8063529d6a8c1161025f578063529d6a8c1461059d578063534db0e2146105ca57806354fd4d50146105fd57806357da950e1461063457600080fd5b80633e3ac912146105365780633fc8cef314610557578063472777c61461058a57600080fd5b806325fc2ace116102f257806330dbe570116102cc57806330dbe5701461049c578063378dd48c146104d457806337b1b229146104ee5780633a7684631461050357600080fd5b806325fc2ace146104485780632810e1d6146104675780632ad69aeb1461047c57600080fd5b8063019351301461033a57806303c2924d1461035c57806319effeb41461037c578063200d2ed2146103c0578063222abf45146103ee578063250e69bd1461042e575b600080fd5b34801561034657600080fd5b5061035a6103553660046145a9565b610bd8565b005b34801561036857600080fd5b5061035a610377366004614603565b610db6565b34801561038857600080fd5b506000546103a390600160401b90046001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b3480156103cc57600080fd5b506000546103e190600160801b900460ff1681565b6040516103b7919061465c565b3480156103fa57600080fd5b5061041e610409366004614684565b600c6020526000908152604090205460ff1681565b60405190151581526020016103b7565b34801561043a57600080fd5b50600a5461041e9060ff1681565b34801561045457600080fd5b506008545b6040519081526020016103b7565b34801561047357600080fd5b506103e1611261565b34801561048857600080fd5b50610459610497366004614603565b6113e1565b3480156104a857600080fd5b506001546104bc906001600160a01b031681565b6040516001600160a01b0390911681526020016103b7565b3480156104e057600080fd5b50600d546103e19060ff1681565b3480156104fa57600080fd5b506104bc611412565b34801561050f57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104bc565b34801561054257600080fd5b5060005461041e90600160901b900460ff1681565b34801561056357600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104bc565b61035a6105983660046146a1565b611423565b3480156105a957600080fd5b506104596105b8366004614684565b60036020526000908152604090205481565b3480156105d657600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104bc565b34801561060957600080fd5b506040805180820190915260058152640312e382e360dc1b60208201525b6040516103b7919061471a565b34801561064057600080fd5b5060085460095461064f919082565b604080519283526020830191909152016103b7565b34801561067057600080fd5b5061045961067f36600461472d565b611435565b34801561069057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104bc565b3480156106c357600080fd5b5061062761146f565b3480156106d857600080fd5b5061035a6106e7366004614684565b61147d565b3480156106f857600080fd5b50610459611718565b34801561070d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006103a3565b61035a610742366004614754565b611724565b34801561075357600080fd5b50600954610459565b34801561076857600080fd5b5061035a6117b2565b61035a61077f3660046146a1565b611b1b565b61035a611b28565b34801561079857600080fd5b50600254610459565b3480156107ad57600080fd5b50610459611b7b565b3480156107c257600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610459565b3480156107f557600080fd5b50610459611b87565b34801561080a57600080fd5b5061086061081936600461472d565b6007602052600090815260409020805460019091015460ff821691610100810463ffffffff1691650100000000009091046001600160801b0316906001600160a01b031684565b60408051941515855263ffffffff90931660208501526001600160801b03909116918301919091526001600160a01b031660608201526080016103b7565b3480156108aa57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104bc565b3480156108dd57600080fd5b5060405163ffffffff7f00000000000000000000000000000000000000000000000000000000000000001681526020016103b7565b34801561091e57600080fd5b50610459611b91565b34801561093357600080fd5b506103a361094236600461472d565b611b9d565b34801561095357600080fd5b50610459610962366004614684565b600b6020526000908152604090205481565b34801561098057600080fd5b5061045961098f366004614795565b611d30565b3480156109a057600080fd5b506109b46109af36600461472d565b611e70565b6040805163ffffffff90981688526001600160a01b03968716602089015295909416948601949094526001600160801b039182166060860152608085015291821660a08401521660c082015260e0016103b7565b348015610a1457600080fd5b506000546103a3906001600160401b031681565b348015610a3457600080fd5b50610459610a43366004614684565b611ee3565b348015610a5457600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610459565b348015610a8757600080fd5b5061035a610a963660046147be565b611f3b565b348015610aa757600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006103a3565b348015610ada57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610459565b348015610b0d57600080fd5b5061041e610b1c36600461472d565b60046020526000908152604090205460ff1681565b348015610b3d57600080fd5b5061035a610b4c3660046146a1565b611fc5565b348015610b5d57600080fd5b50610b66612331565b6040516103b793929190614849565b348015610b8157600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610459565b348015610bb457600080fd5b5061041e610bc336600461472d565b60066020526000908152604090205460ff1681565b60008054600160801b900460ff166002811115610bf757610bf7614625565b14610c155760405163067fe19560e41b815260040160405180910390fd5b600054600160901b900460ff1615610c405760405163075173a960e11b815260040160405180910390fd5b610c4e610c4b611b91565b90565b610c65610c6036869003860186614884565b612389565b14610c8357604051639cc00b5b60e01b815260040160405180910390fd5b82606001358282604051610c989291906148f7565b604051809103902014610cbe5760405163d81d583b60e01b815260040160405180910390fd5b6000610d07610d0284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506123e592505050565b612439565b90506000610d2e82600881518110610d2157610d21614907565b60200260200101516125bd565b9050602081511115610d535760405163d81d583b60e01b815260040160405180910390fd5b602081810151825190910360031b1c610d6a611b7b565b8103610d8957604051630b8ed88360e41b815260040160405180910390fd5b5050600180546001600160a01b0319163317905550506000805460ff60901b1916600160901b1790555050565b60008054600160801b900460ff166002811115610dd557610dd5614625565b14610df35760405163067fe19560e41b815260040160405180910390fd5b600060028381548110610e0857610e08614907565b906000526020600020906005020190506000610e2384611b9d565b90506001600160401b037f000000000000000000000000000000000000000000000000000000000000000081169082161015610e725760405163f2440b5360e01b815260040160405180910390fd5b60008481526006602052604090205460ff1615610ea25760405163f1a9458160e01b815260040160405180910390fd5b6000848152600560205260409020805480158015610ebf57508515155b15610f21578354600160201b90046001600160a01b031660008115610ee45781610ef3565b60018601546001600160a01b03165b9050610eff818761263f565b505050600094855250506006602052505060409020805460ff19166001179055565b6000868152600760209081526040918290208251608081018452815460ff81161515808352610100820463ffffffff16948301949094526501000000000090046001600160801b031693810193909352600101546001600160a01b03166060830152610fa5576001600160801b036040820152600181526000869003610fa5578195505b600086826020015163ffffffff16610fbd9190614933565b90506000838211610fce5781610fd0565b835b602084015190915063ffffffff165b818110156110d6576000868281548110610ffb57610ffb614907565b6000918252602080832090910154808352600690915260409091205490915060ff1661103a57604051634d03b32360e11b815260040160405180910390fd5b60006002828154811061104f5761104f614907565b600091825260209091206005909102018054909150600160201b90046001600160a01b03161580156110955750600481015460408701516001600160801b039182169116115b156110c15760018101546001600160a01b0316606087015260048101546001600160801b031660408701525b505080806110ce9061494b565b915050610fdf565b5063ffffffff818116602085810191825260008c815260079091526040908190208651815493519288015164ffffffffff1990941690151564ffffffff00191617610100929094169182029390931774ffffffffffffffffffffffffffffffff00000000001916650100000000006001600160801b03909316929092029190911782556060850151600190920180546001600160a01b0319166001600160a01b039093169290921790915584900361125657606083015160008a8152600660205260409020805460ff19166001179055891580156111bd5750600054600160901b900460ff165b15611203576001546001600160a01b03166111d8818a61263f565b88546001600160a01b03909116600160201b02640100000000600160c01b0319909116178855611254565b6112306001600160a01b0382161561121b578161122a565b60018901546001600160a01b03165b8961263f565b8754640100000000600160c01b031916600160201b6001600160a01b038316021788555b505b505050505050505050565b600080600054600160801b900460ff16600281111561128257611282614625565b146112a05760405163067fe19560e41b815260040160405180910390fd5b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85460ff166112eb57604051634d03b32360e11b815260040160405180910390fd5b60006001600160a01b0316600260008154811061130a5761130a614907565b6000918252602090912060059091020154600160201b90046001600160a01b03161461133757600161133a565b60025b600080546001600160401b034216600160401b026fffffffffffffffff000000000000000019821681178355929350839260ff60801b191670ffffffffffffffffff00000000000000001990911617600160801b8360028111156113a0576113a0614625565b0217905560028111156113b5576113b5614625565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a290565b600560205281600052604060002081815481106113fd57600080fd5b90600052602060002001600091509150505481565b600061141e6000612681565b905090565b6114308383836001611724565b505050565b6000818152600760209081526040808320600590925282208054825461146690610100900463ffffffff1682614964565b95945050505050565b606061141e605460206126a4565b6114856117b2565b60006002600d5460ff1660028111156114a0576114a0614625565b036114c457506001600160a01b0381166000908152600b602052604090205461151a565b6001600d5460ff1660028111156114dd576114dd614625565b0361150157506001600160a01b03811660009081526003602052604090205461151a565b6040516301e28f7d60e21b815260040160405180910390fd5b6001600160a01b0382166000908152600c602052604090205460ff166115de576001600160a01b038281166000818152600c602052604090819020805460ff1916600117905551637eee288d60e01b81526004810191909152602481018390527f000000000000000000000000000000000000000000000000000000000000000090911690637eee288d90604401600060405180830381600087803b1580156115c257600080fd5b505af11580156115d6573d6000803e3d6000fd5b505050505050565b806000036115ff576040516317bfe5f760e01b815260040160405180910390fd5b6001600160a01b038281166000818152600b602090815260408083208390556003909152808220919091555163f3fef3a360e01b81526004810191909152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063f3fef3a390604401600060405180830381600087803b15801561168c57600080fd5b505af11580156116a0573d6000803e3d6000fd5b505050506000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146116f1576040519150601f19603f3d011682016040523d82523d6000602084013e6116f6565b606091505b5050905080611430576040516383e6cc6b60e01b815260040160405180910390fd5b600061141e60346126e6565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806117835750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6117a0576040516369c3779f60e11b815260040160405180910390fd5b6117ac84848484612706565b50505050565b6002600d5460ff1660028111156117cb576117cb614625565b14806117ed57506001600d5460ff1660028111156117eb576117eb614625565b145b156117f457565b6000600d5460ff16600281111561180d5761180d614625565b1461182b576040516301e28f7d60e21b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ad919061497b565b156118cb5760405163379a7ed960e01b815260040160405180910390fd5b600054600160401b90046001600160401b03166001600160401b031660000361190757604051636082930560e11b815260040160405180910390fd5b604051630314d2b360e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630314d2b390602401602060405180830381865afa15801561196e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611992919061497b565b9050806119b257604051634851bd9b60e01b815260040160405180910390fd5b6040516317cf21a960e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906317cf21a990602401600060405180830381600087803b158015611a1357600080fd5b505af1925050508015611a24575060015b506040516324b5ce0b60e11b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063496b9c1690602401602060405180830381865afa158015611a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab0919061497b565b90508015611aca57600d805460ff19166001179055611ad8565b600d805460ff191660021790555b600d546040517f9908eaac0645df9d0704d06adc9e07337c951de2f06b5f2836151d48d5e4722f91611b0f9160ff9091169061465c565b60405180910390a15050565b6114308383836000611724565b326001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b71576040516369c3779f60e11b815260040160405180910390fd5b611b79612f77565b565b600061141e60546126e6565b600061141e611b7b565b600061141e60146126e6565b600080600054600160801b900460ff166002811115611bbe57611bbe614625565b14611bdc5760405163067fe19560e41b815260040160405180910390fd5b600060028381548110611bf157611bf1614907565b600091825260208220600590910201805490925063ffffffff90811614611c5757815460028054909163ffffffff16908110611c2f57611c2f614907565b906000526020600020906005020160040160109054906101000a90046001600160801b031690505b6004820154600090611c8090600160801b90046001600160401b03165b6001600160401b031690565b611c93906001600160401b031642614964565b611ca9611c74846001600160801b031660401c90565b6001600160401b0316611cbc9190614933565b90506001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166001600160401b0316816001600160401b031611611d065780611466565b7f000000000000000000000000000000000000000000000000000000000000000095945050505050565b600080611d45836001600160801b0316613398565b60ff1690507f0000000000000000000000000000000000000000000000000000000000000000811115611d8b576040516356f57b2b60e01b815260040160405180910390fd5b642e90edd00062061a806311e1a3006000611da683836149ae565b9050670de0b6b3a76400006000611ddd827f00000000000000000000000000000000000000000000000000000000000000006149c2565b90506000611dfb611df6670de0b6b3a7640000866149c2565b613404565b90506000611e09848461361a565b90506000611e178383613669565b90506000611e2482613697565b90506000611e4382611e3e670de0b6b3a76400008f6149c2565b613814565b90506000611e518b83613669565b9050611e5d818d6149c2565b9f9e505050505050505050505050505050565b60028181548110611e8057600080fd5b60009182526020909120600590910201805460018201546002830154600384015460049094015463ffffffff84169550600160201b9093046001600160a01b03908116949216926001600160801b03918216929180821691600160801b90041687565b60006002600d5460ff166002811115611efe57611efe614625565b03611f1f57506001600160a01b03166000908152600b602052604090205490565b506001600160a01b031660009081526003602052604090205490565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611f9a5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b611fb7576040516369c3779f60e11b815260040160405180910390fd5b6115d6868686868686613845565b60008054600160801b900460ff166002811115611fe457611fe4614625565b146120025760405163067fe19560e41b815260040160405180910390fd5b60008060008061201186613bd6565b9350935093509350600061202785858585613e45565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ad91906149e1565b905060018903612157576001600160a01b0381166352f0f3ad8a846120d3610c4b611718565b6040516001600160e01b031960e086901b16815260048101939093526024830191909152604482015260206064820152608481018a905260a4015b6020604051808303816000875af115801561212d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215191906149fe565b50611256565b60028903612176576001600160a01b0381166352f0f3ad8a84896120d3565b60038903612195576001600160a01b0381166352f0f3ad8a84876120d3565b600489036122a25760006121d26001600160801b0385167f0000000000000000000000000000000000000000000000000000000000000000613ee4565b6009546121df9190614933565b6121ea906001614933565b90506121f4611b7b565b811061220757612202611b7b565b612209565b805b90506001600160a01b0382166352f0f3ad8b8560405160e084901b6001600160e01b03191681526004810192909252602482015260c084901b604482015260086064820152608481018b905260a4016020604051808303816000875af1158015612277573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229b91906149fe565b5050611256565b60058903612315576040516352f0f3ad60e01b8152600481018a9052602481018390527f000000000000000000000000000000000000000000000000000000000000000060c01b604482015260086064820152608481018890526001600160a01b038216906352f0f3ad9060a40161210e565b604051600162ec819b60e01b0319815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006000606061235e611b91565b915061236861146f565b9050909192565b600081831161237e5781612380565b825b90505b92915050565b600081600001518260200151836040015184606001516040516020016123c8949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b6040805180820190915260008082526020820152815160000361241b57604051635ab458fb60e01b815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b6060600080600061244985613f11565b91945092509050600181600181111561246457612464614625565b14612482576040516325ce355f60e11b815260040160405180910390fd5b845161248e8385614933565b146124ac57604051630b8aa6f760e31b815260040160405180910390fd5b604080516020808252610420820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816124c35790505093506000835b86518110156125b1576000806125366040518060400160405280858c6000015161251a9190614964565b8152602001858c6020015161252f9190614933565b9052613f11565b5091509150604051806040016040528083836125529190614933565b8152602001848b602001516125679190614933565b81525088858151811061257c5761257c614907565b6020908102919091010152612592600185614933565b935061259e8183614933565b6125a89084614933565b925050506124f0565b50845250919392505050565b606060008060006125cd85613f11565b9194509250905060008160018111156125e8576125e8614625565b14612606576040516307fe6cb960e21b815260040160405180910390fd5b6126108284614933565b85511461263057604051630b8aa6f760e31b815260040160405180910390fd5b61146685602001518484614207565b60028101546001600160a01b038316600090815260036020526040812080546001600160801b0390931692909190612678908490614933565b90915550505050565b6000806126963660011981013560f01c900390565b929092013560601c92915050565b606060006126ba3660011981013560f01c900390565b905060405191508282528284820160208401378260208301016000815260208101604052505092915050565b6000806126fb3660011981013560f01c900390565b929092013592915050565b60008054600160801b900460ff16600281111561272557612725614625565b146127435760405163067fe19560e41b815260040160405180910390fd5b60006002848154811061275857612758614907565b60009182526020918290206040805160e0810182526005909302909101805463ffffffff811684526001600160a01b03600160201b90910481169484019490945260018101549093169082015260028201546001600160801b03908116606083015260038301546080830181905260049093015480821660a0840152600160801b90041660c0820152915085146128025760405163180a019960e11b815260040160405180910390fd5b60a0810151600083156001600160801b0383161760011b9050600061282f826001600160801b0316613398565b60ff16905086158061286a57506128677f00000000000000000000000000000000000000000000000000000000000000006002614933565b81145b8015612874575084155b15612892576040516329098def60e21b815260040160405180910390fd5b600054600160901b900460ff1680156128a9575086155b156128c75760405163075173a960e11b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000811115612908576040516356f57b2b60e01b815260040160405180910390fd5b6129337f00000000000000000000000000000000000000000000000000000000000000006001614933565b8103612945576129458688858861429b565b3461294f83611d30565b1461296d57604051638620aa1960e01b815260040160405180910390fd5b600061297888611b9d565b90506001600160401b037f00000000000000000000000000000000000000000000000000000000000000008116908216036129c657604051630ce0744560e21b815260040160405180910390fd5b60006129f360017f0000000000000000000000000000000000000000000000000000000000000000614964565b8303612b16577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7b91906149e1565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612adc91906149fe565b612b0f907f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316614a17565b9050612ba7565b612b4160017f0000000000000000000000000000000000000000000000000000000000000000614964565b8303612b7b57612b0f7f00000000000000000000000000000000000000000000000000000000000000006001600160401b03166002614a42565b507f00000000000000000000000000000000000000000000000000000000000000006001600160401b03165b612bda817f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316614a71565b6001600160401b0316612bf3836001600160401b031690565b6001600160401b03161115612c3857612c35817f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316614a71565b91505b6000604083901b421760008a8152608087901b6001600160801b038d1617602052604081209192509060008181526004602052604090205490915060ff1615612c94576040516380497e3b60e01b815260040160405180910390fd5b60016004600083815260200190815260200160002060006101000a81548160ff02191690831515021790555060026040518060e001604052808d63ffffffff16815260200160006001600160a01b03168152602001336001600160a01b03168152602001346001600160801b031681526020018c8152602001886001600160801b03168152602001846001600160801b0316815250908060018154018082558091505060019003906000526020600020906005020160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160020160006101000a8154816001600160801b0302191690836001600160801b031602179055506080820151816003015560a08201518160040160006101000a8154816001600160801b0302191690836001600160801b0316021790555060c08201518160040160106101000a8154816001600160801b0302191690836001600160801b031602179055505050600560008c81526020019081526020016000206001600280549050612e8b9190614964565b81546001810183556000928352602080842090910191909155338252600b9052604081208054349290612ebf908490614933565b925050819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015612f2157600080fd5b505af1158015612f35573d6000803e3d6000fd5b50506040513393508d92508e91507f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be90600090a4505050505050505050505050565b600054600160881b900460ff1615612fa15760405162dc149f60e41b815260040160405180910390fd5b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d83ef2676040518163ffffffff1660e01b81526004016040805180830381865afa158015613001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130259190614a99565b90925090508161304857604051633535e1d960e11b815260040160405180910390fd5b6040805180820190915282815260200181905260088290556009819055607a361461308657604051639824bdab60e01b815260040160405180910390fd5b8061308f611b7b565b116130c15761309c611b91565b60405163f40239db60e01b81526004016130b891815260200190565b60405180910390fd5b6040805160e08101825263ffffffff81526000602082015260029181016130e6611412565b6001600160a01b03168152602001346001600160801b0316815260200161310b611b91565b815260016020820152604001426001600160801b0390811690915282546001808201855560009485526020808620855160059094020180549186015163ffffffff9094166001600160c01b031990921691909117600160201b6001600160a01b0394851602178155604085015191810180546001600160a01b031916929093169190911790915560608301516002820180546fffffffffffffffffffffffffffffffff19169184169190911790556080830151600382015560a083015160c090930151928216600160801b9390921692909202176004909101558054600160881b60ff60881b199091161781553490600b90613205611412565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546132349190614933565b925050819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561329657600080fd5b505af11580156132aa573d6000803e3d6000fd5b50506000805467ffffffffffffffff1916426001600160401b0316179055505060408051630f27ce5f60e21b815290517f000000000000000000000000000000000000000000000000000000000000000063ffffffff1692507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691633c9f397c9160048083019260209291908290030181865afa158015613358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061337c9190614abd565b600a805460ff191663ffffffff92909216929092141790555050565b7e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b6001600160401b03831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b6001600160801b03811160071b81811c6001600160401b031060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c60ff1060031b176000821361345957631615e6386000526004601cfd5b7ff8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffff6f8421084210842108cc6318c6db6d54be83831c1c601f161a1890811b609f90811c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d6c8c3f38e95a6b1ff2ab1c3b343619018302821d6d02384773bdf1ac5676facced60901901830290911d6cb9a025d814b29c212b8b1a07cd1901909102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a5506029190037d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b60007812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f218311670de0b6b3a76400000215820261365757637c5f487d6000526004601cfd5b50670de0b6b3a7640000919091020490565b6000816000190483118202156136875763bac65e5b6000526004601cfd5b50670de0b6b3a764000091020490565b600068023f2fa8f6da5b9d281982136136af57919050565b680755bf798b4a1bf1e582126136cd5763a37bfec96000526004601cfd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6000612380670de0b6b3a76400008361382c86613404565b6138369190614ae3565b6138409190614b68565b613697565b60008054600160801b900460ff16600281111561386457613864614625565b146138825760405163067fe19560e41b815260040160405180910390fd5b60006002878154811061389757613897614907565b6000918252602082206005919091020160048101549092506001600160801b0316908715821760011b90506138ed7f00000000000000000000000000000000000000000000000000000000000000006001614933565b6138ff826001600160801b0316613398565b60ff161461392057604051630bea7bb360e31b815260040160405180910390fd5b60008089156139fc576139737f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614964565b6001901b613989846001600160801b0316614390565b6001600160801b031661399c9190614b96565b156139d0576139c76139b860016001600160801b038716614baa565b865463ffffffff1660006143ae565b600301546139f2565b7f00000000000000000000000000000000000000000000000000000000000000005b9150849050613a1d565b60038501549150613a1a6139b86001600160801b0386166001614bca565b90505b600882901b60088a8a604051613a349291906148f7565b6040518091039020901b14613a5c5760405163696550ff60e01b815260040160405180910390fd5b6000613a678c614477565b90506000613a76836003015490565b6040516370a6769960e11b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e14ced3290613aca908f908f908f908f908a90600401614c15565b6020604051808303816000875af1158015613ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b0d91906149fe565b600485015491149150600090600290613b2e906001600160801b0316613398565b613b40896001600160801b0316613398565b613b4a9190614c4f565b613b549190614c72565b60ff161590508115158103613b7c5760405163fb4e40dd60e01b815260040160405180910390fd5b8754600160201b90046001600160a01b031615613bac57604051639071e6af60e01b815260040160405180910390fd5b50508554640100000000600160c01b03191633600160201b02179095555050505050505050505050565b6000806000806000859050600060028281548110613bf657613bf6614907565b6000918252602090912060059091020160048101549091507f000000000000000000000000000000000000000000000000000000000000000090613c42906001600160801b0316613398565b60ff1611613c63576040516359a5ae1160e11b815260040160405180910390fd5b6000815b60048301547f000000000000000000000000000000000000000000000000000000000000000090613ca0906001600160801b0316613398565b60ff169250821115613d1557825463ffffffff16613cdf7f00000000000000000000000000000000000000000000000000000000000000006001614933565b8303613ce9578391505b60028181548110613cfc57613cfc614907565b9060005260206000209060050201935080945050613c67565b600481810154908401546001600160801b0391821691166000816001600160801b0316613d5a613d4e856001600160801b031660011c90565b6001600160801b031690565b6001600160801b03161490508015613df3576000613d80836001600160801b0316614390565b6001600160801b03161115613dd0576000613db0613da860016001600160801b038616614baa565b8960016143ae565b6003810154600490910154909c506001600160801b03169a50613dd69050565b6008549a505b600386015460048701549099506001600160801b03169750613e37565b6000613e0c613da86001600160801b0385166001614bca565b6003808901546004808b015492840154930154909e506001600160801b039182169d50919b50169850505b505050505050509193509193565b60006001600160801b03841615613ea05760408051602081018790526001600160801b038087169282019290925260608101859052908316608082015260a00160405160208183030381529060405280519060200120611466565b8282604051602001613ec59291909182526001600160801b0316602082015260400190565b6040516020818303038152906040528051906020012095945050505050565b600080613ef084613398565b60ff1690508083036001841b600180831b0386831b17039250505092915050565b60008060008360000151600003613f3b57604051635ab458fb60e01b815260040160405180910390fd5b6020840151805160001a607f8111613f60576000600160009450945094505050614200565b60b78111613ff8576000613f75608083614964565b905080876000015111613f9b576040516366c9448560e01b815260040160405180910390fd5b6001838101516001600160f81b0319169082148015613fc75750600160ff1b6001600160f81b03198216105b15613fe55760405163babb01dd60e01b815260040160405180910390fd5b5060019550935060009250614200915050565b60bf81116140da57600061400d60b783614964565b905080876000015111614033576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b03191660008190036140645760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c603781116140935760405163babb01dd60e01b815260040160405180910390fd5b61409d8184614933565b8951116140bd576040516366c9448560e01b815260040160405180910390fd5b6140c8836001614933565b97509550600094506142009350505050565b60f781116141265760006140ef60c083614964565b905080876000015111614115576040516366c9448560e01b815260040160405180910390fd5b600195509350849250614200915050565b600061413360f783614964565b905080876000015111614159576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b031916600081900361418a5760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c603781116141b95760405163babb01dd60e01b815260040160405180910390fd5b6141c38184614933565b8951116141e3576040516366c9448560e01b815260040160405180910390fd5b6141ee836001614933565b97509550600194506142009350505050565b9193909250565b6060816001600160401b038111156142215761422161486e565b6040519080825280601f01601f19166020018201604052801561424b576020820181803683370190505b50905081156142945760006142608486614933565b90506020820160005b84811015614281578281015182820152602001614269565b84811115614290576000858301525b5050505b9392505050565b60006142b16001600160801b0384166001614bca565b905060006142c1828660016143ae565b9050600086901a838061432357506142fa60027f0000000000000000000000000000000000000000000000000000000000000000614b96565b6004830154600290614314906001600160801b0316613398565b61431e9190614c72565b60ff16145b156143625760ff81166001148061433d575060ff81166002145b61435d5760405163f40239db60e01b8152600481018890526024016130b8565b614387565b60ff8116156143875760405163f40239db60e01b8152600481018890526024016130b8565b50505050505050565b60008061439c83613398565b600160ff919091161b90920392915050565b600080826143ee576143e96001600160801b0386167f00000000000000000000000000000000000000000000000000000000000000006144a6565b614400565b614400856001600160801b0316614515565b90506002848154811061441557614415614907565b906000526020600020906005020191505b60048201546001600160801b0382811691161461446f57815460028054909163ffffffff1690811061445a5761445a614907565b90600052602060002090600502019150614426565b509392505050565b600080600080600061448886613bd6565b935093509350935061449c84848484613e45565b9695505050505050565b6000816144bb846001600160801b0316613398565b60ff16116144d15763b34b5c226000526004601cfd5b6144da83614515565b9050816144ef826001600160801b0316613398565b60ff161161238357612380614505836001614933565b6001600160801b03831690614539565b6000811960018301168161452882613398565b60ff169390931c8015179392505050565b60008061454584613398565b60ff169050808303600180821b0385821b179250505092915050565b60008083601f84011261457357600080fd5b5081356001600160401b0381111561458a57600080fd5b6020830191508360208285010111156145a257600080fd5b9250929050565b600080600083850360a08112156145bf57600080fd5b60808112156145cd57600080fd5b5083925060808401356001600160401b038111156145ea57600080fd5b6145f686828701614561565b9497909650939450505050565b6000806040838503121561461657600080fd5b50508035926020909101359150565b634e487b7160e01b600052602160045260246000fd5b6003811061465957634e487b7160e01b600052602160045260246000fd5b50565b602081016146698361463b565b91905290565b6001600160a01b038116811461465957600080fd5b60006020828403121561469657600080fd5b81356142948161466f565b6000806000606084860312156146b657600080fd5b505081359360208301359350604090920135919050565b6000815180845260005b818110156146f3576020818501810151868301820152016146d7565b81811115614705576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061238060208301846146cd565b60006020828403121561473f57600080fd5b5035919050565b801515811461465957600080fd5b6000806000806080858703121561476a57600080fd5b843593506020850135925060408501359150606085013561478a81614746565b939692955090935050565b6000602082840312156147a757600080fd5b81356001600160801b038116811461429457600080fd5b600080600080600080608087890312156147d757600080fd5b8635955060208701356147e981614746565b945060408701356001600160401b038082111561480557600080fd5b6148118a838b01614561565b9096509450606089013591508082111561482a57600080fd5b5061483789828a01614561565b979a9699509497509295939492505050565b63ffffffff8416815282602082015260606040820152600061146660608301846146cd565b634e487b7160e01b600052604160045260246000fd5b60006080828403121561489657600080fd5b604051608081018181106001600160401b03821117156148c657634e487b7160e01b600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156149465761494661491d565b500190565b60006001820161495d5761495d61491d565b5060010190565b6000828210156149765761497661491d565b500390565b60006020828403121561498d57600080fd5b815161429481614746565b634e487b7160e01b600052601260045260246000fd5b6000826149bd576149bd614998565b500490565b60008160001904831182151516156149dc576149dc61491d565b500290565b6000602082840312156149f357600080fd5b81516142948161466f565b600060208284031215614a1057600080fd5b5051919050565b60006001600160401b03808316818516808303821115614a3957614a3961491d565b01949350505050565b60006001600160401b0380831681851681830481118215151615614a6857614a6861491d565b02949350505050565b60006001600160401b0383811690831681811015614a9157614a9161491d565b039392505050565b60008060408385031215614aac57600080fd5b505080516020909101519092909150565b600060208284031215614acf57600080fd5b815163ffffffff8116811461429457600080fd5b60006001600160ff1b0381841382841380821686840486111615614b0957614b0961491d565b600160ff1b6000871282811687830589121615614b2857614b2861491d565b60008712925087820587128484161615614b4457614b4461491d565b87850587128184161615614b5a57614b5a61491d565b505050929093029392505050565b600082614b7757614b77614998565b600160ff1b821460001984141615614b9157614b9161491d565b500590565b600082614ba557614ba5614998565b500690565b60006001600160801b0383811690831681811015614a9157614a9161491d565b60006001600160801b03808316818516808303821115614a3957614a3961491d565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b606081526000614c29606083018789614bec565b8281036020840152614c3c818688614bec565b9150508260408301529695505050505050565b600060ff821660ff841680821015614c6957614c6961491d565b90039392505050565b600060ff831680614c8557614c85614998565b8060ff8416069150509291505056fea2646970667358221220860c23a83884cc08df9069441e34e5ac65668559b49819edea26545ff6110aec64736f6c634300080f0033000000000000000000000000000000000000000000000000000000000000000103caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b0000000000000000000000000000000000000000000000000000000000000049000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000000000000000000049d4000000000000000000000000007babe08ee4d07dba236530183b24055535a701100000000000000000000000032ce910d9c6c8f78dc6779c1499ab05f281a054e0000000000000000000000002ff5cc82dbf333ea30d8ee462178ab17073153550000000000000000000000000000000000000000000000000000000000014a34000000000000000000000000037637067c1dbe6d2430616d8f54cb774daa59990000000000000000000000008b8c52b04a38f10515c52670fcb23f3c4c44474f", + "nonce": "0x1", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x14e569f", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x1acc71fe9278c821be87cb7adaee7253dda2736c6c2a6e2c2752af52531f5195", + "transactionIndex": "0x2f", + "blockHash": "0xcb4766b74ac62ad6b573e6f9ddb1b0e9562f28731a06a4978c98159cb2e3cd24", + "blockNumber": "0x923212", + "gasUsed": "0x4043be", + "effectiveGasPrice": "0xf424e", + "from": "0x7f10098bd53519c739ca8a404afe127647d94774", + "to": null, + "contractAddress": "0xf0b64b080548b1f688356b9cf880076c2145f79a" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1905366", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x8082b4730637f84bbd3a353e051f07d75c00a8bd27725d6453229a5af30592a2", + "transactionIndex": "0x30", + "blockHash": "0xcb4766b74ac62ad6b573e6f9ddb1b0e9562f28731a06a4978c98159cb2e3cd24", + "blockNumber": "0x923212", + "gasUsed": "0x41fcc7", + "effectiveGasPrice": "0xf424e", + "from": "0x7f10098bd53519c739ca8a404afe127647d94774", + "to": null, + "contractAddress": "0x284a4cf8cb83d3377f8eadfff2414f2bfa68484b" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1762539301055, + "chain": 11155111, + "commit": "4b699c9" +} \ No newline at end of file diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/script/DeployDisputeGames.s.sol b/sepolia/2025-11-07-upgrade-fault-proofs/script/DeployDisputeGames.s.sol new file mode 100644 index 00000000..b7c1ec45 --- /dev/null +++ b/sepolia/2025-11-07-upgrade-fault-proofs/script/DeployDisputeGames.s.sol @@ -0,0 +1,146 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.15; + +import {Script} from "forge-std/Script.sol"; + +import {IAnchorStateRegistry, IDelayedWETH, IBigStepper} from "@eth-optimism-bedrock/src/dispute/FaultDisputeGame.sol"; +import { + PermissionedDisputeGame, FaultDisputeGame +} from "@eth-optimism-bedrock/src/dispute/PermissionedDisputeGame.sol"; +import {GameTypes, GameType, Duration, Claim} from "@eth-optimism-bedrock/src/dispute/lib/Types.sol"; +import {LibGameType, LibDuration} from "@eth-optimism-bedrock/src/dispute/lib/LibUDT.sol"; +import {DisputeGameFactory} from "@eth-optimism-bedrock/src/dispute/DisputeGameFactory.sol"; +import {SystemConfig} from "@eth-optimism-bedrock/src/L1/SystemConfig.sol"; +import {Strings} from "@openzeppelin/contracts/utils/Strings.sol"; +import {console} from "forge-std/console.sol"; + +/// @notice This script deploys new versions of FaultDisputeGame and PermissionedDisputeGame with all the same +/// parameters as the existing implementations excluding the absolute prestate. +contract DeployDisputeGames is Script { + using Strings for address; + using LibDuration for Duration; + using LibGameType for GameType; + + // TODO: Confirm expected version + string public constant EXPECTED_VERSION = "1.8.0"; + + SystemConfig internal _SYSTEM_CONFIG = SystemConfig(vm.envAddress("SYSTEM_CONFIG")); + Claim immutable absolutePrestate; + + FaultDisputeGame.GameConstructorParams fdgParams; + FaultDisputeGame.GameConstructorParams pdgParams; + address proposer; + address challenger; + + constructor() { + absolutePrestate = Claim.wrap(vm.envBytes32("ABSOLUTE_PRESTATE")); + } + + function setUp() public { + DisputeGameFactory dgfProxy = DisputeGameFactory(_SYSTEM_CONFIG.disputeGameFactory()); + FaultDisputeGame currentFdg = FaultDisputeGame(address(dgfProxy.gameImpls(GameTypes.CANNON))); + PermissionedDisputeGame currentPdg = + PermissionedDisputeGame(address(dgfProxy.gameImpls(GameTypes.PERMISSIONED_CANNON))); + + uint256 maxGameDepth = currentFdg.maxGameDepth(); + uint256 splitDepth = currentFdg.splitDepth(); + Duration clockExtension = currentFdg.clockExtension(); + Duration maxClockDuration = currentFdg.maxClockDuration(); + IBigStepper bigStepper = currentFdg.vm(); + IAnchorStateRegistry anchorStateRegistry = currentFdg.anchorStateRegistry(); + uint256 l2ChainId = currentFdg.l2ChainId(); + + proposer = currentPdg.proposer(); + challenger = currentPdg.challenger(); + + fdgParams = FaultDisputeGame.GameConstructorParams({ + gameType: GameTypes.CANNON, + absolutePrestate: absolutePrestate, + maxGameDepth: maxGameDepth, + splitDepth: splitDepth, + clockExtension: clockExtension, + maxClockDuration: maxClockDuration, + vm: bigStepper, + weth: currentFdg.weth(), + anchorStateRegistry: anchorStateRegistry, + l2ChainId: l2ChainId + }); + pdgParams = FaultDisputeGame.GameConstructorParams({ + gameType: GameTypes.PERMISSIONED_CANNON, + absolutePrestate: absolutePrestate, + maxGameDepth: maxGameDepth, + splitDepth: splitDepth, + clockExtension: clockExtension, + maxClockDuration: maxClockDuration, + vm: bigStepper, + weth: currentPdg.weth(), + anchorStateRegistry: anchorStateRegistry, + l2ChainId: l2ChainId + }); + } + + function _postCheck(address fdgImpl, address pdgImpl) private view { + FaultDisputeGame fdg = FaultDisputeGame(fdgImpl); + PermissionedDisputeGame pdg = PermissionedDisputeGame(pdgImpl); + + require(Strings.equal(fdg.version(), EXPECTED_VERSION), "Postcheck version 1"); + require(Strings.equal(pdg.version(), EXPECTED_VERSION), "Postcheck version 2"); + + require(fdg.gameType().raw() == GameTypes.CANNON.raw(), "Postcheck 1"); + require(fdg.absolutePrestate().raw() == absolutePrestate.raw(), "Postcheck 2"); + require(fdg.maxGameDepth() == fdgParams.maxGameDepth, "Postcheck 3"); + require(fdg.splitDepth() == fdgParams.splitDepth, "Postcheck 4"); + require(fdg.clockExtension().raw() == fdgParams.clockExtension.raw(), "Postcheck 5"); + require(fdg.maxClockDuration().raw() == fdgParams.maxClockDuration.raw(), "Postcheck 6"); + require(fdg.vm() == fdgParams.vm, "Postcheck 7"); + require(fdg.weth() == fdgParams.weth, "Postcheck 8"); + require(fdg.anchorStateRegistry() == fdgParams.anchorStateRegistry, "Postcheck 9"); + require(fdg.l2ChainId() == fdgParams.l2ChainId, "Postcheck 10"); + + require(pdg.gameType().raw() == GameTypes.PERMISSIONED_CANNON.raw(), "Postcheck 11"); + require(pdg.absolutePrestate().raw() == absolutePrestate.raw(), "Postcheck 12"); + require(pdg.maxGameDepth() == pdgParams.maxGameDepth, "Postcheck 13"); + require(pdg.splitDepth() == pdgParams.splitDepth, "Postcheck 14"); + require(pdg.clockExtension().raw() == pdgParams.clockExtension.raw(), "Postcheck 15"); + require(pdg.maxClockDuration().raw() == pdgParams.maxClockDuration.raw(), "Postcheck 16"); + require(pdg.vm() == pdgParams.vm, "Postcheck 17"); + require(pdg.weth() == pdgParams.weth, "Postcheck 18"); + require(pdg.anchorStateRegistry() == pdgParams.anchorStateRegistry, "Postcheck 19"); + require(pdg.l2ChainId() == pdgParams.l2ChainId, "Postcheck 20"); + require(pdg.proposer() == proposer, "Postcheck 21"); + require(pdg.challenger() == challenger, "Postcheck 22"); + } + + function run() public { + (address fdg, address pdg) = _deployContracts(); + _postCheck(fdg, pdg); + + vm.writeFile( + "addresses.json", + string.concat( + "{", + "\"faultDisputeGame\": \"", + fdg.toHexString(), + "\",", + "\"permissionedDisputeGame\": \"", + pdg.toHexString(), + "\"" "}" + ) + ); + } + + function _deployContracts() private returns (address, address) { + console.log("FaultDisputeGame params:"); + console.logBytes(abi.encode(fdgParams)); + + console.log("PermissionedDisputeGame params:"); + console.logBytes(abi.encode(pdgParams, proposer, challenger)); + + vm.startBroadcast(); + address fdg = address(new FaultDisputeGame(fdgParams)); + address pdg = address(new PermissionedDisputeGame(pdgParams, proposer, challenger)); + vm.stopBroadcast(); + + return (fdg, pdg); + } +} diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeDGF.s.sol b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeDGF.s.sol new file mode 100644 index 00000000..971ae3bf --- /dev/null +++ b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeDGF.s.sol @@ -0,0 +1,150 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import {Vm} from "forge-std/Vm.sol"; +import {stdJson} from "forge-std/StdJson.sol"; +import {IMulticall3} from "forge-std/interfaces/IMulticall3.sol"; +import {console} from "forge-std/console.sol"; + +import {LibString} from "@solady/utils/LibString.sol"; + +import {MultisigScript} from "@base-contracts/script/universal/MultisigScript.sol"; +import {Simulation} from "@base-contracts/script/universal/Simulation.sol"; + +interface IDisputeGameFactory { + function gameImpls(uint32) external view returns (address); + function setImplementation(uint32, address) external; +} + +interface IPermissionedDisputeGame { + function challenger() external view returns (address); + function proposer() external view returns (address); +} + +interface ISystemConfig { + function disputeGameFactory() external view returns (address); +} + +interface IFaultDisputeGame { + function version() external view returns (string memory); + function vm() external view returns (address); + function weth() external view returns (address); + function anchorStateRegistry() external view returns (address); + function l2ChainId() external view returns (uint64); + function splitDepth() external view returns (uint64); + function maxGameDepth() external view returns (uint64); + function maxClockDuration() external view returns (uint64); + function clockExtension() external view returns (uint64); +} + +interface IAnchorStateRegistry { + function anchors(uint32) external view returns (bytes32, uint256); +} + +/// @notice This script updates the FaultDisputeGame and PermissionedDisputeGame implementations in the +/// DisputeGameFactory contract. +contract UpgradeDGF is MultisigScript { + using stdJson for string; + + // TODO: Confirm expected version + string public constant EXPECTED_VERSION = "1.4.1"; + uint32 public constant CANNON = 0; + uint32 public constant PERMISSIONED_CANNON = 1; + + address public immutable OWNER_SAFE; + + IDisputeGameFactory public dgfProxy; + address public fdgImpl; + address public pdgImpl; + + constructor() { + OWNER_SAFE = vm.envAddress("OWNER_SAFE"); + } + + function setUp() public { + string memory rootPath = vm.projectRoot(); + string memory path = string.concat(rootPath, "/addresses.json"); + string memory addresses = vm.readFile(path); + + dgfProxy = IDisputeGameFactory(ISystemConfig(vm.envAddress("SYSTEM_CONFIG")).disputeGameFactory()); + fdgImpl = addresses.readAddress(".faultDisputeGame"); + pdgImpl = addresses.readAddress(".permissionedDisputeGame"); + + _precheckDisputeGameImplementation(CANNON, fdgImpl); + _precheckDisputeGameImplementation(PERMISSIONED_CANNON, pdgImpl); + } + + // Checks that the new game being set has the same configuration as the existing implementation with the exception + // of the absolutePrestate. This is the most common scenario where the game implementation is upgraded to provide an + // updated fault proof program that supports an upcoming hard fork. + function _precheckDisputeGameImplementation(uint32 targetGameType, address newImpl) internal view { + console.log("pre-check new game implementations", targetGameType); + + IFaultDisputeGame currentImpl = IFaultDisputeGame(address(dgfProxy.gameImpls(targetGameType))); + // No checks are performed if there is no prior implementation. + // When deploying the first implementation, it is recommended to implement custom checks. + if (address(currentImpl) == address(0)) { + return; + } + IFaultDisputeGame faultDisputeGame = IFaultDisputeGame(newImpl); + require(LibString.eq(currentImpl.version(), EXPECTED_VERSION), "00"); + require(currentImpl.vm() == faultDisputeGame.vm(), "10"); + require(currentImpl.weth() == faultDisputeGame.weth(), "20"); + require(currentImpl.anchorStateRegistry() == faultDisputeGame.anchorStateRegistry(), "30"); + require(currentImpl.l2ChainId() == faultDisputeGame.l2ChainId(), "40"); + require(currentImpl.splitDepth() == faultDisputeGame.splitDepth(), "50"); + require(currentImpl.maxGameDepth() == faultDisputeGame.maxGameDepth(), "60"); + require(currentImpl.maxClockDuration() == faultDisputeGame.maxClockDuration(), "70"); + require(currentImpl.clockExtension() == faultDisputeGame.clockExtension(), "80"); + + if (targetGameType == PERMISSIONED_CANNON) { + IPermissionedDisputeGame currentPDG = IPermissionedDisputeGame(address(currentImpl)); + IPermissionedDisputeGame permissionedDisputeGame = IPermissionedDisputeGame(address(faultDisputeGame)); + require(currentPDG.proposer() == permissionedDisputeGame.proposer(), "90"); + require(currentPDG.challenger() == permissionedDisputeGame.challenger(), "100"); + } + } + + // Confirm the stored implementations are updated and the anchor states still exist. + function _postCheck(Vm.AccountAccess[] memory, Simulation.Payload memory) internal view override { + require(dgfProxy.gameImpls(CANNON) == fdgImpl, "post-110"); + require(dgfProxy.gameImpls(PERMISSIONED_CANNON) == pdgImpl, "post-120"); + _postcheckHasAnchorState(CANNON); + _postcheckHasAnchorState(PERMISSIONED_CANNON); + } + + // Checks the anchor state for the source game type still exists after re-initialization. The actual anchor state + // may have been updated since the task was defined so just assert it exists, not that it has a specific value. + function _postcheckHasAnchorState(uint32 gameType) internal view { + console.log("check anchor state exists", gameType); + + IFaultDisputeGame impl = IFaultDisputeGame(dgfProxy.gameImpls(gameType)); + (bytes32 root, uint256 rootBlockNumber) = IAnchorStateRegistry(impl.anchorStateRegistry()).anchors(gameType); + + require(root != bytes32(0), "check-300"); + require(rootBlockNumber != 0, "check-310"); + } + + function _buildCalls() internal view override returns (IMulticall3.Call3Value[] memory) { + IMulticall3.Call3Value[] memory calls = new IMulticall3.Call3Value[](2); + + calls[0] = IMulticall3.Call3Value({ + target: address(dgfProxy), + allowFailure: false, + callData: abi.encodeCall(IDisputeGameFactory.setImplementation, (CANNON, fdgImpl)), + value: 0 + }); + calls[1] = IMulticall3.Call3Value({ + target: address(dgfProxy), + allowFailure: false, + callData: abi.encodeCall(IDisputeGameFactory.setImplementation, (PERMISSIONED_CANNON, pdgImpl)), + value: 0 + }); + + return calls; + } + + function _ownerSafe() internal view override returns (address) { + return OWNER_SAFE; + } +} From efb3be5a0a3509babf01315be24aea9088ee3625 Mon Sep 17 00:00:00 2001 From: Joby Thundil Date: Fri, 7 Nov 2025 14:21:09 -0500 Subject: [PATCH 02/23] add cb-signer validation --- sepolia/2025-11-07-upgrade-fault-proofs/.env | 2 + .../2025-11-07-upgrade-fault-proofs/Makefile | 11 ++ .../script/UpgradeDGF.s.sol | 2 +- .../validations/cb-signer.json | 129 ++++++++++++++++++ 4 files changed, 143 insertions(+), 1 deletion(-) create mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-signer.json diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/.env b/sepolia/2025-11-07-upgrade-fault-proofs/.env index 3d15f54d..51d1b739 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/.env +++ b/sepolia/2025-11-07-upgrade-fault-proofs/.env @@ -3,6 +3,8 @@ BASE_CONTRACTS_COMMIT=dcd8c98aa881e0ae4ebf872e0d91692a7bf94000 ABSOLUTE_PRESTATE=0x03caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b +RECORD_STATE_DIFF=true + # Sepolia Config SYSTEM_CONFIG=0xf272670eb55e895584501d564AfEB048bEd26194 diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/Makefile b/sepolia/2025-11-07-upgrade-fault-proofs/Makefile index 02d9cb46..624c2989 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/Makefile +++ b/sepolia/2025-11-07-upgrade-fault-proofs/Makefile @@ -28,6 +28,17 @@ deploy: RPC_URL = $(L1_RPC_URL) SCRIPT_NAME = UpgradeDGF +.PHONY: gen-validation +gen-validation-cb: checkout-signer-tool run-script-cb + +.PHONY: run-script-cb +run-script-cb: + cd $(SIGNER_TOOL_PATH); \ + npm ci; \ + bun run scripts/genValidationFile.ts --rpc-url $(L1_RPC_URL) \ + --workdir .. --forge-cmd 'forge script --rpc-url $(L1_RPC_URL) \ + $(SCRIPT_NAME) --sig "sign(address[])" "[$(CB_NESTED_SAFE_ADDR), $(CB_SIGNER_SAFE_ADDR)]" --sender 0x7f10098bd53519c739ca8a404afe127647d94774' --out ../validations/cb-signer.json; + # CB .PHONY: sign-cb sign-cb: diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeDGF.s.sol b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeDGF.s.sol index 971ae3bf..302e2bcb 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeDGF.s.sol +++ b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeDGF.s.sol @@ -47,7 +47,7 @@ contract UpgradeDGF is MultisigScript { using stdJson for string; // TODO: Confirm expected version - string public constant EXPECTED_VERSION = "1.4.1"; + string public constant EXPECTED_VERSION = "1.7.0"; uint32 public constant CANNON = 0; uint32 public constant PERMISSIONED_CANNON = 1; diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-signer.json b/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-signer.json new file mode 100644 index 00000000..3bc0d53a --- /dev/null +++ b/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-signer.json @@ -0,0 +1,129 @@ +{ + "taskName": "U17 - Jovian Contracts Upgrade", + "scriptName": "UpgradeDGF", + "signature": "sign(address[])", + "sender": "", + "args": "[0x5dfEB066334B67355A15dc9b67317fD2a2e1f77f, 0x646132A1667ca7aD00d36616AFBA1A28116C770A]", + "ledgerId": 0, + "rpcUrl": "https://ethereum-full-sepolia-k8s-dev.cbhq.net", + "expectedDomainAndMessageHashes": { + "address": "0x0fe884546476dDd290eC46318785046ef68a0BA9", + "domainHash": "0x0127bbb910536860a0757a9c0ffcdf9e4452220f566ed83af1f27f9e833f0e23", + "messageHash": "0xb86c8e9aa17198bf5ec9c5aaed2cc755014f28ec190e56bdf3704b21e6bb7b16" + }, + "stateOverrides": [ + { + "name": "Proxy Admin Owner - Sepolia", + "address": "0x0fe884546476ddd290ec46318785046ef68a0ba9", + "overrides": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000004", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Override the threshold to 1 so the transaction simulation can occur." + } + ] + }, + { + "name": "CB Signer Safe - Sepolia", + "address": "0x5dfeb066334b67355a15dc9b67317fd2a2e1f77f", + "overrides": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000004", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Override the threshold to 1 so the transaction simulation can occur." + }, + { + "key": "0x6ef852d202a6ad27bb9c8216f6583393e7c2719264bd059bc43932d6af72d2f4", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Simulates an approval from msg.sender in order for the task simulation to succeed." + } + ] + }, + { + "name": "CB Coordinator Safe - Sepolia", + "address": "0x646132a1667ca7ad00d36616afba1a28116c770a", + "overrides": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000004", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Override the threshold to 1 so the transaction simulation can occur." + } + ] + } + ], + "stateChanges": [ + { + "name": "Proxy Admin Owner - Sepolia", + "address": "0x0fe884546476ddd290ec46318785046ef68a0ba9", + "changes": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000005", + "before": "0x000000000000000000000000000000000000000000000000000000000000001a", + "after": "0x000000000000000000000000000000000000000000000000000000000000001b", + "description": "Increments the nonce", + "allowDifference": false + }, + { + "key": "0x159f2cc5b13cd0ac2bad1f750c79933c0483d97a3db3fc1d3d741d430e4ac877", + "before": "0x0000000000000000000000000000000000000000000000000000000000000000", + "after": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "<>", + "allowDifference": false + } + ] + }, + { + "name": "CB Signer Safe - Sepolia", + "address": "0x5dfeb066334b67355a15dc9b67317fd2a2e1f77f", + "changes": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000005", + "before": "0x000000000000000000000000000000000000000000000000000000000000000a", + "after": "0x000000000000000000000000000000000000000000000000000000000000000b", + "description": "Increments the nonce", + "allowDifference": false + } + ] + }, + { + "name": "CB Coordinator Safe - Sepolia", + "address": "0x646132a1667ca7ad00d36616afba1a28116c770a", + "changes": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000005", + "before": "0x0000000000000000000000000000000000000000000000000000000000000009", + "after": "0x000000000000000000000000000000000000000000000000000000000000000a", + "description": "Increments the nonce", + "allowDifference": false + }, + { + "key": "0xa5c5e4439e2c9b3a5b33918597eb6ab8f02b8e090a55b6580d1f6eb0f889ba8f", + "before": "0x0000000000000000000000000000000000000000000000000000000000000000", + "after": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "<>", + "allowDifference": false + } + ] + }, + { + "name": "DisputeGameFactory", + "address": "0xd6e6dbf4f7ea0ac412fd8b65ed297e64bb7a06e1", + "changes": [ + { + "key": "0x4d5a9bd2e41301728d41c8e705190becb4e74abe869f75bdb405b63716a35f9e", + "before": "0x0000000000000000000000005920bd6ab4c1b96bfd4efc56eb6cf9b018e3bf4c", + "after": "0x000000000000000000000000284a4cf8cb83d3377f8eadfff2414f2bfa68484b", + "description": "update implementation address of PermissionedDisputeGame", + "allowDifference": false + }, + { + "key": "0xffdfc1249c027f9191656349feb0761381bb32c9f557e01f419fd08754bf5a1b", + "before": "0x000000000000000000000000f83157709129bd03fb02e96950be288e8c2c1c67", + "after": "0x000000000000000000000000f0b64b080548b1f688356b9cf880076c2145f79a", + "description": "update implementation address of FaultDisputeGame", + "allowDifference": false + } + ] + } + ] +} From c09e02763872e06e956b92ab85312de7e63481e0 Mon Sep 17 00:00:00 2001 From: Joby Thundil Date: Fri, 7 Nov 2025 14:26:40 -0500 Subject: [PATCH 03/23] add cb-sc-signer validation --- .../2025-11-07-upgrade-fault-proofs/Makefile | 12 ++ .../validations/cb-sc-signer.json | 124 ++++++++++++++++++ 2 files changed, 136 insertions(+) create mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-sc-signer.json diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/Makefile b/sepolia/2025-11-07-upgrade-fault-proofs/Makefile index 624c2989..34d983b1 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/Makefile +++ b/sepolia/2025-11-07-upgrade-fault-proofs/Makefile @@ -39,6 +39,18 @@ run-script-cb: --workdir .. --forge-cmd 'forge script --rpc-url $(L1_RPC_URL) \ $(SCRIPT_NAME) --sig "sign(address[])" "[$(CB_NESTED_SAFE_ADDR), $(CB_SIGNER_SAFE_ADDR)]" --sender 0x7f10098bd53519c739ca8a404afe127647d94774' --out ../validations/cb-signer.json; + +.PHONY: gen-validation +gen-validation-cb-sc: checkout-signer-tool run-script-cb-sc + +.PHONY: run-script-cb-sc +run-script-cb-sc: + cd $(SIGNER_TOOL_PATH); \ + npm ci; \ + bun run scripts/genValidationFile.ts --rpc-url $(L1_RPC_URL) \ + --workdir .. --forge-cmd 'forge script --rpc-url $(L1_RPC_URL) \ + $(SCRIPT_NAME) --sig "sign(address[])" "[$(CB_SC_SAFE_ADDR), $(CB_SIGNER_SAFE_ADDR)]" --sender 0x7f10098bd53519c739ca8a404afe127647d94774' --out ../validations/cb-sc-signer.json; + # CB .PHONY: sign-cb sign-cb: diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-sc-signer.json b/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-sc-signer.json new file mode 100644 index 00000000..bded9a88 --- /dev/null +++ b/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-sc-signer.json @@ -0,0 +1,124 @@ +{ + "taskName": "U17 - Jovian Contracts Upgrade", + "scriptName": "UpgradeDGF", + "signature": "sign(address[])", + "sender": "", + "args": "[0x6AF0674791925f767060Dd52f7fB20984E8639d8, 0x646132A1667ca7aD00d36616AFBA1A28116C770A]", + "ledgerId": 0, + "rpcUrl": "https://ethereum-full-sepolia-k8s-dev.cbhq.net", + "expectedDomainAndMessageHashes": { + "address": "0x0fe884546476dDd290eC46318785046ef68a0BA9", + "domainHash": "0x6f25427e79742a1eb82c103e2bf43c85fc59509274ec258ad6ed841c4a0048aa", + "messageHash": "0xdbcb397a586511fbffe4fd3880baf886194494ce057eb1be6fa8dc5fe3916eb6" + }, + "stateOverrides": [ + { + "name": "Proxy Admin Owner - Sepolia", + "address": "0x0fe884546476ddd290ec46318785046ef68a0ba9", + "overrides": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000004", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Override the threshold to 1 so the transaction simulation can occur." + } + ] + }, + { + "name": "CB Coordinator Safe - Sepolia", + "address": "0x646132a1667ca7ad00d36616afba1a28116c770a", + "overrides": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000004", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Override the threshold to 1 so the transaction simulation can occur." + } + ] + }, + { + "name": "Mock OP Safe / Mock Security Council - Sepolia", + "address": "0x6af0674791925f767060dd52f7fb20984e8639d8", + "overrides": [ + { + "key": "0xac931b76a6ceaa24145edb908b8eb5b0fc927f22825181637d4973dae6caf0f6", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Simulates an approval from msg.sender in order for the task simulation to succeed." + } + ] + } + ], + "stateChanges": [ + { + "name": "Proxy Admin Owner - Sepolia", + "address": "0x0fe884546476ddd290ec46318785046ef68a0ba9", + "changes": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000005", + "before": "0x000000000000000000000000000000000000000000000000000000000000001a", + "after": "0x000000000000000000000000000000000000000000000000000000000000001b", + "description": "Increments the nonce", + "allowDifference": false + }, + { + "key": "0x159f2cc5b13cd0ac2bad1f750c79933c0483d97a3db3fc1d3d741d430e4ac877", + "before": "0x0000000000000000000000000000000000000000000000000000000000000000", + "after": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "<>", + "allowDifference": false + } + ] + }, + { + "name": "CB Coordinator Safe - Sepolia", + "address": "0x646132a1667ca7ad00d36616afba1a28116c770a", + "changes": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000005", + "before": "0x0000000000000000000000000000000000000000000000000000000000000009", + "after": "0x000000000000000000000000000000000000000000000000000000000000000a", + "description": "Increments the nonce", + "allowDifference": false + }, + { + "key": "0x6234afabde82d3b3f50dd2e0a91a7981d467af38153df6e4aeb593f088d8dbc9", + "before": "0x0000000000000000000000000000000000000000000000000000000000000000", + "after": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "<>", + "allowDifference": false + } + ] + }, + { + "name": "Mock OP Safe / Mock Security Council - Sepolia", + "address": "0x6af0674791925f767060dd52f7fb20984e8639d8", + "changes": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000005", + "before": "0x000000000000000000000000000000000000000000000000000000000000000e", + "after": "0x000000000000000000000000000000000000000000000000000000000000000f", + "description": "Increments the nonce", + "allowDifference": false + } + ] + }, + { + "name": "DisputeGameFactory", + "address": "0xd6e6dbf4f7ea0ac412fd8b65ed297e64bb7a06e1", + "changes": [ + { + "key": "0x4d5a9bd2e41301728d41c8e705190becb4e74abe869f75bdb405b63716a35f9e", + "before": "0x0000000000000000000000005920bd6ab4c1b96bfd4efc56eb6cf9b018e3bf4c", + "after": "0x000000000000000000000000284a4cf8cb83d3377f8eadfff2414f2bfa68484b", + "description": "update implementation address of PermissionedDisputeGame", + "allowDifference": false + }, + { + "key": "0xffdfc1249c027f9191656349feb0761381bb32c9f557e01f419fd08754bf5a1b", + "before": "0x000000000000000000000000f83157709129bd03fb02e96950be288e8c2c1c67", + "after": "0x000000000000000000000000f0b64b080548b1f688356b9cf880076c2145f79a", + "description": "update implementation address of FaultDisputeGame", + "allowDifference": false + } + ] + } + ] +} From dc8e7921e3985da01f93e56bee6ce5d9e80a2851 Mon Sep 17 00:00:00 2001 From: Joby Thundil Date: Fri, 7 Nov 2025 14:38:09 -0500 Subject: [PATCH 04/23] add op validation --- .../2025-11-07-upgrade-fault-proofs/Makefile | 16 +++- .../validations/cb-sc-signer.json | 2 +- .../validations/cb-signer.json | 2 +- .../validations/op-signer.json | 93 +++++++++++++++++++ 4 files changed, 109 insertions(+), 4 deletions(-) create mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/validations/op-signer.json diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/Makefile b/sepolia/2025-11-07-upgrade-fault-proofs/Makefile index 34d983b1..3a1e7a25 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/Makefile +++ b/sepolia/2025-11-07-upgrade-fault-proofs/Makefile @@ -28,7 +28,7 @@ deploy: RPC_URL = $(L1_RPC_URL) SCRIPT_NAME = UpgradeDGF -.PHONY: gen-validation +.PHONY: gen-validation-cb gen-validation-cb: checkout-signer-tool run-script-cb .PHONY: run-script-cb @@ -40,7 +40,7 @@ run-script-cb: $(SCRIPT_NAME) --sig "sign(address[])" "[$(CB_NESTED_SAFE_ADDR), $(CB_SIGNER_SAFE_ADDR)]" --sender 0x7f10098bd53519c739ca8a404afe127647d94774' --out ../validations/cb-signer.json; -.PHONY: gen-validation +.PHONY: gen-validation-cb-sc gen-validation-cb-sc: checkout-signer-tool run-script-cb-sc .PHONY: run-script-cb-sc @@ -51,6 +51,18 @@ run-script-cb-sc: --workdir .. --forge-cmd 'forge script --rpc-url $(L1_RPC_URL) \ $(SCRIPT_NAME) --sig "sign(address[])" "[$(CB_SC_SAFE_ADDR), $(CB_SIGNER_SAFE_ADDR)]" --sender 0x7f10098bd53519c739ca8a404afe127647d94774' --out ../validations/cb-sc-signer.json; +.PHONY: gen-validation-op +gen-validation-op: checkout-signer-tool run-script-op + +.PHONY: run-script-op +run-script-op: + cd $(SIGNER_TOOL_PATH); \ + npm ci; \ + bun run scripts/genValidationFile.ts --rpc-url $(L1_RPC_URL) \ + --workdir .. --forge-cmd 'forge script --rpc-url $(L1_RPC_URL) \ + $(SCRIPT_NAME) --sig "sign(address[])" "[$(OP_SIGNER_SAFE_ADDR)]" --sender 0x0CF2F86C3338993ce10F74d6f4B095712c7efe26' --out ../validations/op-signer.json; + + # CB .PHONY: sign-cb sign-cb: diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-sc-signer.json b/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-sc-signer.json index bded9a88..5bab1fde 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-sc-signer.json +++ b/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-sc-signer.json @@ -2,7 +2,7 @@ "taskName": "U17 - Jovian Contracts Upgrade", "scriptName": "UpgradeDGF", "signature": "sign(address[])", - "sender": "", + "sender": "0x7f10098bd53519c739ca8a404afe127647d94774", "args": "[0x6AF0674791925f767060Dd52f7fB20984E8639d8, 0x646132A1667ca7aD00d36616AFBA1A28116C770A]", "ledgerId": 0, "rpcUrl": "https://ethereum-full-sepolia-k8s-dev.cbhq.net", diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-signer.json b/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-signer.json index 3bc0d53a..50b6e4cd 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-signer.json +++ b/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-signer.json @@ -2,7 +2,7 @@ "taskName": "U17 - Jovian Contracts Upgrade", "scriptName": "UpgradeDGF", "signature": "sign(address[])", - "sender": "", + "sender": "0x7f10098bd53519c739ca8a404afe127647d94774", "args": "[0x5dfEB066334B67355A15dc9b67317fD2a2e1f77f, 0x646132A1667ca7aD00d36616AFBA1A28116C770A]", "ledgerId": 0, "rpcUrl": "https://ethereum-full-sepolia-k8s-dev.cbhq.net", diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/validations/op-signer.json b/sepolia/2025-11-07-upgrade-fault-proofs/validations/op-signer.json new file mode 100644 index 00000000..60e36291 --- /dev/null +++ b/sepolia/2025-11-07-upgrade-fault-proofs/validations/op-signer.json @@ -0,0 +1,93 @@ +{ + "taskName": "U17 - Jovian Contracts Upgrade", + "scriptName": "UpgradeDGF", + "signature": "sign(address[])", + "sender": "0x0CF2F86C3338993ce10F74d6f4B095712c7efe26", + "args": "[0x6AF0674791925f767060Dd52f7fB20984E8639d8]", + "ledgerId": 0, + "rpcUrl": "https://ethereum-full-sepolia-k8s-dev.cbhq.net", + "expectedDomainAndMessageHashes": { + "address": "0x0fe884546476dDd290eC46318785046ef68a0BA9", + "domainHash": "0x6f25427e79742a1eb82c103e2bf43c85fc59509274ec258ad6ed841c4a0048aa", + "messageHash": "0x99b31a9d76b086c807ca55c38e6a67360835aa48ddb3785ff192fab7e695b625" + }, + "stateOverrides": [ + { + "name": "Proxy Admin Owner - Sepolia", + "address": "0x0fe884546476ddd290ec46318785046ef68a0ba9", + "overrides": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000004", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Override the threshold to 1 so the transaction simulation can occur." + } + ] + }, + { + "name": "Mock OP Safe / Mock Security Council - Sepolia", + "address": "0x6af0674791925f767060dd52f7fb20984e8639d8", + "overrides": [ + { + "key": "0x421561ceed58c3682b00978e5804ca12719b4fad929b542e67d585c2bf0999ad", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Simulates an approval from msg.sender in order for the task simulation to succeed." + } + ] + } + ], + "stateChanges": [ + { + "name": "Proxy Admin Owner - Sepolia", + "address": "0x0fe884546476ddd290ec46318785046ef68a0ba9", + "changes": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000005", + "before": "0x000000000000000000000000000000000000000000000000000000000000001a", + "after": "0x000000000000000000000000000000000000000000000000000000000000001b", + "description": "Increments the nonce", + "allowDifference": false + }, + { + "key": "0x13ddca0a98e4be5608b7fb7d31986bfcf62ecdca0cc6142643a9c6c8f5de261b", + "before": "0x0000000000000000000000000000000000000000000000000000000000000000", + "after": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "<>", + "allowDifference": false + } + ] + }, + { + "name": "Mock OP Safe / Mock Security Council - Sepolia", + "address": "0x6af0674791925f767060dd52f7fb20984e8639d8", + "changes": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000005", + "before": "0x000000000000000000000000000000000000000000000000000000000000000e", + "after": "0x000000000000000000000000000000000000000000000000000000000000000f", + "description": "Increments the nonce", + "allowDifference": false + } + ] + }, + { + "name": "DisputeGameFactory", + "address": "0xd6e6dbf4f7ea0ac412fd8b65ed297e64bb7a06e1", + "changes": [ + { + "key": "0x4d5a9bd2e41301728d41c8e705190becb4e74abe869f75bdb405b63716a35f9e", + "before": "0x0000000000000000000000005920bd6ab4c1b96bfd4efc56eb6cf9b018e3bf4c", + "after": "0x000000000000000000000000284a4cf8cb83d3377f8eadfff2414f2bfa68484b", + "description": "update implementation address of PermissionedDisputeGame", + "allowDifference": false + }, + { + "key": "0xffdfc1249c027f9191656349feb0761381bb32c9f557e01f419fd08754bf5a1b", + "before": "0x000000000000000000000000f83157709129bd03fb02e96950be288e8c2c1c67", + "after": "0x000000000000000000000000f0b64b080548b1f688356b9cf880076c2145f79a", + "description": "update implementation address of FaultDisputeGame", + "allowDifference": false + } + ] + } + ] +} From de8c9e95e07411d603b41ff78b910cbc96f9ff3f Mon Sep 17 00:00:00 2001 From: Joby Thundil Date: Tue, 11 Nov 2025 09:47:20 -0500 Subject: [PATCH 05/23] new script --- sepolia/2025-11-07-upgrade-fault-proofs/.env | 3 + .../2025-11-07-upgrade-fault-proofs/Makefile | 2 +- .../script/DeployDisputeGames.s.sol | 146 ----------------- .../script/UpgradeDGF.s.sol | 150 ------------------ .../UpgradeWithOpSmartContractManager.sol | 66 ++++++++ 5 files changed, 70 insertions(+), 297 deletions(-) delete mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/script/DeployDisputeGames.s.sol delete mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeDGF.s.sol create mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/.env b/sepolia/2025-11-07-upgrade-fault-proofs/.env index 51d1b739..256e5a6f 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/.env +++ b/sepolia/2025-11-07-upgrade-fault-proofs/.env @@ -7,6 +7,9 @@ RECORD_STATE_DIFF=true # Sepolia Config SYSTEM_CONFIG=0xf272670eb55e895584501d564AfEB048bEd26194 +OP_CONTRACT_MANAGER=0xc69e4c24db479191676611a25d977203c3bdca62 + +USE_CB_MULTICALL=true OWNER_SAFE=0x0fe884546476dDd290eC46318785046ef68a0BA9 CB_SIGNER_SAFE_ADDR=0x646132A1667ca7aD00d36616AFBA1A28116C770A diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/Makefile b/sepolia/2025-11-07-upgrade-fault-proofs/Makefile index 3a1e7a25..cfb6848b 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/Makefile +++ b/sepolia/2025-11-07-upgrade-fault-proofs/Makefile @@ -26,7 +26,7 @@ deploy: # └── Signers RPC_URL = $(L1_RPC_URL) -SCRIPT_NAME = UpgradeDGF +SCRIPT_NAME = UpgradeWithOpSmartContractManager .PHONY: gen-validation-cb gen-validation-cb: checkout-signer-tool run-script-cb diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/script/DeployDisputeGames.s.sol b/sepolia/2025-11-07-upgrade-fault-proofs/script/DeployDisputeGames.s.sol deleted file mode 100644 index b7c1ec45..00000000 --- a/sepolia/2025-11-07-upgrade-fault-proofs/script/DeployDisputeGames.s.sol +++ /dev/null @@ -1,146 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.15; - -import {Script} from "forge-std/Script.sol"; - -import {IAnchorStateRegistry, IDelayedWETH, IBigStepper} from "@eth-optimism-bedrock/src/dispute/FaultDisputeGame.sol"; -import { - PermissionedDisputeGame, FaultDisputeGame -} from "@eth-optimism-bedrock/src/dispute/PermissionedDisputeGame.sol"; -import {GameTypes, GameType, Duration, Claim} from "@eth-optimism-bedrock/src/dispute/lib/Types.sol"; -import {LibGameType, LibDuration} from "@eth-optimism-bedrock/src/dispute/lib/LibUDT.sol"; -import {DisputeGameFactory} from "@eth-optimism-bedrock/src/dispute/DisputeGameFactory.sol"; -import {SystemConfig} from "@eth-optimism-bedrock/src/L1/SystemConfig.sol"; -import {Strings} from "@openzeppelin/contracts/utils/Strings.sol"; -import {console} from "forge-std/console.sol"; - -/// @notice This script deploys new versions of FaultDisputeGame and PermissionedDisputeGame with all the same -/// parameters as the existing implementations excluding the absolute prestate. -contract DeployDisputeGames is Script { - using Strings for address; - using LibDuration for Duration; - using LibGameType for GameType; - - // TODO: Confirm expected version - string public constant EXPECTED_VERSION = "1.8.0"; - - SystemConfig internal _SYSTEM_CONFIG = SystemConfig(vm.envAddress("SYSTEM_CONFIG")); - Claim immutable absolutePrestate; - - FaultDisputeGame.GameConstructorParams fdgParams; - FaultDisputeGame.GameConstructorParams pdgParams; - address proposer; - address challenger; - - constructor() { - absolutePrestate = Claim.wrap(vm.envBytes32("ABSOLUTE_PRESTATE")); - } - - function setUp() public { - DisputeGameFactory dgfProxy = DisputeGameFactory(_SYSTEM_CONFIG.disputeGameFactory()); - FaultDisputeGame currentFdg = FaultDisputeGame(address(dgfProxy.gameImpls(GameTypes.CANNON))); - PermissionedDisputeGame currentPdg = - PermissionedDisputeGame(address(dgfProxy.gameImpls(GameTypes.PERMISSIONED_CANNON))); - - uint256 maxGameDepth = currentFdg.maxGameDepth(); - uint256 splitDepth = currentFdg.splitDepth(); - Duration clockExtension = currentFdg.clockExtension(); - Duration maxClockDuration = currentFdg.maxClockDuration(); - IBigStepper bigStepper = currentFdg.vm(); - IAnchorStateRegistry anchorStateRegistry = currentFdg.anchorStateRegistry(); - uint256 l2ChainId = currentFdg.l2ChainId(); - - proposer = currentPdg.proposer(); - challenger = currentPdg.challenger(); - - fdgParams = FaultDisputeGame.GameConstructorParams({ - gameType: GameTypes.CANNON, - absolutePrestate: absolutePrestate, - maxGameDepth: maxGameDepth, - splitDepth: splitDepth, - clockExtension: clockExtension, - maxClockDuration: maxClockDuration, - vm: bigStepper, - weth: currentFdg.weth(), - anchorStateRegistry: anchorStateRegistry, - l2ChainId: l2ChainId - }); - pdgParams = FaultDisputeGame.GameConstructorParams({ - gameType: GameTypes.PERMISSIONED_CANNON, - absolutePrestate: absolutePrestate, - maxGameDepth: maxGameDepth, - splitDepth: splitDepth, - clockExtension: clockExtension, - maxClockDuration: maxClockDuration, - vm: bigStepper, - weth: currentPdg.weth(), - anchorStateRegistry: anchorStateRegistry, - l2ChainId: l2ChainId - }); - } - - function _postCheck(address fdgImpl, address pdgImpl) private view { - FaultDisputeGame fdg = FaultDisputeGame(fdgImpl); - PermissionedDisputeGame pdg = PermissionedDisputeGame(pdgImpl); - - require(Strings.equal(fdg.version(), EXPECTED_VERSION), "Postcheck version 1"); - require(Strings.equal(pdg.version(), EXPECTED_VERSION), "Postcheck version 2"); - - require(fdg.gameType().raw() == GameTypes.CANNON.raw(), "Postcheck 1"); - require(fdg.absolutePrestate().raw() == absolutePrestate.raw(), "Postcheck 2"); - require(fdg.maxGameDepth() == fdgParams.maxGameDepth, "Postcheck 3"); - require(fdg.splitDepth() == fdgParams.splitDepth, "Postcheck 4"); - require(fdg.clockExtension().raw() == fdgParams.clockExtension.raw(), "Postcheck 5"); - require(fdg.maxClockDuration().raw() == fdgParams.maxClockDuration.raw(), "Postcheck 6"); - require(fdg.vm() == fdgParams.vm, "Postcheck 7"); - require(fdg.weth() == fdgParams.weth, "Postcheck 8"); - require(fdg.anchorStateRegistry() == fdgParams.anchorStateRegistry, "Postcheck 9"); - require(fdg.l2ChainId() == fdgParams.l2ChainId, "Postcheck 10"); - - require(pdg.gameType().raw() == GameTypes.PERMISSIONED_CANNON.raw(), "Postcheck 11"); - require(pdg.absolutePrestate().raw() == absolutePrestate.raw(), "Postcheck 12"); - require(pdg.maxGameDepth() == pdgParams.maxGameDepth, "Postcheck 13"); - require(pdg.splitDepth() == pdgParams.splitDepth, "Postcheck 14"); - require(pdg.clockExtension().raw() == pdgParams.clockExtension.raw(), "Postcheck 15"); - require(pdg.maxClockDuration().raw() == pdgParams.maxClockDuration.raw(), "Postcheck 16"); - require(pdg.vm() == pdgParams.vm, "Postcheck 17"); - require(pdg.weth() == pdgParams.weth, "Postcheck 18"); - require(pdg.anchorStateRegistry() == pdgParams.anchorStateRegistry, "Postcheck 19"); - require(pdg.l2ChainId() == pdgParams.l2ChainId, "Postcheck 20"); - require(pdg.proposer() == proposer, "Postcheck 21"); - require(pdg.challenger() == challenger, "Postcheck 22"); - } - - function run() public { - (address fdg, address pdg) = _deployContracts(); - _postCheck(fdg, pdg); - - vm.writeFile( - "addresses.json", - string.concat( - "{", - "\"faultDisputeGame\": \"", - fdg.toHexString(), - "\",", - "\"permissionedDisputeGame\": \"", - pdg.toHexString(), - "\"" "}" - ) - ); - } - - function _deployContracts() private returns (address, address) { - console.log("FaultDisputeGame params:"); - console.logBytes(abi.encode(fdgParams)); - - console.log("PermissionedDisputeGame params:"); - console.logBytes(abi.encode(pdgParams, proposer, challenger)); - - vm.startBroadcast(); - address fdg = address(new FaultDisputeGame(fdgParams)); - address pdg = address(new PermissionedDisputeGame(pdgParams, proposer, challenger)); - vm.stopBroadcast(); - - return (fdg, pdg); - } -} diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeDGF.s.sol b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeDGF.s.sol deleted file mode 100644 index 302e2bcb..00000000 --- a/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeDGF.s.sol +++ /dev/null @@ -1,150 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.24; - -import {Vm} from "forge-std/Vm.sol"; -import {stdJson} from "forge-std/StdJson.sol"; -import {IMulticall3} from "forge-std/interfaces/IMulticall3.sol"; -import {console} from "forge-std/console.sol"; - -import {LibString} from "@solady/utils/LibString.sol"; - -import {MultisigScript} from "@base-contracts/script/universal/MultisigScript.sol"; -import {Simulation} from "@base-contracts/script/universal/Simulation.sol"; - -interface IDisputeGameFactory { - function gameImpls(uint32) external view returns (address); - function setImplementation(uint32, address) external; -} - -interface IPermissionedDisputeGame { - function challenger() external view returns (address); - function proposer() external view returns (address); -} - -interface ISystemConfig { - function disputeGameFactory() external view returns (address); -} - -interface IFaultDisputeGame { - function version() external view returns (string memory); - function vm() external view returns (address); - function weth() external view returns (address); - function anchorStateRegistry() external view returns (address); - function l2ChainId() external view returns (uint64); - function splitDepth() external view returns (uint64); - function maxGameDepth() external view returns (uint64); - function maxClockDuration() external view returns (uint64); - function clockExtension() external view returns (uint64); -} - -interface IAnchorStateRegistry { - function anchors(uint32) external view returns (bytes32, uint256); -} - -/// @notice This script updates the FaultDisputeGame and PermissionedDisputeGame implementations in the -/// DisputeGameFactory contract. -contract UpgradeDGF is MultisigScript { - using stdJson for string; - - // TODO: Confirm expected version - string public constant EXPECTED_VERSION = "1.7.0"; - uint32 public constant CANNON = 0; - uint32 public constant PERMISSIONED_CANNON = 1; - - address public immutable OWNER_SAFE; - - IDisputeGameFactory public dgfProxy; - address public fdgImpl; - address public pdgImpl; - - constructor() { - OWNER_SAFE = vm.envAddress("OWNER_SAFE"); - } - - function setUp() public { - string memory rootPath = vm.projectRoot(); - string memory path = string.concat(rootPath, "/addresses.json"); - string memory addresses = vm.readFile(path); - - dgfProxy = IDisputeGameFactory(ISystemConfig(vm.envAddress("SYSTEM_CONFIG")).disputeGameFactory()); - fdgImpl = addresses.readAddress(".faultDisputeGame"); - pdgImpl = addresses.readAddress(".permissionedDisputeGame"); - - _precheckDisputeGameImplementation(CANNON, fdgImpl); - _precheckDisputeGameImplementation(PERMISSIONED_CANNON, pdgImpl); - } - - // Checks that the new game being set has the same configuration as the existing implementation with the exception - // of the absolutePrestate. This is the most common scenario where the game implementation is upgraded to provide an - // updated fault proof program that supports an upcoming hard fork. - function _precheckDisputeGameImplementation(uint32 targetGameType, address newImpl) internal view { - console.log("pre-check new game implementations", targetGameType); - - IFaultDisputeGame currentImpl = IFaultDisputeGame(address(dgfProxy.gameImpls(targetGameType))); - // No checks are performed if there is no prior implementation. - // When deploying the first implementation, it is recommended to implement custom checks. - if (address(currentImpl) == address(0)) { - return; - } - IFaultDisputeGame faultDisputeGame = IFaultDisputeGame(newImpl); - require(LibString.eq(currentImpl.version(), EXPECTED_VERSION), "00"); - require(currentImpl.vm() == faultDisputeGame.vm(), "10"); - require(currentImpl.weth() == faultDisputeGame.weth(), "20"); - require(currentImpl.anchorStateRegistry() == faultDisputeGame.anchorStateRegistry(), "30"); - require(currentImpl.l2ChainId() == faultDisputeGame.l2ChainId(), "40"); - require(currentImpl.splitDepth() == faultDisputeGame.splitDepth(), "50"); - require(currentImpl.maxGameDepth() == faultDisputeGame.maxGameDepth(), "60"); - require(currentImpl.maxClockDuration() == faultDisputeGame.maxClockDuration(), "70"); - require(currentImpl.clockExtension() == faultDisputeGame.clockExtension(), "80"); - - if (targetGameType == PERMISSIONED_CANNON) { - IPermissionedDisputeGame currentPDG = IPermissionedDisputeGame(address(currentImpl)); - IPermissionedDisputeGame permissionedDisputeGame = IPermissionedDisputeGame(address(faultDisputeGame)); - require(currentPDG.proposer() == permissionedDisputeGame.proposer(), "90"); - require(currentPDG.challenger() == permissionedDisputeGame.challenger(), "100"); - } - } - - // Confirm the stored implementations are updated and the anchor states still exist. - function _postCheck(Vm.AccountAccess[] memory, Simulation.Payload memory) internal view override { - require(dgfProxy.gameImpls(CANNON) == fdgImpl, "post-110"); - require(dgfProxy.gameImpls(PERMISSIONED_CANNON) == pdgImpl, "post-120"); - _postcheckHasAnchorState(CANNON); - _postcheckHasAnchorState(PERMISSIONED_CANNON); - } - - // Checks the anchor state for the source game type still exists after re-initialization. The actual anchor state - // may have been updated since the task was defined so just assert it exists, not that it has a specific value. - function _postcheckHasAnchorState(uint32 gameType) internal view { - console.log("check anchor state exists", gameType); - - IFaultDisputeGame impl = IFaultDisputeGame(dgfProxy.gameImpls(gameType)); - (bytes32 root, uint256 rootBlockNumber) = IAnchorStateRegistry(impl.anchorStateRegistry()).anchors(gameType); - - require(root != bytes32(0), "check-300"); - require(rootBlockNumber != 0, "check-310"); - } - - function _buildCalls() internal view override returns (IMulticall3.Call3Value[] memory) { - IMulticall3.Call3Value[] memory calls = new IMulticall3.Call3Value[](2); - - calls[0] = IMulticall3.Call3Value({ - target: address(dgfProxy), - allowFailure: false, - callData: abi.encodeCall(IDisputeGameFactory.setImplementation, (CANNON, fdgImpl)), - value: 0 - }); - calls[1] = IMulticall3.Call3Value({ - target: address(dgfProxy), - allowFailure: false, - callData: abi.encodeCall(IDisputeGameFactory.setImplementation, (PERMISSIONED_CANNON, pdgImpl)), - value: 0 - }); - - return calls; - } - - function _ownerSafe() internal view override returns (address) { - return OWNER_SAFE; - } -} diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol new file mode 100644 index 00000000..e0977c96 --- /dev/null +++ b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol @@ -0,0 +1,66 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.15; + +import {Claim} from "@eth-optimism-bedrock/src/dispute/lib/Types.sol"; +import { + IOPContractsManager, + ISystemConfig +} from "@eth-optimism-bedrock/interfaces/L1/IOPContractsManager.sol"; +import { + OPContractsManager +} from "@eth-optimism-bedrock/src/L1/OPContractsManager.sol"; +import {Strings} from "@openzeppelin/contracts/utils/Strings.sol"; +import {MultisigScript} from "@base-contracts/script/universal/MultisigScript.sol"; +import {IMulticall3} from "forge-std/interfaces/IMulticall3.sol"; +import {Vm} from "forge-std/Vm.sol"; +import {Simulation} from "@base-contracts/script/universal/Simulation.sol"; +import {console} from "forge-std/console.sol"; + +/// @notice This script deploys new versions of OP contracts using the OP Contract Manager. +contract UpgradeWithOpSmartContractManager is MultisigScript { + using Strings for address; + + ISystemConfig internal immutable _SYSTEM_CONFIG; + IOPContractsManager internal immutable _OP_CONTRACT_MANAGER; + address public immutable OWNER_SAFE; + Claim immutable CANNON_ABSOLUTE_PRESTATE; + + constructor() { + OWNER_SAFE = vm.envAddress("OWNER_SAFE"); + _SYSTEM_CONFIG = ISystemConfig(vm.envAddress("SYSTEM_CONFIG")); + // _OP_CONTRACT_MANAGER = IOPContractsManager(vm.envAddress("OP_CONTRACT_MANAGER")); + CANNON_ABSOLUTE_PRESTATE = Claim.wrap(vm.envBytes32("ABSOLUTE_PRESTATE")); + + OPContractsManager currentOp = OPContractsManager(vm.envAddress("OP_CONTRACT_MANAGER")); + + OPContractsManager newOP = new OPContractsManager(currentOp.opcmGameTypeAdder(), currentOp.opcmDeployer(), currentOp.opcmUpgrader(), currentOp.opcmInteropMigrator(), currentOp.opcmStandardValidator(), currentOp.superchainConfig(), currentOp.protocolVersions()); + + _OP_CONTRACT_MANAGER = IOPContractsManager(address(newOP)); + console.log("hey", address(_OP_CONTRACT_MANAGER)); + } + + function _postCheck(Vm.AccountAccess[] memory, Simulation.Payload memory) internal view override {} + + function _buildCalls() internal view override returns (IMulticall3.Call3Value[] memory) { + IOPContractsManager.OpChainConfig memory baseConfig = + IOPContractsManager.OpChainConfig(_SYSTEM_CONFIG, CANNON_ABSOLUTE_PRESTATE, Claim.wrap(bytes32(0))); + + IOPContractsManager.OpChainConfig[] memory opChainConfigs = new IOPContractsManager.OpChainConfig[](1); + opChainConfigs[0] = baseConfig; + + IMulticall3.Call3Value[] memory calls = new IMulticall3.Call3Value[](1); + + calls[0] = IMulticall3.Call3Value({ + target: address(_OP_CONTRACT_MANAGER), + allowFailure: false, + callData: abi.encodeCall(IOPContractsManager.upgrade, (opChainConfigs)), + value: 0 + }); + + return calls; + } + + function _ownerSafe() internal view override returns (address) { + return OWNER_SAFE; + } +} From a80e5a08618643aeb452d93561565c86185ac17a Mon Sep 17 00:00:00 2001 From: Joby Thundil Date: Fri, 14 Nov 2025 01:05:58 -0500 Subject: [PATCH 06/23] update script with override --- sepolia/2025-11-07-upgrade-fault-proofs/.env | 8 +-- .../UpgradeWithOpSmartContractManager.sol | 52 +++++++++++++------ 2 files changed, 41 insertions(+), 19 deletions(-) diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/.env b/sepolia/2025-11-07-upgrade-fault-proofs/.env index 256e5a6f..f8950665 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/.env +++ b/sepolia/2025-11-07-upgrade-fault-proofs/.env @@ -1,5 +1,5 @@ -OP_COMMIT=94706ec5072b13030600d1b45ae10b673b660c0d -BASE_CONTRACTS_COMMIT=dcd8c98aa881e0ae4ebf872e0d91692a7bf94000 +OP_COMMIT=d09c836f818c73ae139f60b717654c4e53712743 +BASE_CONTRACTS_COMMIT=de19b64b38784d62606c48891d886289f2ce2e67 ABSOLUTE_PRESTATE=0x03caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b @@ -8,8 +8,10 @@ RECORD_STATE_DIFF=true # Sepolia Config SYSTEM_CONFIG=0xf272670eb55e895584501d564AfEB048bEd26194 OP_CONTRACT_MANAGER=0xc69e4c24db479191676611a25d977203c3bdca62 +PROXY_ADIMIN=0x0389E59Aa0a41E4A413Ae70f0008e76CAA34b1F3 -USE_CB_MULTICALL=true +# temporary until OP updates superchainconfig for overridding purposes +TEST_SUPERCHAIN_CONFIG=0x133C4e1C452E14196a93e60FaE0d8059143BBE57 OWNER_SAFE=0x0fe884546476dDd290eC46318785046ef68a0BA9 CB_SIGNER_SAFE_ADDR=0x646132A1667ca7aD00d36616AFBA1A28116C770A diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol index e0977c96..8e5e72f5 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol +++ b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol @@ -4,46 +4,43 @@ pragma solidity 0.8.15; import {Claim} from "@eth-optimism-bedrock/src/dispute/lib/Types.sol"; import { IOPContractsManager, - ISystemConfig + ISystemConfig, + IProxyAdmin } from "@eth-optimism-bedrock/interfaces/L1/IOPContractsManager.sol"; -import { - OPContractsManager -} from "@eth-optimism-bedrock/src/L1/OPContractsManager.sol"; -import {Strings} from "@openzeppelin/contracts/utils/Strings.sol"; +import {SuperchainConfig} from "@eth-optimism-bedrock/src/L1/SuperchainConfig.sol"; import {MultisigScript} from "@base-contracts/script/universal/MultisigScript.sol"; import {IMulticall3} from "forge-std/interfaces/IMulticall3.sol"; import {Vm} from "forge-std/Vm.sol"; import {Simulation} from "@base-contracts/script/universal/Simulation.sol"; -import {console} from "forge-std/console.sol"; /// @notice This script deploys new versions of OP contracts using the OP Contract Manager. contract UpgradeWithOpSmartContractManager is MultisigScript { - using Strings for address; - ISystemConfig internal immutable _SYSTEM_CONFIG; IOPContractsManager internal immutable _OP_CONTRACT_MANAGER; address public immutable OWNER_SAFE; + IProxyAdmin public immutable PROXY_ADMIN; Claim immutable CANNON_ABSOLUTE_PRESTATE; + // Only for simulation purposes before superchain config upgrade + SuperchainConfig testSuperchainConfig; + constructor() { OWNER_SAFE = vm.envAddress("OWNER_SAFE"); + PROXY_ADMIN = IProxyAdmin(vm.envAddress("PROXY_ADMIN")); _SYSTEM_CONFIG = ISystemConfig(vm.envAddress("SYSTEM_CONFIG")); - // _OP_CONTRACT_MANAGER = IOPContractsManager(vm.envAddress("OP_CONTRACT_MANAGER")); + _OP_CONTRACT_MANAGER = IOPContractsManager(vm.envAddress("OP_CONTRACT_MANAGER")); CANNON_ABSOLUTE_PRESTATE = Claim.wrap(vm.envBytes32("ABSOLUTE_PRESTATE")); - OPContractsManager currentOp = OPContractsManager(vm.envAddress("OP_CONTRACT_MANAGER")); - - OPContractsManager newOP = new OPContractsManager(currentOp.opcmGameTypeAdder(), currentOp.opcmDeployer(), currentOp.opcmUpgrader(), currentOp.opcmInteropMigrator(), currentOp.opcmStandardValidator(), currentOp.superchainConfig(), currentOp.protocolVersions()); - - _OP_CONTRACT_MANAGER = IOPContractsManager(address(newOP)); - console.log("hey", address(_OP_CONTRACT_MANAGER)); + // This is temporary to get the simulation to pass. OP should upgrade the + // superchainconfig to the correct version before this task is executed. + testSuperchainConfig = SuperchainConfig(vm.envAddress("TEST_SUPERCHAIN_CONFIG")); } function _postCheck(Vm.AccountAccess[] memory, Simulation.Payload memory) internal view override {} function _buildCalls() internal view override returns (IMulticall3.Call3Value[] memory) { IOPContractsManager.OpChainConfig memory baseConfig = - IOPContractsManager.OpChainConfig(_SYSTEM_CONFIG, CANNON_ABSOLUTE_PRESTATE, Claim.wrap(bytes32(0))); + IOPContractsManager.OpChainConfig(_SYSTEM_CONFIG, PROXY_ADMIN, CANNON_ABSOLUTE_PRESTATE); IOPContractsManager.OpChainConfig[] memory opChainConfigs = new IOPContractsManager.OpChainConfig[](1); opChainConfigs[0] = baseConfig; @@ -63,4 +60,27 @@ contract UpgradeWithOpSmartContractManager is MultisigScript { function _ownerSafe() internal view override returns (address) { return OWNER_SAFE; } + + function _useMulticall() internal pure override returns (bool) { + return false; + } + + function _simulationOverrides() + internal + view + virtual + override + returns (Simulation.StateOverride[] memory overrides_) + { + overrides_ = new Simulation.StateOverride[](1); + // Override the `superchainConfig` state variable in the SystemConfig to point to our test one + // with the correct version. + Simulation.StorageOverride memory storageOverride = Simulation.StorageOverride( + bytes32(0x000000000000000000000000000000000000000000000000000000000000006c), + bytes32(uint256(uint160(address(testSuperchainConfig)))) + ); + Simulation.StorageOverride[] memory storageOverrides = new Simulation.StorageOverride[](1); + storageOverrides[0] = storageOverride; + overrides_[0] = Simulation.StateOverride(address(_SYSTEM_CONFIG), storageOverrides); + } } From 66a410a07069c4eb2a07101601b8bd7205a24914 Mon Sep 17 00:00:00 2001 From: Joby Thundil Date: Fri, 14 Nov 2025 12:00:34 -0500 Subject: [PATCH 07/23] add postchecks --- .../UpgradeWithOpSmartContractManager.sol | 61 +++++++++++++++++-- 1 file changed, 55 insertions(+), 6 deletions(-) diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol index 8e5e72f5..091e2feb 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol +++ b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol @@ -1,11 +1,13 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.15; -import {Claim} from "@eth-optimism-bedrock/src/dispute/lib/Types.sol"; +import {Claim, GameTypes} from "@eth-optimism-bedrock/src/dispute/lib/Types.sol"; import { IOPContractsManager, ISystemConfig, - IProxyAdmin + IProxyAdmin, + IDisputeGameFactory, + IFaultDisputeGame } from "@eth-optimism-bedrock/interfaces/L1/IOPContractsManager.sol"; import {SuperchainConfig} from "@eth-optimism-bedrock/src/L1/SuperchainConfig.sol"; import {MultisigScript} from "@base-contracts/script/universal/MultisigScript.sol"; @@ -16,7 +18,7 @@ import {Simulation} from "@base-contracts/script/universal/Simulation.sol"; /// @notice This script deploys new versions of OP contracts using the OP Contract Manager. contract UpgradeWithOpSmartContractManager is MultisigScript { ISystemConfig internal immutable _SYSTEM_CONFIG; - IOPContractsManager internal immutable _OP_CONTRACT_MANAGER; + IOPContractsManager internal immutable OP_CONTRACT_MANAGER; address public immutable OWNER_SAFE; IProxyAdmin public immutable PROXY_ADMIN; Claim immutable CANNON_ABSOLUTE_PRESTATE; @@ -28,7 +30,7 @@ contract UpgradeWithOpSmartContractManager is MultisigScript { OWNER_SAFE = vm.envAddress("OWNER_SAFE"); PROXY_ADMIN = IProxyAdmin(vm.envAddress("PROXY_ADMIN")); _SYSTEM_CONFIG = ISystemConfig(vm.envAddress("SYSTEM_CONFIG")); - _OP_CONTRACT_MANAGER = IOPContractsManager(vm.envAddress("OP_CONTRACT_MANAGER")); + OP_CONTRACT_MANAGER = IOPContractsManager(vm.envAddress("OP_CONTRACT_MANAGER")); CANNON_ABSOLUTE_PRESTATE = Claim.wrap(vm.envBytes32("ABSOLUTE_PRESTATE")); // This is temporary to get the simulation to pass. OP should upgrade the @@ -36,7 +38,54 @@ contract UpgradeWithOpSmartContractManager is MultisigScript { testSuperchainConfig = SuperchainConfig(vm.envAddress("TEST_SUPERCHAIN_CONFIG")); } - function _postCheck(Vm.AccountAccess[] memory, Simulation.Payload memory) internal view override {} + function _postCheck(Vm.AccountAccess[] memory, Simulation.Payload memory) internal view override { + IOPContractsManager.Implementations memory impls = OP_CONTRACT_MANAGER.implementations(); + + // verify proxyadmin address updates + require(PROXY_ADMIN.getProxyImplementation(address(_SYSTEM_CONFIG)) == impls.systemConfigImpl, "00"); + require( + PROXY_ADMIN.getProxyImplementation(address(_SYSTEM_CONFIG.optimismPortal())) == impls.optimismPortalImpl, + "01" + ); + require( + PROXY_ADMIN.getProxyImplementation(address(_SYSTEM_CONFIG.optimismMintableERC20Factory())) + == impls.optimismMintableERC20FactoryImpl, + "02" + ); + require( + PROXY_ADMIN.getProxyImplementation(address(_SYSTEM_CONFIG.disputeGameFactory())) + == impls.disputeGameFactoryImpl, + "03" + ); + require( + PROXY_ADMIN.getProxyImplementation(address(_SYSTEM_CONFIG.disputeGameFactory())) + == impls.disputeGameFactoryImpl, + "04" + ); + + ISystemConfig.Addresses memory opChainAddrs = _SYSTEM_CONFIG.getAddresses(); + require( + PROXY_ADMIN.getProxyImplementation(opChainAddrs.l1CrossDomainMessenger) == impls.l1CrossDomainMessengerImpl, + "05" + ); + require(PROXY_ADMIN.getProxyImplementation(opChainAddrs.l1StandardBridge) == impls.l1StandardBridgeImpl, "06"); + require(PROXY_ADMIN.getProxyImplementation(opChainAddrs.l1ERC721Bridge) == impls.l1ERC721BridgeImpl, "07"); + require(PROXY_ADMIN.getProxyImplementation(opChainAddrs.l1ERC721Bridge) == impls.l1ERC721BridgeImpl, "08"); + + IDisputeGameFactory dfg = IDisputeGameFactory(_SYSTEM_CONFIG.disputeGameFactory()); + IFaultDisputeGame fdg = IFaultDisputeGame(address(dfg.gameImpls(GameTypes.CANNON))); + IFaultDisputeGame pfdg = IFaultDisputeGame(address(dfg.gameImpls(GameTypes.PERMISSIONED_CANNON))); + Claim fdgAbsolutePrestate = fdg.absolutePrestate(); + Claim pfdgAbsolutePrestate = pfdg.absolutePrestate(); + + // verify FaultDisputeGame and PermissionedDisputeGame absolute prestate + require(Claim.unwrap(fdgAbsolutePrestate) == Claim.unwrap(CANNON_ABSOLUTE_PRESTATE), "09"); + require(Claim.unwrap(pfdgAbsolutePrestate) == Claim.unwrap(CANNON_ABSOLUTE_PRESTATE), "10"); + + // verify FaultDisputeGame and PermissionedDisputeGame absolute vm + require(address(fdg.vm()) == impls.mipsImpl, "11"); + require(address(pfdg.vm()) == impls.mipsImpl, "12"); + } function _buildCalls() internal view override returns (IMulticall3.Call3Value[] memory) { IOPContractsManager.OpChainConfig memory baseConfig = @@ -48,7 +97,7 @@ contract UpgradeWithOpSmartContractManager is MultisigScript { IMulticall3.Call3Value[] memory calls = new IMulticall3.Call3Value[](1); calls[0] = IMulticall3.Call3Value({ - target: address(_OP_CONTRACT_MANAGER), + target: address(OP_CONTRACT_MANAGER), allowFailure: false, callData: abi.encodeCall(IOPContractsManager.upgrade, (opChainConfigs)), value: 0 From c420faa0bdb608b40e93cf02937fa5b0f9c0d608 Mon Sep 17 00:00:00 2001 From: Joby Thundil Date: Fri, 14 Nov 2025 13:00:04 -0500 Subject: [PATCH 08/23] add validations and readmes --- sepolia/2025-11-07-upgrade-fault-proofs/.env | 2 +- .../FACILITATORS.md | 50 +++++ .../2025-11-07-upgrade-fault-proofs/Makefile | 13 -- .../2025-11-07-upgrade-fault-proofs/README.md | 177 ++---------------- .../validations/cb-sc-signer.json | 124 ++++++++++-- .../validations/cb-signer.json | 124 ++++++++++-- .../validations/op-signer.json | 118 ++++++++++-- 7 files changed, 396 insertions(+), 212 deletions(-) create mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/FACILITATORS.md diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/.env b/sepolia/2025-11-07-upgrade-fault-proofs/.env index f8950665..b331effc 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/.env +++ b/sepolia/2025-11-07-upgrade-fault-proofs/.env @@ -8,7 +8,7 @@ RECORD_STATE_DIFF=true # Sepolia Config SYSTEM_CONFIG=0xf272670eb55e895584501d564AfEB048bEd26194 OP_CONTRACT_MANAGER=0xc69e4c24db479191676611a25d977203c3bdca62 -PROXY_ADIMIN=0x0389E59Aa0a41E4A413Ae70f0008e76CAA34b1F3 +PROXY_ADMIN=0x0389E59Aa0a41E4A413Ae70f0008e76CAA34b1F3 # temporary until OP updates superchainconfig for overridding purposes TEST_SUPERCHAIN_CONFIG=0x133C4e1C452E14196a93e60FaE0d8059143BBE57 diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/FACILITATORS.md b/sepolia/2025-11-07-upgrade-fault-proofs/FACILITATORS.md new file mode 100644 index 00000000..67d7a467 --- /dev/null +++ b/sepolia/2025-11-07-upgrade-fault-proofs/FACILITATORS.md @@ -0,0 +1,50 @@ +#### Execute the transaction + +1. IMPORTANT: Ensure op-challenger has been updated before executing. +1. Collect outputs from all participating signers. +1. Concatenate all signatures and export it as the `SIGNATURES` + environment variable, i.e. `export +SIGNATURES="[SIGNATURE1][SIGNATURE2]..."`. +1. Run the `make execute` or `make approve` command as described below to execute the transaction. + +For example, if the quorum is 3 and you get the following outputs: + +```shell +Data: 0xDEADBEEF +Signer: 0xC0FFEE01 +Signature: AAAA +``` + +```shell +Data: 0xDEADBEEF +Signer: 0xC0FFEE02 +Signature: BBBB +``` + +```shell +Data: 0xDEADBEEF +Signer: 0xC0FFEE03 +Signature: CCCC +``` + +Coinbase facilitator: + +```bash +SIGNATURES=AAAABBBBCCCC make approve-cb +``` + +```bash +SIGNATURES=AAAABBBBCCCC make approve-cb-sc +``` + +Optimism facilitator: + +```bash +SIGNATURES=AAAABBBBCCCC make approve-op +``` + +Once the signatures have been submitted approving the transaction for all nested Safes run: + +```bash +make execute +``` \ No newline at end of file diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/Makefile b/sepolia/2025-11-07-upgrade-fault-proofs/Makefile index cfb6848b..bf3f6374 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/Makefile +++ b/sepolia/2025-11-07-upgrade-fault-proofs/Makefile @@ -64,27 +64,14 @@ run-script-op: # CB -.PHONY: sign-cb -sign-cb: - $(call MULTISIG_SIGN,$(CB_NESTED_SAFE_ADDR) $(CB_SIGNER_SAFE_ADDR)) - .PHONY: approve-cb approve-cb: $(call MULTISIG_APPROVE,$(CB_NESTED_SAFE_ADDR) $(CB_SIGNER_SAFE_ADDR),$(SIGNATURES)) -.PHONY: sign-cb-sc -sign-cb-sc: - $(call MULTISIG_SIGN,$(CB_SC_SAFE_ADDR) $(CB_SIGNER_SAFE_ADDR)) - .PHONY: approve-cb-sc approve-cb-sc: $(call MULTISIG_APPROVE,$(CB_SC_SAFE_ADDR) $(CB_SIGNER_SAFE_ADDR),$(SIGNATURES)) -# OP -.PHONY: sign-op -sign-op: - $(call MULTISIG_SIGN,$(OP_SIGNER_SAFE_ADDR)) - .PHONY: approve-op approve-op: $(call MULTISIG_APPROVE,$(OP_SIGNER_SAFE_ADDR),$(SIGNATURES)) diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/README.md b/sepolia/2025-11-07-upgrade-fault-proofs/README.md index bbff6d1b..4d70404b 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/README.md +++ b/sepolia/2025-11-07-upgrade-fault-proofs/README.md @@ -1,4 +1,4 @@ -# Upgrade Fault Proofs +# Upgrade Contracts using OP Contracts Manager Status: PENDING @@ -8,186 +8,45 @@ This task contains two scripts. One for deploying new versions of the `FaultDisp ## Procedure -### 1. Update repo: - -```bash -cd contract-deployments -git pull -cd /-upgrade-fault-proofs -make deps -``` - -### 2. Setup Ledger - -Your Ledger needs to be connected and unlocked. The Ethereum -application needs to be opened on Ledger with the message "Application -is ready". - -### 3. Run relevant script(s) - -#### 3.1 Deploy new Dispute Game Implementations - -```bash -make deploy -``` - -This will output the new addresses of the `FaultDisputeGame` and `PermissionedDisputeGame` contracts to an `addresses.json` file. You will need to commit this file to the repo before signers can sign. - -#### 3.2 Sign the transaction +## Install dependencies -**If on testnet**: +### 1. Update foundry ```bash -make sign +foundryup ``` -**If on mainnet**: +### 2. Install Node.js if needed -Coinbase signer: +First, check if you have node installed ```bash -make sign-cb +node --version ``` -Op signer: +If you see a version output from the above command, you can move on. Otherwise, install node ```bash -make sign-op +brew install node ``` -You will see a "Simulation link" from the output. - -Paste this URL in your browser. A prompt may ask you to choose a -project, any project will do. You can create one if necessary. - -Click "Simulate Transaction". - -We will be performing 3 validations and extract the domain hash and message hash to approve on your Ledger: - -1. Validate integrity of the simulation. -2. Validate correctness of the state diff. -3. Validate and extract domain hash and message hash to approve. - -##### 3.2.1 Validate integrity of the simulation. - -Make sure you are on the "Summary" tab of the tenderly simulation, to -validate integrity of the simulation, we need to check the following: - -1. "Network": Check the network is Sepolia or Mainnet. -2. "Timestamp": Check the simulation is performed on a block with a - recent timestamp (i.e. close to when you run the script). -3. "Sender": Check the address shown is your signer account. If not see the derivation path Note above. - -##### 3.2.2. Validate correctness of the state diff. - -Now click on the "State" tab, and refer to the [State Validations](./VALIDATION.md) instructions for the transaction you are signing. -Once complete return to this document to complete the signing. - -##### 3.2.3. Extract the domain hash and the message hash to approve. - -Now that we have verified the transaction performs the right -operation, we need to extract the domain hash and the message hash to -approve. - -Go back to the "Summary" tab, and find the -`GnosisSafe.checkSignatures` (for OP signers) or `Safe.checkSignatures` (for Coinbase signers) call. -This call's `data` parameter contains both the domain hash and the -message hash that will show up in your Ledger. - -It will be a concatenation of `0x1901`, the domain hash, and the -message hash: `0x1901[domain hash][message hash]`. - -Note down this value. You will need to compare it with the ones -displayed on the Ledger screen at signing. +## Approving the Update transaction -Once the validations are done, it's time to actually sign the -transaction. - -> [!WARNING] -> This is the most security critical part of the playbook: make sure the -> domain hash and message hash in the following two places match: -> -> 1. On your Ledger screen. -> 2. In the Tenderly simulation. You should use the same Tenderly -> simulation as the one you used to verify the state diffs, instead -> of opening the new one printed in the console. -> -> There is no need to verify anything printed in the console. There is -> no need to open the new Tenderly simulation link either. - -After verification, sign the transaction. You will see the `Data`, -`Signer` and `Signature` printed in the console. Format should be -something like this: - -```shell -Data: -Signer:
-Signature: -``` - -Double check the signer address is the right one. - -##### 3.2.4 Send the output to Facilitator(s) - -Nothing has occurred onchain - these are offchain signatures which -will be collected by Facilitators for execution. Execution can occur -by anyone once a threshold of signatures are collected, so a -Facilitator will do the final execution for convenience. - -Share the `Data`, `Signer` and `Signature` with the Facilitator, and -congrats, you are done! - -### [For Facilitator ONLY] How to execute - -#### Execute the transaction - -1. IMPORTANT: Ensure op-challenger has been updated before executing. -1. Collect outputs from all participating signers. -1. Concatenate all signatures and export it as the `SIGNATURES` - environment variable, i.e. `export -SIGNATURES="[SIGNATURE1][SIGNATURE2]..."`. -1. Run the `make execute` or `make approve` command as described below to execute the transaction. - -For example, if the quorum is 2 and you get the following outputs: - -```shell -Data: 0xDEADBEEF -Signer: 0xC0FFEE01 -Signature: AAAA -``` - -```shell -Data: 0xDEADBEEF -Signer: 0xC0FFEE02 -Signature: BBBB -``` - -If on testnet, then you should run: - -Coinbase facilitator: - -```bash -SIGNATURES=AAAABBBB make execute -``` - -If on mainnet, then you should run: - -Coinbase facilitator: +### 1. Update repo: ```bash -SIGNATURES=AAAABBBB make approve-cb +cd contract-deployments +git pull ``` -Optimism facilitator: +### 2. Run the signing tool (NOTE: do not enter the task directory. Run this command from the project's root). ```bash -SIGNATURES=AAAABBBB make approve-op +make sign-task ``` -#### If on mainnet, execute the transaction +### 3. Open the UI at [http://localhost:3000](http://localhost:3000) -Once the signatures have been submitted approving the transaction for all nested Safes run: +Be sure to select the correct task user from the list of available users to sign (**not** the "rollback" user). -```bash -make execute -``` +### 4. Send signature to facilitator diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-sc-signer.json b/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-sc-signer.json index 5bab1fde..d92cbfc5 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-sc-signer.json +++ b/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-sc-signer.json @@ -1,15 +1,15 @@ { "taskName": "U17 - Jovian Contracts Upgrade", - "scriptName": "UpgradeDGF", + "scriptName": "UpgradeWithOpSmartContractManager", "signature": "sign(address[])", "sender": "0x7f10098bd53519c739ca8a404afe127647d94774", - "args": "[0x6AF0674791925f767060Dd52f7fB20984E8639d8, 0x646132A1667ca7aD00d36616AFBA1A28116C770A]", - "ledgerId": 0, + "args": "[0x6AF0674791925f767060Dd52f7fB20984E8639d8,0x646132A1667ca7aD00d36616AFBA1A28116C770A]", + "ledgerId": 1, "rpcUrl": "https://ethereum-full-sepolia-k8s-dev.cbhq.net", "expectedDomainAndMessageHashes": { "address": "0x0fe884546476dDd290eC46318785046ef68a0BA9", "domainHash": "0x6f25427e79742a1eb82c103e2bf43c85fc59509274ec258ad6ed841c4a0048aa", - "messageHash": "0xdbcb397a586511fbffe4fd3880baf886194494ce057eb1be6fa8dc5fe3916eb6" + "messageHash": "0xb27022be270aecd3b178089275018d5ae3d2bf5816a8edcca2ea5f192c85fa5f" }, "stateOverrides": [ { @@ -39,11 +39,22 @@ "address": "0x6af0674791925f767060dd52f7fb20984e8639d8", "overrides": [ { - "key": "0xac931b76a6ceaa24145edb908b8eb5b0fc927f22825181637d4973dae6caf0f6", + "key": "0x1dbf25b2f964cd98c5401f22339f9fa5815d0cfcb3da53e4414e5d16f5ec096b", "value": "0x0000000000000000000000000000000000000000000000000000000000000001", "description": "Simulates an approval from msg.sender in order for the task simulation to succeed." } ] + }, + { + "name": "System Config - Sepolia", + "address": "0xf272670eb55e895584501d564afeb048bed26194", + "overrides": [ + { + "key": "0x000000000000000000000000000000000000000000000000000000000000006c", + "value": "0x000000000000000000000000133c4e1c452e14196a93e60fae0d8059143bbe57", + "description": "Temprorary override of SuperChainConfig to v2.4.0" + } + ] } ], "stateChanges": [ @@ -59,10 +70,36 @@ "allowDifference": false }, { - "key": "0x159f2cc5b13cd0ac2bad1f750c79933c0483d97a3db3fc1d3d741d430e4ac877", + "key": "0xc75b371a1ae964cc781240f39c8650e713bac3098792a24e4d0aa18d48263485", "before": "0x0000000000000000000000000000000000000000000000000000000000000000", "after": "0x0000000000000000000000000000000000000000000000000000000000000001", - "description": "<>", + "description": "Increment approvedHashes", + "allowDifference": false + } + ] + }, + { + "name": "L1ERC721Bridge Proxy", + "address": "0x21efd066e581fa55ef105170cc04d74386a09190", + "changes": [ + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x0000000000000000000000007f1d12fb2911eb095278085f721e644c1f675696", + "after": "0x00000000000000000000000074f1ac50eb0be98853805d381c884f5f9abdecf9", + "description": "Update address of L1ERC721Bridge to new implementation", + "allowDifference": false + } + ] + }, + { + "name": "Optimism Portal Proxy", + "address": "0x49f53e41452c74589e85ca1677426ba426459e85", + "changes": [ + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x000000000000000000000000381e729ff983fa4bced820e7b922d79bf653b999", + "after": "0x0000000000000000000000007cf803296662e8c72a6c1d6450572209acf7f202", + "description": "Update address of Optimism Portal to new implementation", "allowDifference": false } ] @@ -79,10 +116,10 @@ "allowDifference": false }, { - "key": "0x6234afabde82d3b3f50dd2e0a91a7981d467af38153df6e4aeb593f088d8dbc9", + "key": "0xbcb5b7da83ea6bc13376cf72e234ae02c6869248995a284b5ec545eadb659887", "before": "0x0000000000000000000000000000000000000000000000000000000000000000", "after": "0x0000000000000000000000000000000000000000000000000000000000000001", - "description": "<>", + "description": "Increment approvedHashes", "allowDifference": false } ] @@ -101,21 +138,80 @@ ] }, { - "name": "DisputeGameFactory", + "name": "AddressManager", + "address": "0x709c2b8ef4a9fefc629a8a2c1af424dc5bd6ad1b", + "changes": [ + { + "key": "0x515216935740e67dfdda5cf8e248ea32b3277787818ab59153061ac875c9385e", + "before": "0x00000000000000000000000022d12e0faebd62d429514a65ebae32dd316c12d6", + "after": "0x000000000000000000000000b686f13aff1e427a1f993f29ab0f2e7383729fe0", + "description": "Update address of L1CrossDomainMessenger to new implementation", + "allowDifference": false + } + ] + }, + { + "name": "OptimismMintableERC20Factory Proxy", + "address": "0xb1efb9650ad6d0cc1ed3ac4a0b7f1d5732696d37", + "changes": [ + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x0000000000000000000000005493f4677a186f64805fe7317d6993ba4863988f", + "after": "0x0000000000000000000000008ee6fb13c6c9a7e401531168e196fbf8b05ceabb", + "description": "Update address of OptimismMintableERC20Factory to new implementation", + "allowDifference": false + } + ] + }, + { + "name": "DisputeGameFactory Proxy", "address": "0xd6e6dbf4f7ea0ac412fd8b65ed297e64bb7a06e1", "changes": [ + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x00000000000000000000000033d1e8571a85a538ed3d5a4d88f46c112383439d", + "after": "0x00000000000000000000000074fac1d45b98bae058f8f566201c9a81b85c7d50", + "description": "Update address of DisputeGameFactory to new implementation", + "allowDifference": false + }, { "key": "0x4d5a9bd2e41301728d41c8e705190becb4e74abe869f75bdb405b63716a35f9e", "before": "0x0000000000000000000000005920bd6ab4c1b96bfd4efc56eb6cf9b018e3bf4c", - "after": "0x000000000000000000000000284a4cf8cb83d3377f8eadfff2414f2bfa68484b", - "description": "update implementation address of PermissionedDisputeGame", + "after": "0x000000000000000000000000a1ae4fd5541a3e7a912e45560ed60d3edc5f9a05", + "description": "Update address of PermissionedDisputeGame to new implementation", "allowDifference": false }, { "key": "0xffdfc1249c027f9191656349feb0761381bb32c9f557e01f419fd08754bf5a1b", "before": "0x000000000000000000000000f83157709129bd03fb02e96950be288e8c2c1c67", - "after": "0x000000000000000000000000f0b64b080548b1f688356b9cf880076c2145f79a", - "description": "update implementation address of FaultDisputeGame", + "after": "0x000000000000000000000000ed839a2aa262eccc513308fe7b8f39088ff8e992", + "description": "Update address of FaultDisputeGame to new implementation", + "allowDifference": false + } + ] + }, + { + "name": "System Config Proxy - Sepolia", + "address": "0xf272670eb55e895584501d564afeb048bed26194", + "changes": [ + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x0000000000000000000000002bfe4a5bd5a41e9d848d843ebcdfa15954e9a557", + "after": "0x0000000000000000000000002fa28989fc559836e9d66dff3010c7f7f41c65ed", + "description": "Update address of SystemConfig to new implementation", + "allowDifference": false + } + ] + }, + { + "name": "L1StandardBridge Proxy", + "address": "0xfd0bf71f60660e2f608ed56e1659c450eb113120", + "changes": [ + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x000000000000000000000000e32b192fb1dca88fcb1c56b3acb429e32238adcb", + "after": "0x00000000000000000000000061525eaacddb97d9184afc205827e6a4fd0bf62a", + "description": "Update address of L1StandardBridge to new implementation", "allowDifference": false } ] diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-signer.json b/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-signer.json index 50b6e4cd..674f5d63 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-signer.json +++ b/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-signer.json @@ -1,15 +1,15 @@ { "taskName": "U17 - Jovian Contracts Upgrade", - "scriptName": "UpgradeDGF", + "scriptName": "UpgradeWithOpSmartContractManager", "signature": "sign(address[])", "sender": "0x7f10098bd53519c739ca8a404afe127647d94774", - "args": "[0x5dfEB066334B67355A15dc9b67317fD2a2e1f77f, 0x646132A1667ca7aD00d36616AFBA1A28116C770A]", - "ledgerId": 0, + "args": "[0x5dfEB066334B67355A15dc9b67317fD2a2e1f77f,0x646132A1667ca7aD00d36616AFBA1A28116C770A]", + "ledgerId": 1, "rpcUrl": "https://ethereum-full-sepolia-k8s-dev.cbhq.net", "expectedDomainAndMessageHashes": { "address": "0x0fe884546476dDd290eC46318785046ef68a0BA9", "domainHash": "0x0127bbb910536860a0757a9c0ffcdf9e4452220f566ed83af1f27f9e833f0e23", - "messageHash": "0xb86c8e9aa17198bf5ec9c5aaed2cc755014f28ec190e56bdf3704b21e6bb7b16" + "messageHash": "0xb61b2eb4bb59bcd705aaf172c6caa1dd622cf5bd35fbaa67d0d0d9bd9a0c0898" }, "stateOverrides": [ { @@ -33,7 +33,7 @@ "description": "Override the threshold to 1 so the transaction simulation can occur." }, { - "key": "0x6ef852d202a6ad27bb9c8216f6583393e7c2719264bd059bc43932d6af72d2f4", + "key": "0x612ab2e1430587c769e82b224707a5e70a756d03bb8938d3515bdc72c4adb07e", "value": "0x0000000000000000000000000000000000000000000000000000000000000001", "description": "Simulates an approval from msg.sender in order for the task simulation to succeed." } @@ -49,6 +49,17 @@ "description": "Override the threshold to 1 so the transaction simulation can occur." } ] + }, + { + "name": "System Config - Sepolia", + "address": "0xf272670eb55e895584501d564afeb048bed26194", + "overrides": [ + { + "key": "0x000000000000000000000000000000000000000000000000000000000000006c", + "value": "0x000000000000000000000000133c4e1c452e14196a93e60fae0d8059143bbe57", + "description": "Temprorary override of SuperChainConfig to v2.4.0" + } + ] } ], "stateChanges": [ @@ -64,10 +75,36 @@ "allowDifference": false }, { - "key": "0x159f2cc5b13cd0ac2bad1f750c79933c0483d97a3db3fc1d3d741d430e4ac877", + "key": "0xc75b371a1ae964cc781240f39c8650e713bac3098792a24e4d0aa18d48263485", "before": "0x0000000000000000000000000000000000000000000000000000000000000000", "after": "0x0000000000000000000000000000000000000000000000000000000000000001", - "description": "<>", + "description": "Increment approvedHashes", + "allowDifference": false + } + ] + }, + { + "name": "L1ERC721Bridge Proxy", + "address": "0x21efd066e581fa55ef105170cc04d74386a09190", + "changes": [ + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x0000000000000000000000007f1d12fb2911eb095278085f721e644c1f675696", + "after": "0x00000000000000000000000074f1ac50eb0be98853805d381c884f5f9abdecf9", + "description": "Update address of L1ERC721Bridge to new implementation", + "allowDifference": false + } + ] + }, + { + "name": "Optimism Portal Proxy", + "address": "0x49f53e41452c74589e85ca1677426ba426459e85", + "changes": [ + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x000000000000000000000000381e729ff983fa4bced820e7b922d79bf653b999", + "after": "0x0000000000000000000000007cf803296662e8c72a6c1d6450572209acf7f202", + "description": "Update address of Optimism Portal to new implementation", "allowDifference": false } ] @@ -97,30 +134,89 @@ "allowDifference": false }, { - "key": "0xa5c5e4439e2c9b3a5b33918597eb6ab8f02b8e090a55b6580d1f6eb0f889ba8f", + "key": "0xea1ce1e66d025647b83425bfcfca0f8665836bce6a3d8fd50541909d7c6c9bdf", "before": "0x0000000000000000000000000000000000000000000000000000000000000000", "after": "0x0000000000000000000000000000000000000000000000000000000000000001", - "description": "<>", + "description": "Increment approvedHashes", "allowDifference": false } ] }, { - "name": "DisputeGameFactory", + "name": "AddressManager", + "address": "0x709c2b8ef4a9fefc629a8a2c1af424dc5bd6ad1b", + "changes": [ + { + "key": "0x515216935740e67dfdda5cf8e248ea32b3277787818ab59153061ac875c9385e", + "before": "0x00000000000000000000000022d12e0faebd62d429514a65ebae32dd316c12d6", + "after": "0x000000000000000000000000b686f13aff1e427a1f993f29ab0f2e7383729fe0", + "description": "Update address of L1CrossDomainMessenger to new implementation", + "allowDifference": false + } + ] + }, + { + "name": "OptimismMintableERC20Factory Proxy", + "address": "0xb1efb9650ad6d0cc1ed3ac4a0b7f1d5732696d37", + "changes": [ + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x0000000000000000000000005493f4677a186f64805fe7317d6993ba4863988f", + "after": "0x0000000000000000000000008ee6fb13c6c9a7e401531168e196fbf8b05ceabb", + "description": "Update address of OptimismMintableERC20Factory to new implementation", + "allowDifference": false + } + ] + }, + { + "name": "DisputeGameFactory Proxy", "address": "0xd6e6dbf4f7ea0ac412fd8b65ed297e64bb7a06e1", "changes": [ + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x00000000000000000000000033d1e8571a85a538ed3d5a4d88f46c112383439d", + "after": "0x00000000000000000000000074fac1d45b98bae058f8f566201c9a81b85c7d50", + "description": "Update address of DisputeGameFactory to new implementation", + "allowDifference": false + }, { "key": "0x4d5a9bd2e41301728d41c8e705190becb4e74abe869f75bdb405b63716a35f9e", "before": "0x0000000000000000000000005920bd6ab4c1b96bfd4efc56eb6cf9b018e3bf4c", - "after": "0x000000000000000000000000284a4cf8cb83d3377f8eadfff2414f2bfa68484b", - "description": "update implementation address of PermissionedDisputeGame", + "after": "0x000000000000000000000000a1ae4fd5541a3e7a912e45560ed60d3edc5f9a05", + "description": "Update address of PermissionedDisputeGame to new implementation", "allowDifference": false }, { "key": "0xffdfc1249c027f9191656349feb0761381bb32c9f557e01f419fd08754bf5a1b", "before": "0x000000000000000000000000f83157709129bd03fb02e96950be288e8c2c1c67", - "after": "0x000000000000000000000000f0b64b080548b1f688356b9cf880076c2145f79a", - "description": "update implementation address of FaultDisputeGame", + "after": "0x000000000000000000000000ed839a2aa262eccc513308fe7b8f39088ff8e992", + "description": "Update address of FaultDisputeGame to new implementation", + "allowDifference": false + } + ] + }, + { + "name": "System Config Proxy - Sepolia", + "address": "0xf272670eb55e895584501d564afeb048bed26194", + "changes": [ + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x0000000000000000000000002bfe4a5bd5a41e9d848d843ebcdfa15954e9a557", + "after": "0x0000000000000000000000002fa28989fc559836e9d66dff3010c7f7f41c65ed", + "description": "Update address of SystemConfig to new implementation", + "allowDifference": false + } + ] + }, + { + "name": "L1StandardBridge Proxy", + "address": "0xfd0bf71f60660e2f608ed56e1659c450eb113120", + "changes": [ + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x000000000000000000000000e32b192fb1dca88fcb1c56b3acb429e32238adcb", + "after": "0x00000000000000000000000061525eaacddb97d9184afc205827e6a4fd0bf62a", + "description": "Update address of L1StandardBridge to new implementation", "allowDifference": false } ] diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/validations/op-signer.json b/sepolia/2025-11-07-upgrade-fault-proofs/validations/op-signer.json index 60e36291..5ad7f083 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/validations/op-signer.json +++ b/sepolia/2025-11-07-upgrade-fault-proofs/validations/op-signer.json @@ -1,15 +1,15 @@ { "taskName": "U17 - Jovian Contracts Upgrade", - "scriptName": "UpgradeDGF", + "scriptName": "UpgradeWithOpSmartContractManager", "signature": "sign(address[])", "sender": "0x0CF2F86C3338993ce10F74d6f4B095712c7efe26", "args": "[0x6AF0674791925f767060Dd52f7fB20984E8639d8]", - "ledgerId": 0, + "ledgerId": 1, "rpcUrl": "https://ethereum-full-sepolia-k8s-dev.cbhq.net", "expectedDomainAndMessageHashes": { "address": "0x0fe884546476dDd290eC46318785046ef68a0BA9", "domainHash": "0x6f25427e79742a1eb82c103e2bf43c85fc59509274ec258ad6ed841c4a0048aa", - "messageHash": "0x99b31a9d76b086c807ca55c38e6a67360835aa48ddb3785ff192fab7e695b625" + "messageHash": "0x89a1d4884ca278f7ea9cd1d010572686b6431a11e3f8f699c85ca974d1cdbe02" }, "stateOverrides": [ { @@ -28,11 +28,22 @@ "address": "0x6af0674791925f767060dd52f7fb20984e8639d8", "overrides": [ { - "key": "0x421561ceed58c3682b00978e5804ca12719b4fad929b542e67d585c2bf0999ad", + "key": "0x6b6236770e801b703e7312f8dc240dea8002c5bc6a2454508de44672e2a57a35", "value": "0x0000000000000000000000000000000000000000000000000000000000000001", "description": "Simulates an approval from msg.sender in order for the task simulation to succeed." } ] + }, + { + "name": "System Config - Sepolia", + "address": "0xf272670eb55e895584501d564afeb048bed26194", + "overrides": [ + { + "key": "0x000000000000000000000000000000000000000000000000000000000000006c", + "value": "0x000000000000000000000000133c4e1c452e14196a93e60fae0d8059143bbe57", + "description": "Temprorary override of SuperChainConfig to v2.4.0" + } + ] } ], "stateChanges": [ @@ -48,10 +59,36 @@ "allowDifference": false }, { - "key": "0x13ddca0a98e4be5608b7fb7d31986bfcf62ecdca0cc6142643a9c6c8f5de261b", + "key": "0x533e011ba3bc153180d605f18ea46bf16af7f44c55a3896267c3b536cfc7e13c", "before": "0x0000000000000000000000000000000000000000000000000000000000000000", "after": "0x0000000000000000000000000000000000000000000000000000000000000001", - "description": "<>", + "description": "Increment approvedHashes", + "allowDifference": false + } + ] + }, + { + "name": "L1ERC721Bridge Proxy", + "address": "0x21efd066e581fa55ef105170cc04d74386a09190", + "changes": [ + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x0000000000000000000000007f1d12fb2911eb095278085f721e644c1f675696", + "after": "0x00000000000000000000000074f1ac50eb0be98853805d381c884f5f9abdecf9", + "description": "Update address of L1ERC721Bridge to new implementation", + "allowDifference": false + } + ] + }, + { + "name": "Optimism Portal Proxy", + "address": "0x49f53e41452c74589e85ca1677426ba426459e85", + "changes": [ + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x000000000000000000000000381e729ff983fa4bced820e7b922d79bf653b999", + "after": "0x0000000000000000000000007cf803296662e8c72a6c1d6450572209acf7f202", + "description": "Update address of Optimism Portal to new implementation", "allowDifference": false } ] @@ -70,21 +107,80 @@ ] }, { - "name": "DisputeGameFactory", + "name": "AddressManager", + "address": "0x709c2b8ef4a9fefc629a8a2c1af424dc5bd6ad1b", + "changes": [ + { + "key": "0x515216935740e67dfdda5cf8e248ea32b3277787818ab59153061ac875c9385e", + "before": "0x00000000000000000000000022d12e0faebd62d429514a65ebae32dd316c12d6", + "after": "0x000000000000000000000000b686f13aff1e427a1f993f29ab0f2e7383729fe0", + "description": "Update address of L1CrossDomainMessenger to new implementation", + "allowDifference": false + } + ] + }, + { + "name": "OptimismMintableERC20Factory Proxy", + "address": "0xb1efb9650ad6d0cc1ed3ac4a0b7f1d5732696d37", + "changes": [ + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x0000000000000000000000005493f4677a186f64805fe7317d6993ba4863988f", + "after": "0x0000000000000000000000008ee6fb13c6c9a7e401531168e196fbf8b05ceabb", + "description": "Update address of OptimismMintableERC20Factory to new implementation", + "allowDifference": false + } + ] + }, + { + "name": "DisputeGameFactory Proxy", "address": "0xd6e6dbf4f7ea0ac412fd8b65ed297e64bb7a06e1", "changes": [ + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x00000000000000000000000033d1e8571a85a538ed3d5a4d88f46c112383439d", + "after": "0x00000000000000000000000074fac1d45b98bae058f8f566201c9a81b85c7d50", + "description": "Update address of DisputeGameFactory to new implementation", + "allowDifference": false + }, { "key": "0x4d5a9bd2e41301728d41c8e705190becb4e74abe869f75bdb405b63716a35f9e", "before": "0x0000000000000000000000005920bd6ab4c1b96bfd4efc56eb6cf9b018e3bf4c", - "after": "0x000000000000000000000000284a4cf8cb83d3377f8eadfff2414f2bfa68484b", - "description": "update implementation address of PermissionedDisputeGame", + "after": "0x000000000000000000000000a1ae4fd5541a3e7a912e45560ed60d3edc5f9a05", + "description": "Update address of PermissionedDisputeGame to new implementation", "allowDifference": false }, { "key": "0xffdfc1249c027f9191656349feb0761381bb32c9f557e01f419fd08754bf5a1b", "before": "0x000000000000000000000000f83157709129bd03fb02e96950be288e8c2c1c67", - "after": "0x000000000000000000000000f0b64b080548b1f688356b9cf880076c2145f79a", - "description": "update implementation address of FaultDisputeGame", + "after": "0x000000000000000000000000ed839a2aa262eccc513308fe7b8f39088ff8e992", + "description": "Update address of FaultDisputeGame to new implementation", + "allowDifference": false + } + ] + }, + { + "name": "System Config Proxy - Sepolia", + "address": "0xf272670eb55e895584501d564afeb048bed26194", + "changes": [ + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x0000000000000000000000002bfe4a5bd5a41e9d848d843ebcdfa15954e9a557", + "after": "0x0000000000000000000000002fa28989fc559836e9d66dff3010c7f7f41c65ed", + "description": "Update address of SystemConfig to new implementation", + "allowDifference": false + } + ] + }, + { + "name": "L1StandardBridge Proxy", + "address": "0xfd0bf71f60660e2f608ed56e1659c450eb113120", + "changes": [ + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x000000000000000000000000e32b192fb1dca88fcb1c56b3acb429e32238adcb", + "after": "0x00000000000000000000000061525eaacddb97d9184afc205827e6a4fd0bf62a", + "description": "Update address of L1StandardBridge to new implementation", "allowDifference": false } ] From 623e8fa4f1a7acfcba647770972ea6618dbcbcbf Mon Sep 17 00:00:00 2001 From: Joby Thundil Date: Fri, 14 Nov 2025 13:04:48 -0500 Subject: [PATCH 09/23] update readme --- sepolia/2025-11-07-upgrade-fault-proofs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/README.md b/sepolia/2025-11-07-upgrade-fault-proofs/README.md index 4d70404b..2942a5c8 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/README.md +++ b/sepolia/2025-11-07-upgrade-fault-proofs/README.md @@ -4,7 +4,7 @@ Status: PENDING ## Description -This task contains two scripts. One for deploying new versions of the `FaultDisputeGame` and `PermissionedDisputeGame` contracts, and one for updating the `DisputeGameFactory` contract to reference the new dispute game contracts. +This task contains a single script that executes the `upgrade` function of the specified OP Contracts Manager. ## Procedure From 89efd68deaf656a00dfe66ddc95c92299e30e4b1 Mon Sep 17 00:00:00 2001 From: Joby Thundil Date: Fri, 14 Nov 2025 13:05:21 -0500 Subject: [PATCH 10/23] delete addresses file --- sepolia/2025-11-07-upgrade-fault-proofs/addresses.json | 1 - 1 file changed, 1 deletion(-) delete mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/addresses.json diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/addresses.json b/sepolia/2025-11-07-upgrade-fault-proofs/addresses.json deleted file mode 100644 index a7719acd..00000000 --- a/sepolia/2025-11-07-upgrade-fault-proofs/addresses.json +++ /dev/null @@ -1 +0,0 @@ -{"faultDisputeGame": "0xf0b64b080548b1f688356b9cf880076c2145f79a","permissionedDisputeGame": "0x284a4cf8cb83d3377f8eadfff2414f2bfa68484b"} \ No newline at end of file From 00e212f247ce8eae9f9e2d333c315c6173da9cae Mon Sep 17 00:00:00 2001 From: Joby Thundil Date: Fri, 14 Nov 2025 13:05:51 -0500 Subject: [PATCH 11/23] delete old recors --- .../11155111/run-1762539213527.json | 53 ------------ .../11155111/run-1762539301055.json | 86 ------------------- 2 files changed, 139 deletions(-) delete mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/records/DeployDisputeGames.s.sol/11155111/run-1762539213527.json delete mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/records/DeployDisputeGames.s.sol/11155111/run-1762539301055.json diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/records/DeployDisputeGames.s.sol/11155111/run-1762539213527.json b/sepolia/2025-11-07-upgrade-fault-proofs/records/DeployDisputeGames.s.sol/11155111/run-1762539213527.json deleted file mode 100644 index 64acca4e..00000000 --- a/sepolia/2025-11-07-upgrade-fault-proofs/records/DeployDisputeGames.s.sol/11155111/run-1762539213527.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "transactions": [ - { - "hash": null, - "transactionType": "CREATE", - "contractName": "FaultDisputeGame", - "contractAddress": "0x3955d1aa50b657cb0ce8d549197bd44478c6ed5c", - "function": null, - "arguments": [ - "(0, 0x03caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b, 73, 30, 10800, 302400, 0x07BABE08EE4D07dBA236530183B24055535A7011, 0xd3683e4947A7769603Ab6418eC02f000CE3cF30b, 0x2fF5cC82dBf333Ea30D8ee462178ab1707315355, 84532)" - ], - "transaction": { - "from": "0x24c3ae1aedb8142d32bb6d3b988f5910f272d53b", - "gas": "0x538b43", - "value": "0x0", - "input": "0x6101c06040523480156200001257600080fd5b50604051620053023803806200530283398101604081905262000035916200052d565b620000436001607e62000600565b60ff16816040015111156200006b57604051633beff19960e11b815260040160405180910390fd5b60001981606001511480620000955750604081015160608201516200009290600162000626565b10155b15620000b45760405163e62ccf3960e01b815260040160405180910390fd5b600281606001511015620000db5760405163e62ccf3960e01b815260040160405180910390fd5b6001600160401b0380168160c001516001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000128573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014e919062000641565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b2919062000661565b1115620001d25760405163b4e1243360e01b815260040160405180910390fd5b6000620001f782608001516001600160401b03166200048060201b62000baf1760201c565b6200020d906001600160401b031660026200067b565b905060008260c001516001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027a919062000641565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002de919062000661565b6200030184608001516001600160401b03166200048060201b62000baf1760201c565b6001600160401b031662000316919062000626565b905060006200033183836200048360201b6200318b1760201c565b90506001600160401b038111156200035c5760405163235dfb2b60e21b815260040160405180910390fd5b6200037f8460a001516001600160401b03166200048060201b62000baf1760201c565b6001600160401b0316816001600160401b03161115620003b25760405163235dfb2b60e21b815260040160405180910390fd5b63ffffffff8016620003d9856000015163ffffffff166200048060201b62000baf1760201c565b63ffffffff1603620003fe5760405163073ed16760e31b815260040160405180910390fd5b5050815163ffffffff1661012090815260208301516080908152604084015160a0908152606085015160c0908152918501516001600160401b039081166101a052908501511660e0908152908401516001600160a01b03908116610100908152918501518116610140529084015116610160529091015161018052506200069d565b90565b600081831162000494578162000496565b825b9392505050565b60405161014081016001600160401b0381118282101715620004cf57634e487b7160e01b600052604160045260246000fd5b60405290565b805163ffffffff81168114620004ea57600080fd5b919050565b80516001600160401b0381168114620004ea57600080fd5b6001600160a01b03811681146200051d57600080fd5b50565b8051620004ea8162000507565b600061014082840312156200054157600080fd5b6200054b6200049d565b6200055683620004d5565b81526020830151602082015260408301516040820152606083015160608201526200058460808401620004ef565b60808201526200059760a08401620004ef565b60a0820152620005aa60c0840162000520565b60c0820152620005bd60e0840162000520565b60e0820152610100620005d281850162000520565b90820152610120928301519281019290925250919050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8416808210156200061d576200061d620005ea565b90039392505050565b600082198211156200063c576200063c620005ea565b500190565b6000602082840312156200065457600080fd5b8151620004968162000507565b6000602082840312156200067457600080fd5b5051919050565b6000816000190483118215151615620006985762000698620005ea565b500290565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051614ac36200083f600039600081816106a701528181611a6401528181611ace0152611b000152600081816109bb01526130e301526000818161062a01528181611f74015281816120660152818161210e015281816121840152818161229e01526125fd015260008181610530015281816114e0015281816115aa01528181611e4a015261253501526000818161084c015281816125d4015261314f0152600081816104dc0152818161197d01528181612c900152612e49015260008181610a0e01528181610d930152818161190601528181611b2f01528181611b8a015281816127dd015261281d015260008181610a41015281816117c30152818161188f01528181611a9f01528181612b3901528181612fca015281816135c901528181613af901528181613c1401528181613c720152613cbd015260008181610ae80152818161184b0152818161195101528181612861015281816128ce01528181612ad20152612b5a01526000818161075c0152612bdd0152614ac36000f3fe6080604052600436106102ff5760003560e01c806370872aa511610190578063c395e1ca116100dc578063dabd396d11610095578063f8f43ff61161006f578063f8f43ff614610a95578063fa24f74314610ab5578063fa315aa914610ad9578063fe2bbeb214610b0c57600080fd5b8063dabd396d146109ff578063ec5e630814610a32578063eff0f59214610a6557600080fd5b8063c395e1ca146108d8578063c6f0308c146108f8578063cf09e0d01461096c578063d5d44d801461098c578063d6ae3cd5146109ac578063d8cc1a3c146109df57600080fd5b80638d450a9511610149578063bbdc02db11610123578063bbdc02db14610835578063bcef3b5514610876578063bd8da9561461088b578063c0d8bb74146108ab57600080fd5b80638d450a951461074d57806399735e3214610780578063a445ece61461079557600080fd5b806370872aa5146106de578063786b844b146106f35780637b0f0adc146107085780638129fc1c1461071b5780638980e0cc146107235780638b85902b1461073857600080fd5b80633e3ac9121161024f5780635a5fa2d91161020857806360e27464116101e257806360e27464146106635780636361506d146106835780636b6716c0146106985780636f034409146106cb57600080fd5b80635a5fa2d9146105fb5780635c0cba331461061b578063609d33341461064e57600080fd5b80633e3ac912146105005780633fc8cef314610521578063472777c614610554578063529d6a8c1461056757806354fd4d501461059457806357da950e146105cb57600080fd5b806325fc2ace116102bc57806330dbe5701161029657806330dbe57014610466578063378dd48c1461049e57806337b1b229146104b85780633a768463146104cd57600080fd5b806325fc2ace146104125780632810e1d6146104315780632ad69aeb1461044657600080fd5b8063019351301461030457806303c2924d1461032657806319effeb414610346578063200d2ed21461038a578063222abf45146103b8578063250e69bd146103f8575b600080fd5b34801561031057600080fd5b5061032461031f3660046143a2565b610b3c565b005b34801561033257600080fd5b506103246103413660046143fc565b610d1a565b34801561035257600080fd5b5060005461036d90600160401b90046001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b34801561039657600080fd5b506000546103ab90600160801b900460ff1681565b6040516103819190614455565b3480156103c457600080fd5b506103e86103d336600461447d565b600c6020526000908152604090205460ff1681565b6040519015158152602001610381565b34801561040457600080fd5b50600a546103e89060ff1681565b34801561041e57600080fd5b506008545b604051908152602001610381565b34801561043d57600080fd5b506103ab6111c5565b34801561045257600080fd5b506104236104613660046143fc565b611345565b34801561047257600080fd5b50600154610486906001600160a01b031681565b6040516001600160a01b039091168152602001610381565b3480156104aa57600080fd5b50600d546103ab9060ff1681565b3480156104c457600080fd5b50610486611376565b3480156104d957600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610486565b34801561050c57600080fd5b506000546103e890600160901b900460ff1681565b34801561052d57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610486565b61032461056236600461449a565b611387565b34801561057357600080fd5b5061042361058236600461447d565b60036020526000908152604090205481565b3480156105a057600080fd5b506040805180820190915260058152640312e382e360dc1b60208201525b6040516103819190614513565b3480156105d757600080fd5b506008546009546105e6919082565b60408051928352602083019190915201610381565b34801561060757600080fd5b50610423610616366004614526565b611399565b34801561062757600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610486565b34801561065a57600080fd5b506105be6113d3565b34801561066f57600080fd5b5061032461067e36600461447d565b6113e1565b34801561068f57600080fd5b5061042361167c565b3480156106a457600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061036d565b6103246106d936600461454d565b611688565b3480156106ea57600080fd5b50600954610423565b3480156106ff57600080fd5b50610324611ef9565b61032461071636600461449a565b612262565b61032461226f565b34801561072f57600080fd5b50600254610423565b34801561074457600080fd5b50610423612690565b34801561075957600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610423565b34801561078c57600080fd5b5061042361269c565b3480156107a157600080fd5b506107f76107b0366004614526565b6007602052600090815260409020805460019091015460ff821691610100810463ffffffff1691650100000000009091046001600160801b0316906001600160a01b031684565b60408051941515855263ffffffff90931660208501526001600160801b03909116918301919091526001600160a01b03166060820152608001610381565b34801561084157600080fd5b5060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610381565b34801561088257600080fd5b506104236126a6565b34801561089757600080fd5b5061036d6108a6366004614526565b6126b2565b3480156108b757600080fd5b506104236108c636600461447d565b600b6020526000908152604090205481565b3480156108e457600080fd5b506104236108f336600461458e565b612845565b34801561090457600080fd5b50610918610913366004614526565b612985565b6040805163ffffffff90981688526001600160a01b03968716602089015295909416948601949094526001600160801b039182166060860152608085015291821660a08401521660c082015260e001610381565b34801561097857600080fd5b5060005461036d906001600160401b031681565b34801561099857600080fd5b506104236109a736600461447d565b6129f8565b3480156109b857600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610423565b3480156109eb57600080fd5b506103246109fa3660046145b7565b612a50565b348015610a0b57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061036d565b348015610a3e57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610423565b348015610a7157600080fd5b506103e8610a80366004614526565b60046020526000908152604090205460ff1681565b348015610aa157600080fd5b50610324610ab036600461449a565b612de1565b348015610ac157600080fd5b50610aca61314d565b60405161038193929190614642565b348015610ae557600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610423565b348015610b1857600080fd5b506103e8610b27366004614526565b60066020526000908152604090205460ff1681565b60008054600160801b900460ff166002811115610b5b57610b5b61441e565b14610b795760405163067fe19560e41b815260040160405180910390fd5b600054600160901b900460ff1615610ba45760405163075173a960e11b815260040160405180910390fd5b610bb2610baf6126a6565b90565b610bc9610bc43686900386018661467d565b6131a5565b14610be757604051639cc00b5b60e01b815260040160405180910390fd5b82606001358282604051610bfc9291906146f0565b604051809103902014610c225760405163d81d583b60e01b815260040160405180910390fd5b6000610c6b610c6684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061320192505050565b613255565b90506000610c9282600881518110610c8557610c85614700565b60200260200101516133d9565b9050602081511115610cb75760405163d81d583b60e01b815260040160405180910390fd5b602081810151825190910360031b1c610cce612690565b8103610ced57604051630b8ed88360e41b815260040160405180910390fd5b5050600180546001600160a01b0319163317905550506000805460ff60901b1916600160901b1790555050565b60008054600160801b900460ff166002811115610d3957610d3961441e565b14610d575760405163067fe19560e41b815260040160405180910390fd5b600060028381548110610d6c57610d6c614700565b906000526020600020906005020190506000610d87846126b2565b90506001600160401b037f000000000000000000000000000000000000000000000000000000000000000081169082161015610dd65760405163f2440b5360e01b815260040160405180910390fd5b60008481526006602052604090205460ff1615610e065760405163f1a9458160e01b815260040160405180910390fd5b6000848152600560205260409020805480158015610e2357508515155b15610e85578354600160201b90046001600160a01b031660008115610e485781610e57565b60018601546001600160a01b03165b9050610e63818761345b565b505050600094855250506006602052505060409020805460ff19166001179055565b6000868152600760209081526040918290208251608081018452815460ff81161515808352610100820463ffffffff16948301949094526501000000000090046001600160801b031693810193909352600101546001600160a01b03166060830152610f09576001600160801b036040820152600181526000869003610f09578195505b600086826020015163ffffffff16610f21919061472c565b90506000838211610f325781610f34565b835b602084015190915063ffffffff165b8181101561103a576000868281548110610f5f57610f5f614700565b6000918252602080832090910154808352600690915260409091205490915060ff16610f9e57604051634d03b32360e11b815260040160405180910390fd5b600060028281548110610fb357610fb3614700565b600091825260209091206005909102018054909150600160201b90046001600160a01b0316158015610ff95750600481015460408701516001600160801b039182169116115b156110255760018101546001600160a01b0316606087015260048101546001600160801b031660408701525b5050808061103290614744565b915050610f43565b5063ffffffff818116602085810191825260008c815260079091526040908190208651815493519288015164ffffffffff1990941690151564ffffffff00191617610100929094169182029390931774ffffffffffffffffffffffffffffffff00000000001916650100000000006001600160801b03909316929092029190911782556060850151600190920180546001600160a01b0319166001600160a01b03909316929092179091558490036111ba57606083015160008a8152600660205260409020805460ff19166001179055891580156111215750600054600160901b900460ff165b15611167576001546001600160a01b031661113c818a61345b565b88546001600160a01b03909116600160201b02640100000000600160c01b03199091161788556111b8565b6111946001600160a01b0382161561117f578161118e565b60018901546001600160a01b03165b8961345b565b8754640100000000600160c01b031916600160201b6001600160a01b038316021788555b505b505050505050505050565b600080600054600160801b900460ff1660028111156111e6576111e661441e565b146112045760405163067fe19560e41b815260040160405180910390fd5b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85460ff1661124f57604051634d03b32360e11b815260040160405180910390fd5b60006001600160a01b0316600260008154811061126e5761126e614700565b6000918252602090912060059091020154600160201b90046001600160a01b03161461129b57600161129e565b60025b600080546001600160401b034216600160401b026fffffffffffffffff000000000000000019821681178355929350839260ff60801b191670ffffffffffffffffff00000000000000001990911617600160801b8360028111156113045761130461441e565b0217905560028111156113195761131961441e565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a290565b6005602052816000526040600020818154811061136157600080fd5b90600052602060002001600091509150505481565b6000611382600061349d565b905090565b6113948383836001611688565b505050565b600081815260076020908152604080832060059092528220805482546113ca90610100900463ffffffff168261475d565b95945050505050565b6060611382605460206134c0565b6113e9611ef9565b60006002600d5460ff1660028111156114045761140461441e565b0361142857506001600160a01b0381166000908152600b602052604090205461147e565b6001600d5460ff1660028111156114415761144161441e565b0361146557506001600160a01b03811660009081526003602052604090205461147e565b6040516301e28f7d60e21b815260040160405180910390fd5b6001600160a01b0382166000908152600c602052604090205460ff16611542576001600160a01b038281166000818152600c602052604090819020805460ff1916600117905551637eee288d60e01b81526004810191909152602481018390527f000000000000000000000000000000000000000000000000000000000000000090911690637eee288d90604401600060405180830381600087803b15801561152657600080fd5b505af115801561153a573d6000803e3d6000fd5b505050505050565b80600003611563576040516317bfe5f760e01b815260040160405180910390fd5b6001600160a01b038281166000818152600b602090815260408083208390556003909152808220919091555163f3fef3a360e01b81526004810191909152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063f3fef3a390604401600060405180830381600087803b1580156115f057600080fd5b505af1158015611604573d6000803e3d6000fd5b505050506000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611655576040519150601f19603f3d011682016040523d82523d6000602084013e61165a565b606091505b5050905080611394576040516383e6cc6b60e01b815260040160405180910390fd5b60006113826034613502565b60008054600160801b900460ff1660028111156116a7576116a761441e565b146116c55760405163067fe19560e41b815260040160405180910390fd5b6000600284815481106116da576116da614700565b60009182526020918290206040805160e0810182526005909302909101805463ffffffff811684526001600160a01b03600160201b90910481169484019490945260018101549093169082015260028201546001600160801b03908116606083015260038301546080830181905260049093015480821660a0840152600160801b90041660c0820152915085146117845760405163180a019960e11b815260040160405180910390fd5b60a0810151600083156001600160801b0383161760011b905060006117b1826001600160801b0316613522565b60ff1690508615806117ec57506117e97f0000000000000000000000000000000000000000000000000000000000000000600261472c565b81145b80156117f6575084155b15611814576040516329098def60e21b815260040160405180910390fd5b600054600160901b900460ff16801561182b575086155b156118495760405163075173a960e11b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081111561188a576040516356f57b2b60e01b815260040160405180910390fd5b6118b57f0000000000000000000000000000000000000000000000000000000000000000600161472c565b81036118c7576118c78688858861358e565b346118d183612845565b146118ef57604051638620aa1960e01b815260040160405180910390fd5b60006118fa886126b2565b90506001600160401b037f000000000000000000000000000000000000000000000000000000000000000081169082160361194857604051630ce0744560e21b815260040160405180910390fd5b600061197560017f000000000000000000000000000000000000000000000000000000000000000061475d565b8303611a98577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fd9190614774565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5e9190614791565b611a91907f00000000000000000000000000000000000000000000000000000000000000006001600160401b03166147aa565b9050611b29565b611ac360017f000000000000000000000000000000000000000000000000000000000000000061475d565b8303611afd57611a917f00000000000000000000000000000000000000000000000000000000000000006001600160401b031660026147d5565b507f00000000000000000000000000000000000000000000000000000000000000006001600160401b03165b611b5c817f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316614804565b6001600160401b0316611b75836001600160401b031690565b6001600160401b03161115611bba57611bb7817f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316614804565b91505b6000604083901b421760008a8152608087901b6001600160801b038d1617602052604081209192509060008181526004602052604090205490915060ff1615611c16576040516380497e3b60e01b815260040160405180910390fd5b60016004600083815260200190815260200160002060006101000a81548160ff02191690831515021790555060026040518060e001604052808d63ffffffff16815260200160006001600160a01b03168152602001336001600160a01b03168152602001346001600160801b031681526020018c8152602001886001600160801b03168152602001846001600160801b0316815250908060018154018082558091505060019003906000526020600020906005020160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160020160006101000a8154816001600160801b0302191690836001600160801b031602179055506080820151816003015560a08201518160040160006101000a8154816001600160801b0302191690836001600160801b0316021790555060c08201518160040160106101000a8154816001600160801b0302191690836001600160801b031602179055505050600560008c81526020019081526020016000206001600280549050611e0d919061475d565b81546001810183556000928352602080842090910191909155338252600b9052604081208054349290611e4190849061472c565b925050819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015611ea357600080fd5b505af1158015611eb7573d6000803e3d6000fd5b50506040513393508d92508e91507f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be90600090a4505050505050505050505050565b6002600d5460ff166002811115611f1257611f1261441e565b1480611f3457506001600d5460ff166002811115611f3257611f3261441e565b145b15611f3b57565b6000600d5460ff166002811115611f5457611f5461441e565b14611f72576040516301e28f7d60e21b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff4919061482c565b156120125760405163379a7ed960e01b815260040160405180910390fd5b600054600160401b90046001600160401b03166001600160401b031660000361204e57604051636082930560e11b815260040160405180910390fd5b604051630314d2b360e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630314d2b390602401602060405180830381865afa1580156120b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d9919061482c565b9050806120f957604051634851bd9b60e01b815260040160405180910390fd5b6040516317cf21a960e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906317cf21a990602401600060405180830381600087803b15801561215a57600080fd5b505af192505050801561216b575060015b506040516324b5ce0b60e11b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063496b9c1690602401602060405180830381865afa1580156121d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f7919061482c565b9050801561221157600d805460ff1916600117905561221f565b600d805460ff191660021790555b600d546040517f9908eaac0645df9d0704d06adc9e07337c951de2f06b5f2836151d48d5e4722f916122569160ff90911690614455565b60405180910390a15050565b6113948383836000611688565b600054600160881b900460ff16156122995760405162dc149f60e41b815260040160405180910390fd5b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d83ef2676040518163ffffffff1660e01b81526004016040805180830381865afa1580156122f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231d9190614849565b90925090508161234057604051633535e1d960e11b815260040160405180910390fd5b6040805180820190915282815260200181905260088290556009819055607a361461237e57604051639824bdab60e01b815260040160405180910390fd5b80612387612690565b116123b9576123946126a6565b60405163f40239db60e01b81526004016123b091815260200190565b60405180910390fd5b6040805160e08101825263ffffffff81526000602082015260029181016123de611376565b6001600160a01b03168152602001346001600160801b031681526020016124036126a6565b815260016020820152604001426001600160801b0390811690915282546001808201855560009485526020808620855160059094020180549186015163ffffffff9094166001600160c01b031990921691909117600160201b6001600160a01b0394851602178155604085015191810180546001600160a01b031916929093169190911790915560608301516002820180546fffffffffffffffffffffffffffffffff19169184169190911790556080830151600382015560a083015160c090930151928216600160801b9390921692909202176004909101558054600160881b60ff60881b199091161781553490600b906124fd611376565b6001600160a01b03166001600160a01b03168152602001908152602001600020600082825461252c919061472c565b925050819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561258e57600080fd5b505af11580156125a2573d6000803e3d6000fd5b50506000805467ffffffffffffffff1916426001600160401b0316179055505060408051630f27ce5f60e21b815290517f000000000000000000000000000000000000000000000000000000000000000063ffffffff1692507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691633c9f397c9160048083019260209291908290030181865afa158015612650573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612674919061486d565b600a805460ff191663ffffffff92909216929092141790555050565b60006113826054613502565b6000611382612690565b60006113826014613502565b600080600054600160801b900460ff1660028111156126d3576126d361441e565b146126f15760405163067fe19560e41b815260040160405180910390fd5b60006002838154811061270657612706614700565b600091825260208220600590910201805490925063ffffffff9081161461276c57815460028054909163ffffffff1690811061274457612744614700565b906000526020600020906005020160040160109054906101000a90046001600160801b031690505b600482015460009061279590600160801b90046001600160401b03165b6001600160401b031690565b6127a8906001600160401b03164261475d565b6127be612789846001600160801b031660401c90565b6001600160401b03166127d1919061472c565b90506001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166001600160401b0316816001600160401b03161161281b57806113ca565b7f000000000000000000000000000000000000000000000000000000000000000095945050505050565b60008061285a836001600160801b0316613522565b60ff1690507f00000000000000000000000000000000000000000000000000000000000000008111156128a0576040516356f57b2b60e01b815260040160405180910390fd5b642e90edd00062061a806311e1a30060006128bb83836148a9565b9050670de0b6b3a764000060006128f2827f00000000000000000000000000000000000000000000000000000000000000006148bd565b9050600061291061290b670de0b6b3a7640000866148bd565b613683565b9050600061291e8484613899565b9050600061292c83836138e8565b9050600061293982613916565b9050600061295882612953670de0b6b3a76400008f6148bd565b613a93565b905060006129668b836138e8565b9050612972818d6148bd565b9f9e505050505050505050505050505050565b6002818154811061299557600080fd5b60009182526020909120600590910201805460018201546002830154600384015460049094015463ffffffff84169550600160201b9093046001600160a01b03908116949216926001600160801b03918216929180821691600160801b90041687565b60006002600d5460ff166002811115612a1357612a1361441e565b03612a3457506001600160a01b03166000908152600b602052604090205490565b506001600160a01b031660009081526003602052604090205490565b60008054600160801b900460ff166002811115612a6f57612a6f61441e565b14612a8d5760405163067fe19560e41b815260040160405180910390fd5b600060028781548110612aa257612aa2614700565b6000918252602082206005919091020160048101549092506001600160801b0316908715821760011b9050612af87f0000000000000000000000000000000000000000000000000000000000000000600161472c565b612b0a826001600160801b0316613522565b60ff1614612b2b57604051630bea7bb360e31b815260040160405180910390fd5b6000808915612c0757612b7e7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061475d565b6001901b612b94846001600160801b0316613ac4565b6001600160801b0316612ba791906148dc565b15612bdb57612bd2612bc360016001600160801b0387166148f0565b865463ffffffff166000613ae2565b60030154612bfd565b7f00000000000000000000000000000000000000000000000000000000000000005b9150849050612c28565b60038501549150612c25612bc36001600160801b0386166001614910565b90505b600882901b60088a8a604051612c3f9291906146f0565b6040518091039020901b14612c675760405163696550ff60e01b815260040160405180910390fd5b6000612c728c613bab565b90506000612c81836003015490565b6040516370a6769960e11b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e14ced3290612cd5908f908f908f908f908a9060040161495b565b6020604051808303816000875af1158015612cf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d189190614791565b600485015491149150600090600290612d39906001600160801b0316613522565b612d4b896001600160801b0316613522565b612d559190614995565b612d5f91906149b8565b60ff161590508115158103612d875760405163fb4e40dd60e01b815260040160405180910390fd5b8754600160201b90046001600160a01b031615612db757604051639071e6af60e01b815260040160405180910390fd5b50508554640100000000600160c01b03191633600160201b02179095555050505050505050505050565b60008054600160801b900460ff166002811115612e0057612e0061441e565b14612e1e5760405163067fe19560e41b815260040160405180910390fd5b600080600080612e2d86613bda565b93509350935093506000612e4385858585613e49565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec99190614774565b905060018903612f73576001600160a01b0381166352f0f3ad8a84612eef610baf61167c565b6040516001600160e01b031960e086901b16815260048101939093526024830191909152604482015260206064820152608481018a905260a4015b6020604051808303816000875af1158015612f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6d9190614791565b506111ba565b60028903612f92576001600160a01b0381166352f0f3ad8a8489612eef565b60038903612fb1576001600160a01b0381166352f0f3ad8a8487612eef565b600489036130be576000612fee6001600160801b0385167f0000000000000000000000000000000000000000000000000000000000000000613ee8565b600954612ffb919061472c565b61300690600161472c565b9050613010612690565b81106130235761301e612690565b613025565b805b90506001600160a01b0382166352f0f3ad8b8560405160e084901b6001600160e01b03191681526004810192909252602482015260c084901b604482015260086064820152608481018b905260a4016020604051808303816000875af1158015613093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b79190614791565b50506111ba565b60058903613131576040516352f0f3ad60e01b8152600481018a9052602481018390527f000000000000000000000000000000000000000000000000000000000000000060c01b604482015260086064820152608481018890526001600160a01b038216906352f0f3ad9060a401612f2a565b604051600162ec819b60e01b0319815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006000606061317a6126a6565b91506131846113d3565b9050909192565b600081831161319a578161319c565b825b90505b92915050565b600081600001518260200151836040015184606001516040516020016131e4949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b6040805180820190915260008082526020820152815160000361323757604051635ab458fb60e01b815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b6060600080600061326585613f15565b9194509250905060018160018111156132805761328061441e565b1461329e576040516325ce355f60e11b815260040160405180910390fd5b84516132aa838561472c565b146132c857604051630b8aa6f760e31b815260040160405180910390fd5b604080516020808252610420820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816132df5790505093506000835b86518110156133cd576000806133526040518060400160405280858c60000151613336919061475d565b8152602001858c6020015161334b919061472c565b9052613f15565b50915091506040518060400160405280838361336e919061472c565b8152602001848b60200151613383919061472c565b81525088858151811061339857613398614700565b60209081029190910101526133ae60018561472c565b93506133ba818361472c565b6133c4908461472c565b9250505061330c565b50845250919392505050565b606060008060006133e985613f15565b9194509250905060008160018111156134045761340461441e565b14613422576040516307fe6cb960e21b815260040160405180910390fd5b61342c828461472c565b85511461344c57604051630b8aa6f760e31b815260040160405180910390fd5b6113ca8560200151848461420b565b60028101546001600160a01b038316600090815260036020526040812080546001600160801b039093169290919061349490849061472c565b90915550505050565b6000806134b23660011981013560f01c900390565b929092013560601c92915050565b606060006134d63660011981013560f01c900390565b905060405191508282528284820160208401378260208301016000815260208101604052505092915050565b6000806135173660011981013560f01c900390565b929092013592915050565b7e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b6001600160401b03831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b60006135a46001600160801b0384166001614910565b905060006135b482866001613ae2565b9050600086901a838061361657506135ed60027f00000000000000000000000000000000000000000000000000000000000000006148dc565b6004830154600290613607906001600160801b0316613522565b61361191906149b8565b60ff16145b156136555760ff811660011480613630575060ff81166002145b6136505760405163f40239db60e01b8152600481018890526024016123b0565b61367a565b60ff81161561367a5760405163f40239db60e01b8152600481018890526024016123b0565b50505050505050565b6001600160801b03811160071b81811c6001600160401b031060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c60ff1060031b17600082136136d857631615e6386000526004601cfd5b7ff8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffff6f8421084210842108cc6318c6db6d54be83831c1c601f161a1890811b609f90811c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d6c8c3f38e95a6b1ff2ab1c3b343619018302821d6d02384773bdf1ac5676facced60901901830290911d6cb9a025d814b29c212b8b1a07cd1901909102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a5506029190037d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b60007812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f218311670de0b6b3a7640000021582026138d657637c5f487d6000526004601cfd5b50670de0b6b3a7640000919091020490565b6000816000190483118202156139065763bac65e5b6000526004601cfd5b50670de0b6b3a764000091020490565b600068023f2fa8f6da5b9d2819821361392e57919050565b680755bf798b4a1bf1e5821261394c5763a37bfec96000526004601cfd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b600061319c670de0b6b3a764000083613aab86613683565b613ab591906149da565b613abf9190614a5f565b613916565b600080613ad083613522565b600160ff919091161b90920392915050565b60008082613b2257613b1d6001600160801b0386167f000000000000000000000000000000000000000000000000000000000000000061429f565b613b34565b613b34856001600160801b031661430e565b905060028481548110613b4957613b49614700565b906000526020600020906005020191505b60048201546001600160801b03828116911614613ba357815460028054909163ffffffff16908110613b8e57613b8e614700565b90600052602060002090600502019150613b5a565b509392505050565b6000806000806000613bbc86613bda565b9350935093509350613bd084848484613e49565b9695505050505050565b6000806000806000859050600060028281548110613bfa57613bfa614700565b6000918252602090912060059091020160048101549091507f000000000000000000000000000000000000000000000000000000000000000090613c46906001600160801b0316613522565b60ff1611613c67576040516359a5ae1160e11b815260040160405180910390fd5b6000815b60048301547f000000000000000000000000000000000000000000000000000000000000000090613ca4906001600160801b0316613522565b60ff169250821115613d1957825463ffffffff16613ce37f0000000000000000000000000000000000000000000000000000000000000000600161472c565b8303613ced578391505b60028181548110613d0057613d00614700565b9060005260206000209060050201935080945050613c6b565b600481810154908401546001600160801b0391821691166000816001600160801b0316613d5e613d52856001600160801b031660011c90565b6001600160801b031690565b6001600160801b03161490508015613df7576000613d84836001600160801b0316613ac4565b6001600160801b03161115613dd4576000613db4613dac60016001600160801b0386166148f0565b896001613ae2565b6003810154600490910154909c506001600160801b03169a50613dda9050565b6008549a505b600386015460048701549099506001600160801b03169750613e3b565b6000613e10613dac6001600160801b0385166001614910565b6003808901546004808b015492840154930154909e506001600160801b039182169d50919b50169850505b505050505050509193509193565b60006001600160801b03841615613ea45760408051602081018790526001600160801b038087169282019290925260608101859052908316608082015260a001604051602081830303815290604052805190602001206113ca565b8282604051602001613ec99291909182526001600160801b0316602082015260400190565b6040516020818303038152906040528051906020012095945050505050565b600080613ef484613522565b60ff1690508083036001841b600180831b0386831b17039250505092915050565b60008060008360000151600003613f3f57604051635ab458fb60e01b815260040160405180910390fd5b6020840151805160001a607f8111613f64576000600160009450945094505050614204565b60b78111613ffc576000613f7960808361475d565b905080876000015111613f9f576040516366c9448560e01b815260040160405180910390fd5b6001838101516001600160f81b0319169082148015613fcb5750600160ff1b6001600160f81b03198216105b15613fe95760405163babb01dd60e01b815260040160405180910390fd5b5060019550935060009250614204915050565b60bf81116140de57600061401160b78361475d565b905080876000015111614037576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b03191660008190036140685760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c603781116140975760405163babb01dd60e01b815260040160405180910390fd5b6140a1818461472c565b8951116140c1576040516366c9448560e01b815260040160405180910390fd5b6140cc83600161472c565b97509550600094506142049350505050565b60f7811161412a5760006140f360c08361475d565b905080876000015111614119576040516366c9448560e01b815260040160405180910390fd5b600195509350849250614204915050565b600061413760f78361475d565b90508087600001511161415d576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b031916600081900361418e5760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c603781116141bd5760405163babb01dd60e01b815260040160405180910390fd5b6141c7818461472c565b8951116141e7576040516366c9448560e01b815260040160405180910390fd5b6141f283600161472c565b97509550600194506142049350505050565b9193909250565b6060816001600160401b0381111561422557614225614667565b6040519080825280601f01601f19166020018201604052801561424f576020820181803683370190505b5090508115614298576000614264848661472c565b90506020820160005b8481101561428557828101518282015260200161426d565b84811115614294576000858301525b5050505b9392505050565b6000816142b4846001600160801b0316613522565b60ff16116142ca5763b34b5c226000526004601cfd5b6142d38361430e565b9050816142e8826001600160801b0316613522565b60ff161161319f5761319c6142fe83600161472c565b6001600160801b03831690614332565b6000811960018301168161432182613522565b60ff169390931c8015179392505050565b60008061433e84613522565b60ff169050808303600180821b0385821b179250505092915050565b60008083601f84011261436c57600080fd5b5081356001600160401b0381111561438357600080fd5b60208301915083602082850101111561439b57600080fd5b9250929050565b600080600083850360a08112156143b857600080fd5b60808112156143c657600080fd5b5083925060808401356001600160401b038111156143e357600080fd5b6143ef8682870161435a565b9497909650939450505050565b6000806040838503121561440f57600080fd5b50508035926020909101359150565b634e487b7160e01b600052602160045260246000fd5b6003811061445257634e487b7160e01b600052602160045260246000fd5b50565b6020810161446283614434565b91905290565b6001600160a01b038116811461445257600080fd5b60006020828403121561448f57600080fd5b813561429881614468565b6000806000606084860312156144af57600080fd5b505081359360208301359350604090920135919050565b6000815180845260005b818110156144ec576020818501810151868301820152016144d0565b818111156144fe576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061319c60208301846144c6565b60006020828403121561453857600080fd5b5035919050565b801515811461445257600080fd5b6000806000806080858703121561456357600080fd5b84359350602085013592506040850135915060608501356145838161453f565b939692955090935050565b6000602082840312156145a057600080fd5b81356001600160801b038116811461429857600080fd5b600080600080600080608087890312156145d057600080fd5b8635955060208701356145e28161453f565b945060408701356001600160401b03808211156145fe57600080fd5b61460a8a838b0161435a565b9096509450606089013591508082111561462357600080fd5b5061463089828a0161435a565b979a9699509497509295939492505050565b63ffffffff841681528260208201526060604082015260006113ca60608301846144c6565b634e487b7160e01b600052604160045260246000fd5b60006080828403121561468f57600080fd5b604051608081018181106001600160401b03821117156146bf57634e487b7160e01b600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561473f5761473f614716565b500190565b60006001820161475657614756614716565b5060010190565b60008282101561476f5761476f614716565b500390565b60006020828403121561478657600080fd5b815161429881614468565b6000602082840312156147a357600080fd5b5051919050565b60006001600160401b038083168185168083038211156147cc576147cc614716565b01949350505050565b60006001600160401b03808316818516818304811182151516156147fb576147fb614716565b02949350505050565b60006001600160401b038381169083168181101561482457614824614716565b039392505050565b60006020828403121561483e57600080fd5b81516142988161453f565b6000806040838503121561485c57600080fd5b505080516020909101519092909150565b60006020828403121561487f57600080fd5b815163ffffffff8116811461429857600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826148b8576148b8614893565b500490565b60008160001904831182151516156148d7576148d7614716565b500290565b6000826148eb576148eb614893565b500690565b60006001600160801b038381169083168181101561482457614824614716565b60006001600160801b038083168185168083038211156147cc576147cc614716565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061496f606083018789614932565b8281036020840152614982818688614932565b9150508260408301529695505050505050565b600060ff821660ff8416808210156149af576149af614716565b90039392505050565b600060ff8316806149cb576149cb614893565b8060ff84160691505092915050565b60006001600160ff1b0381841382841380821686840486111615614a0057614a00614716565b600160ff1b6000871282811687830589121615614a1f57614a1f614716565b60008712925087820587128484161615614a3b57614a3b614716565b87850587128184161615614a5157614a51614716565b505050929093029392505050565b600082614a6e57614a6e614893565b600160ff1b821460001984141615614a8857614a88614716565b50059056fea264697066735822122075c70c4154051a88cbed0ac70536a54db779f3d30e831b1083f705c1b425257864736f6c634300080f0033000000000000000000000000000000000000000000000000000000000000000003caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b0000000000000000000000000000000000000000000000000000000000000049000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000000000000000000049d4000000000000000000000000007babe08ee4d07dba236530183b24055535a7011000000000000000000000000d3683e4947a7769603ab6418ec02f000ce3cf30b0000000000000000000000002ff5cc82dbf333ea30d8ee462178ab17073153550000000000000000000000000000000000000000000000000000000000014a34", - "nonce": "0x0", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "PermissionedDisputeGame", - "contractAddress": "0xff537e0d3154f7e6526d766e1495e6d7ab7cf5d6", - "function": null, - "arguments": [ - "(1, 0x03caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b, 73, 30, 10800, 302400, 0x07BABE08EE4D07dBA236530183B24055535A7011, 0x32cE910d9C6c8F78dc6779c1499aB05F281A054e, 0x2fF5cC82dBf333Ea30D8ee462178ab1707315355, 84532)", - "0x037637067c1DbE6d2430616d8f54Cb774Daa5999", - "0x8b8c52B04A38f10515C52670fcb23f3C4C44474F" - ], - "transaction": { - "from": "0x24c3ae1aedb8142d32bb6d3b988f5910f272d53b", - "gas": "0x55c89c", - "value": "0x0", - "input": "0x6102006040523480156200001257600080fd5b506040516200558c3803806200558c83398101604081905262000035916200053b565b82620000446001607e6200064a565b60ff16816040015111156200006c57604051633beff19960e11b815260040160405180910390fd5b60001981606001511480620000965750604081015160608201516200009390600162000670565b10155b15620000b55760405163e62ccf3960e01b815260040160405180910390fd5b600281606001511015620000dc5760405163e62ccf3960e01b815260040160405180910390fd5b6001600160401b0380168160c001516001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000129573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014f91906200068b565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b39190620006ab565b1115620001d35760405163b4e1243360e01b815260040160405180910390fd5b6000620001f882608001516001600160401b03166200048e60201b62000c4b1760201c565b6200020e906001600160401b03166002620006c5565b905060008260c001516001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000255573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027b91906200068b565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002df9190620006ab565b6200030284608001516001600160401b03166200048e60201b62000c4b1760201c565b6001600160401b031662000317919062000670565b905060006200033283836200049160201b6200236f1760201c565b90506001600160401b038111156200035d5760405163235dfb2b60e21b815260040160405180910390fd5b620003808460a001516001600160401b03166200048e60201b62000c4b1760201c565b6001600160401b0316816001600160401b03161115620003b35760405163235dfb2b60e21b815260040160405180910390fd5b63ffffffff8016620003da856000015163ffffffff166200048e60201b62000c4b1760201c565b63ffffffff1603620003ff5760405163073ed16760e31b815260040160405180910390fd5b5050815163ffffffff1661012090815260208301516080908152604084015160a0908152606085015160c0908152918501516001600160401b039081166101a052908501511660e0908152908401516001600160a01b03908116610100908152918501518116610140529084015181166101605292015161018052509182166101c052166101e05250620006e7565b90565b6000818311620004a25781620004a4565b825b9392505050565b60405161014081016001600160401b0381118282101715620004dd57634e487b7160e01b600052604160045260246000fd5b60405290565b805163ffffffff81168114620004f857600080fd5b919050565b80516001600160401b0381168114620004f857600080fd5b6001600160a01b03811681146200052b57600080fd5b50565b8051620004f88162000515565b60008060008385036101808112156200055357600080fd5b610140808212156200056457600080fd5b6200056e620004ab565b91506200057b86620004e3565b8252602086015160208301526040860151604083015260608601516060830152620005a960808701620004fd565b6080830152620005bc60a08701620004fd565b60a0830152620005cf60c087016200052e565b60c0830152620005e260e087016200052e565b60e0830152610100620005f78188016200052e565b8184015250610120808701518184015250819450620006188187016200052e565b935050506200062b61016085016200052e565b90509250925092565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff84168082101562000667576200066762000634565b90039392505050565b6000821982111562000686576200068662000634565b500190565b6000602082840312156200069e57600080fd5b8151620004a48162000515565b600060208284031215620006be57600080fd5b5051919050565b6000816000190483118215151615620006e257620006e262000634565b500290565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051614cca620008c2600039600081816105d9015281816117610152611f780152600081816108ad0152818161172f01528181611b330152611f4601526000818161071001528181612ae201528181612b4c0152612b7e015260008181610a5701526122c70152600081816106930152818161182d0152818161191f015281816119c701528181611a3d01528181612fa601526133050152600081816105660152818161157c0152818161164601528181612ec8015261323d0152600081816108e80152818161233301526132dc0152600081816105120152818161202d015281816129fb0152613a85015260008181610aaa01528181610e2f01528181611cc801528181611d080152818161298401528181612bad0152612c08015260008181610add015281816121ae015281816128410152818161290d01528181612b1d0152818161392e01528181613c1001528181613c6e01528181613cb9015281816142d601526143c5015260008181610b8401528181611d4c01528181611db9015281816128c9015281816129cf015281816138c7015261394f0152600081816107c501526139d20152614cca6000f3fe6080604052600436106103355760003560e01c806370872aa5116101ab578063c0d8bb74116100f7578063dabd396d11610095578063f8f43ff61161006f578063f8f43ff614610b31578063fa24f74314610b51578063fa315aa914610b75578063fe2bbeb214610ba857600080fd5b8063dabd396d14610a9b578063ec5e630814610ace578063eff0f59214610b0157600080fd5b8063cf09e0d0116100d1578063cf09e0d014610a08578063d5d44d8014610a28578063d6ae3cd514610a48578063d8cc1a3c14610a7b57600080fd5b8063c0d8bb7414610947578063c395e1ca14610974578063c6f0308c1461099457600080fd5b80638d450a9511610164578063a8e4fb901161013e578063a8e4fb901461089e578063bbdc02db146108d1578063bcef3b5514610912578063bd8da9561461092757600080fd5b80638d450a95146107b657806399735e32146107e9578063a445ece6146107fe57600080fd5b806370872aa514610747578063786b844b1461075c5780637b0f0adc146107715780638129fc1c146107845780638980e0cc1461078c5780638b85902b146107a157600080fd5b80633e3ac912116102855780635a5fa2d91161022357806360e27464116101fd57806360e27464146106cc5780636361506d146106ec5780636b6716c0146107015780636f0344091461073457600080fd5b80635a5fa2d9146106645780635c0cba3314610684578063609d3334146106b757600080fd5b8063529d6a8c1161025f578063529d6a8c1461059d578063534db0e2146105ca57806354fd4d50146105fd57806357da950e1461063457600080fd5b80633e3ac912146105365780633fc8cef314610557578063472777c61461058a57600080fd5b806325fc2ace116102f257806330dbe570116102cc57806330dbe5701461049c578063378dd48c146104d457806337b1b229146104ee5780633a7684631461050357600080fd5b806325fc2ace146104485780632810e1d6146104675780632ad69aeb1461047c57600080fd5b8063019351301461033a57806303c2924d1461035c57806319effeb41461037c578063200d2ed2146103c0578063222abf45146103ee578063250e69bd1461042e575b600080fd5b34801561034657600080fd5b5061035a6103553660046145a9565b610bd8565b005b34801561036857600080fd5b5061035a610377366004614603565b610db6565b34801561038857600080fd5b506000546103a390600160401b90046001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b3480156103cc57600080fd5b506000546103e190600160801b900460ff1681565b6040516103b7919061465c565b3480156103fa57600080fd5b5061041e610409366004614684565b600c6020526000908152604090205460ff1681565b60405190151581526020016103b7565b34801561043a57600080fd5b50600a5461041e9060ff1681565b34801561045457600080fd5b506008545b6040519081526020016103b7565b34801561047357600080fd5b506103e1611261565b34801561048857600080fd5b50610459610497366004614603565b6113e1565b3480156104a857600080fd5b506001546104bc906001600160a01b031681565b6040516001600160a01b0390911681526020016103b7565b3480156104e057600080fd5b50600d546103e19060ff1681565b3480156104fa57600080fd5b506104bc611412565b34801561050f57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104bc565b34801561054257600080fd5b5060005461041e90600160901b900460ff1681565b34801561056357600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104bc565b61035a6105983660046146a1565b611423565b3480156105a957600080fd5b506104596105b8366004614684565b60036020526000908152604090205481565b3480156105d657600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104bc565b34801561060957600080fd5b506040805180820190915260058152640312e382e360dc1b60208201525b6040516103b7919061471a565b34801561064057600080fd5b5060085460095461064f919082565b604080519283526020830191909152016103b7565b34801561067057600080fd5b5061045961067f36600461472d565b611435565b34801561069057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104bc565b3480156106c357600080fd5b5061062761146f565b3480156106d857600080fd5b5061035a6106e7366004614684565b61147d565b3480156106f857600080fd5b50610459611718565b34801561070d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006103a3565b61035a610742366004614754565b611724565b34801561075357600080fd5b50600954610459565b34801561076857600080fd5b5061035a6117b2565b61035a61077f3660046146a1565b611b1b565b61035a611b28565b34801561079857600080fd5b50600254610459565b3480156107ad57600080fd5b50610459611b7b565b3480156107c257600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610459565b3480156107f557600080fd5b50610459611b87565b34801561080a57600080fd5b5061086061081936600461472d565b6007602052600090815260409020805460019091015460ff821691610100810463ffffffff1691650100000000009091046001600160801b0316906001600160a01b031684565b60408051941515855263ffffffff90931660208501526001600160801b03909116918301919091526001600160a01b031660608201526080016103b7565b3480156108aa57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104bc565b3480156108dd57600080fd5b5060405163ffffffff7f00000000000000000000000000000000000000000000000000000000000000001681526020016103b7565b34801561091e57600080fd5b50610459611b91565b34801561093357600080fd5b506103a361094236600461472d565b611b9d565b34801561095357600080fd5b50610459610962366004614684565b600b6020526000908152604090205481565b34801561098057600080fd5b5061045961098f366004614795565b611d30565b3480156109a057600080fd5b506109b46109af36600461472d565b611e70565b6040805163ffffffff90981688526001600160a01b03968716602089015295909416948601949094526001600160801b039182166060860152608085015291821660a08401521660c082015260e0016103b7565b348015610a1457600080fd5b506000546103a3906001600160401b031681565b348015610a3457600080fd5b50610459610a43366004614684565b611ee3565b348015610a5457600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610459565b348015610a8757600080fd5b5061035a610a963660046147be565b611f3b565b348015610aa757600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006103a3565b348015610ada57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610459565b348015610b0d57600080fd5b5061041e610b1c36600461472d565b60046020526000908152604090205460ff1681565b348015610b3d57600080fd5b5061035a610b4c3660046146a1565b611fc5565b348015610b5d57600080fd5b50610b66612331565b6040516103b793929190614849565b348015610b8157600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610459565b348015610bb457600080fd5b5061041e610bc336600461472d565b60066020526000908152604090205460ff1681565b60008054600160801b900460ff166002811115610bf757610bf7614625565b14610c155760405163067fe19560e41b815260040160405180910390fd5b600054600160901b900460ff1615610c405760405163075173a960e11b815260040160405180910390fd5b610c4e610c4b611b91565b90565b610c65610c6036869003860186614884565b612389565b14610c8357604051639cc00b5b60e01b815260040160405180910390fd5b82606001358282604051610c989291906148f7565b604051809103902014610cbe5760405163d81d583b60e01b815260040160405180910390fd5b6000610d07610d0284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506123e592505050565b612439565b90506000610d2e82600881518110610d2157610d21614907565b60200260200101516125bd565b9050602081511115610d535760405163d81d583b60e01b815260040160405180910390fd5b602081810151825190910360031b1c610d6a611b7b565b8103610d8957604051630b8ed88360e41b815260040160405180910390fd5b5050600180546001600160a01b0319163317905550506000805460ff60901b1916600160901b1790555050565b60008054600160801b900460ff166002811115610dd557610dd5614625565b14610df35760405163067fe19560e41b815260040160405180910390fd5b600060028381548110610e0857610e08614907565b906000526020600020906005020190506000610e2384611b9d565b90506001600160401b037f000000000000000000000000000000000000000000000000000000000000000081169082161015610e725760405163f2440b5360e01b815260040160405180910390fd5b60008481526006602052604090205460ff1615610ea25760405163f1a9458160e01b815260040160405180910390fd5b6000848152600560205260409020805480158015610ebf57508515155b15610f21578354600160201b90046001600160a01b031660008115610ee45781610ef3565b60018601546001600160a01b03165b9050610eff818761263f565b505050600094855250506006602052505060409020805460ff19166001179055565b6000868152600760209081526040918290208251608081018452815460ff81161515808352610100820463ffffffff16948301949094526501000000000090046001600160801b031693810193909352600101546001600160a01b03166060830152610fa5576001600160801b036040820152600181526000869003610fa5578195505b600086826020015163ffffffff16610fbd9190614933565b90506000838211610fce5781610fd0565b835b602084015190915063ffffffff165b818110156110d6576000868281548110610ffb57610ffb614907565b6000918252602080832090910154808352600690915260409091205490915060ff1661103a57604051634d03b32360e11b815260040160405180910390fd5b60006002828154811061104f5761104f614907565b600091825260209091206005909102018054909150600160201b90046001600160a01b03161580156110955750600481015460408701516001600160801b039182169116115b156110c15760018101546001600160a01b0316606087015260048101546001600160801b031660408701525b505080806110ce9061494b565b915050610fdf565b5063ffffffff818116602085810191825260008c815260079091526040908190208651815493519288015164ffffffffff1990941690151564ffffffff00191617610100929094169182029390931774ffffffffffffffffffffffffffffffff00000000001916650100000000006001600160801b03909316929092029190911782556060850151600190920180546001600160a01b0319166001600160a01b039093169290921790915584900361125657606083015160008a8152600660205260409020805460ff19166001179055891580156111bd5750600054600160901b900460ff165b15611203576001546001600160a01b03166111d8818a61263f565b88546001600160a01b03909116600160201b02640100000000600160c01b0319909116178855611254565b6112306001600160a01b0382161561121b578161122a565b60018901546001600160a01b03165b8961263f565b8754640100000000600160c01b031916600160201b6001600160a01b038316021788555b505b505050505050505050565b600080600054600160801b900460ff16600281111561128257611282614625565b146112a05760405163067fe19560e41b815260040160405180910390fd5b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85460ff166112eb57604051634d03b32360e11b815260040160405180910390fd5b60006001600160a01b0316600260008154811061130a5761130a614907565b6000918252602090912060059091020154600160201b90046001600160a01b03161461133757600161133a565b60025b600080546001600160401b034216600160401b026fffffffffffffffff000000000000000019821681178355929350839260ff60801b191670ffffffffffffffffff00000000000000001990911617600160801b8360028111156113a0576113a0614625565b0217905560028111156113b5576113b5614625565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a290565b600560205281600052604060002081815481106113fd57600080fd5b90600052602060002001600091509150505481565b600061141e6000612681565b905090565b6114308383836001611724565b505050565b6000818152600760209081526040808320600590925282208054825461146690610100900463ffffffff1682614964565b95945050505050565b606061141e605460206126a4565b6114856117b2565b60006002600d5460ff1660028111156114a0576114a0614625565b036114c457506001600160a01b0381166000908152600b602052604090205461151a565b6001600d5460ff1660028111156114dd576114dd614625565b0361150157506001600160a01b03811660009081526003602052604090205461151a565b6040516301e28f7d60e21b815260040160405180910390fd5b6001600160a01b0382166000908152600c602052604090205460ff166115de576001600160a01b038281166000818152600c602052604090819020805460ff1916600117905551637eee288d60e01b81526004810191909152602481018390527f000000000000000000000000000000000000000000000000000000000000000090911690637eee288d90604401600060405180830381600087803b1580156115c257600080fd5b505af11580156115d6573d6000803e3d6000fd5b505050505050565b806000036115ff576040516317bfe5f760e01b815260040160405180910390fd5b6001600160a01b038281166000818152600b602090815260408083208390556003909152808220919091555163f3fef3a360e01b81526004810191909152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063f3fef3a390604401600060405180830381600087803b15801561168c57600080fd5b505af11580156116a0573d6000803e3d6000fd5b505050506000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146116f1576040519150601f19603f3d011682016040523d82523d6000602084013e6116f6565b606091505b5050905080611430576040516383e6cc6b60e01b815260040160405180910390fd5b600061141e60346126e6565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806117835750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6117a0576040516369c3779f60e11b815260040160405180910390fd5b6117ac84848484612706565b50505050565b6002600d5460ff1660028111156117cb576117cb614625565b14806117ed57506001600d5460ff1660028111156117eb576117eb614625565b145b156117f457565b6000600d5460ff16600281111561180d5761180d614625565b1461182b576040516301e28f7d60e21b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ad919061497b565b156118cb5760405163379a7ed960e01b815260040160405180910390fd5b600054600160401b90046001600160401b03166001600160401b031660000361190757604051636082930560e11b815260040160405180910390fd5b604051630314d2b360e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630314d2b390602401602060405180830381865afa15801561196e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611992919061497b565b9050806119b257604051634851bd9b60e01b815260040160405180910390fd5b6040516317cf21a960e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906317cf21a990602401600060405180830381600087803b158015611a1357600080fd5b505af1925050508015611a24575060015b506040516324b5ce0b60e11b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063496b9c1690602401602060405180830381865afa158015611a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab0919061497b565b90508015611aca57600d805460ff19166001179055611ad8565b600d805460ff191660021790555b600d546040517f9908eaac0645df9d0704d06adc9e07337c951de2f06b5f2836151d48d5e4722f91611b0f9160ff9091169061465c565b60405180910390a15050565b6114308383836000611724565b326001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b71576040516369c3779f60e11b815260040160405180910390fd5b611b79612f77565b565b600061141e60546126e6565b600061141e611b7b565b600061141e60146126e6565b600080600054600160801b900460ff166002811115611bbe57611bbe614625565b14611bdc5760405163067fe19560e41b815260040160405180910390fd5b600060028381548110611bf157611bf1614907565b600091825260208220600590910201805490925063ffffffff90811614611c5757815460028054909163ffffffff16908110611c2f57611c2f614907565b906000526020600020906005020160040160109054906101000a90046001600160801b031690505b6004820154600090611c8090600160801b90046001600160401b03165b6001600160401b031690565b611c93906001600160401b031642614964565b611ca9611c74846001600160801b031660401c90565b6001600160401b0316611cbc9190614933565b90506001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166001600160401b0316816001600160401b031611611d065780611466565b7f000000000000000000000000000000000000000000000000000000000000000095945050505050565b600080611d45836001600160801b0316613398565b60ff1690507f0000000000000000000000000000000000000000000000000000000000000000811115611d8b576040516356f57b2b60e01b815260040160405180910390fd5b642e90edd00062061a806311e1a3006000611da683836149ae565b9050670de0b6b3a76400006000611ddd827f00000000000000000000000000000000000000000000000000000000000000006149c2565b90506000611dfb611df6670de0b6b3a7640000866149c2565b613404565b90506000611e09848461361a565b90506000611e178383613669565b90506000611e2482613697565b90506000611e4382611e3e670de0b6b3a76400008f6149c2565b613814565b90506000611e518b83613669565b9050611e5d818d6149c2565b9f9e505050505050505050505050505050565b60028181548110611e8057600080fd5b60009182526020909120600590910201805460018201546002830154600384015460049094015463ffffffff84169550600160201b9093046001600160a01b03908116949216926001600160801b03918216929180821691600160801b90041687565b60006002600d5460ff166002811115611efe57611efe614625565b03611f1f57506001600160a01b03166000908152600b602052604090205490565b506001600160a01b031660009081526003602052604090205490565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611f9a5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b611fb7576040516369c3779f60e11b815260040160405180910390fd5b6115d6868686868686613845565b60008054600160801b900460ff166002811115611fe457611fe4614625565b146120025760405163067fe19560e41b815260040160405180910390fd5b60008060008061201186613bd6565b9350935093509350600061202785858585613e45565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ad91906149e1565b905060018903612157576001600160a01b0381166352f0f3ad8a846120d3610c4b611718565b6040516001600160e01b031960e086901b16815260048101939093526024830191909152604482015260206064820152608481018a905260a4015b6020604051808303816000875af115801561212d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215191906149fe565b50611256565b60028903612176576001600160a01b0381166352f0f3ad8a84896120d3565b60038903612195576001600160a01b0381166352f0f3ad8a84876120d3565b600489036122a25760006121d26001600160801b0385167f0000000000000000000000000000000000000000000000000000000000000000613ee4565b6009546121df9190614933565b6121ea906001614933565b90506121f4611b7b565b811061220757612202611b7b565b612209565b805b90506001600160a01b0382166352f0f3ad8b8560405160e084901b6001600160e01b03191681526004810192909252602482015260c084901b604482015260086064820152608481018b905260a4016020604051808303816000875af1158015612277573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229b91906149fe565b5050611256565b60058903612315576040516352f0f3ad60e01b8152600481018a9052602481018390527f000000000000000000000000000000000000000000000000000000000000000060c01b604482015260086064820152608481018890526001600160a01b038216906352f0f3ad9060a40161210e565b604051600162ec819b60e01b0319815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006000606061235e611b91565b915061236861146f565b9050909192565b600081831161237e5781612380565b825b90505b92915050565b600081600001518260200151836040015184606001516040516020016123c8949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b6040805180820190915260008082526020820152815160000361241b57604051635ab458fb60e01b815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b6060600080600061244985613f11565b91945092509050600181600181111561246457612464614625565b14612482576040516325ce355f60e11b815260040160405180910390fd5b845161248e8385614933565b146124ac57604051630b8aa6f760e31b815260040160405180910390fd5b604080516020808252610420820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816124c35790505093506000835b86518110156125b1576000806125366040518060400160405280858c6000015161251a9190614964565b8152602001858c6020015161252f9190614933565b9052613f11565b5091509150604051806040016040528083836125529190614933565b8152602001848b602001516125679190614933565b81525088858151811061257c5761257c614907565b6020908102919091010152612592600185614933565b935061259e8183614933565b6125a89084614933565b925050506124f0565b50845250919392505050565b606060008060006125cd85613f11565b9194509250905060008160018111156125e8576125e8614625565b14612606576040516307fe6cb960e21b815260040160405180910390fd5b6126108284614933565b85511461263057604051630b8aa6f760e31b815260040160405180910390fd5b61146685602001518484614207565b60028101546001600160a01b038316600090815260036020526040812080546001600160801b0390931692909190612678908490614933565b90915550505050565b6000806126963660011981013560f01c900390565b929092013560601c92915050565b606060006126ba3660011981013560f01c900390565b905060405191508282528284820160208401378260208301016000815260208101604052505092915050565b6000806126fb3660011981013560f01c900390565b929092013592915050565b60008054600160801b900460ff16600281111561272557612725614625565b146127435760405163067fe19560e41b815260040160405180910390fd5b60006002848154811061275857612758614907565b60009182526020918290206040805160e0810182526005909302909101805463ffffffff811684526001600160a01b03600160201b90910481169484019490945260018101549093169082015260028201546001600160801b03908116606083015260038301546080830181905260049093015480821660a0840152600160801b90041660c0820152915085146128025760405163180a019960e11b815260040160405180910390fd5b60a0810151600083156001600160801b0383161760011b9050600061282f826001600160801b0316613398565b60ff16905086158061286a57506128677f00000000000000000000000000000000000000000000000000000000000000006002614933565b81145b8015612874575084155b15612892576040516329098def60e21b815260040160405180910390fd5b600054600160901b900460ff1680156128a9575086155b156128c75760405163075173a960e11b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000811115612908576040516356f57b2b60e01b815260040160405180910390fd5b6129337f00000000000000000000000000000000000000000000000000000000000000006001614933565b8103612945576129458688858861429b565b3461294f83611d30565b1461296d57604051638620aa1960e01b815260040160405180910390fd5b600061297888611b9d565b90506001600160401b037f00000000000000000000000000000000000000000000000000000000000000008116908216036129c657604051630ce0744560e21b815260040160405180910390fd5b60006129f360017f0000000000000000000000000000000000000000000000000000000000000000614964565b8303612b16577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7b91906149e1565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612adc91906149fe565b612b0f907f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316614a17565b9050612ba7565b612b4160017f0000000000000000000000000000000000000000000000000000000000000000614964565b8303612b7b57612b0f7f00000000000000000000000000000000000000000000000000000000000000006001600160401b03166002614a42565b507f00000000000000000000000000000000000000000000000000000000000000006001600160401b03165b612bda817f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316614a71565b6001600160401b0316612bf3836001600160401b031690565b6001600160401b03161115612c3857612c35817f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316614a71565b91505b6000604083901b421760008a8152608087901b6001600160801b038d1617602052604081209192509060008181526004602052604090205490915060ff1615612c94576040516380497e3b60e01b815260040160405180910390fd5b60016004600083815260200190815260200160002060006101000a81548160ff02191690831515021790555060026040518060e001604052808d63ffffffff16815260200160006001600160a01b03168152602001336001600160a01b03168152602001346001600160801b031681526020018c8152602001886001600160801b03168152602001846001600160801b0316815250908060018154018082558091505060019003906000526020600020906005020160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160020160006101000a8154816001600160801b0302191690836001600160801b031602179055506080820151816003015560a08201518160040160006101000a8154816001600160801b0302191690836001600160801b0316021790555060c08201518160040160106101000a8154816001600160801b0302191690836001600160801b031602179055505050600560008c81526020019081526020016000206001600280549050612e8b9190614964565b81546001810183556000928352602080842090910191909155338252600b9052604081208054349290612ebf908490614933565b925050819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015612f2157600080fd5b505af1158015612f35573d6000803e3d6000fd5b50506040513393508d92508e91507f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be90600090a4505050505050505050505050565b600054600160881b900460ff1615612fa15760405162dc149f60e41b815260040160405180910390fd5b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d83ef2676040518163ffffffff1660e01b81526004016040805180830381865afa158015613001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130259190614a99565b90925090508161304857604051633535e1d960e11b815260040160405180910390fd5b6040805180820190915282815260200181905260088290556009819055607a361461308657604051639824bdab60e01b815260040160405180910390fd5b8061308f611b7b565b116130c15761309c611b91565b60405163f40239db60e01b81526004016130b891815260200190565b60405180910390fd5b6040805160e08101825263ffffffff81526000602082015260029181016130e6611412565b6001600160a01b03168152602001346001600160801b0316815260200161310b611b91565b815260016020820152604001426001600160801b0390811690915282546001808201855560009485526020808620855160059094020180549186015163ffffffff9094166001600160c01b031990921691909117600160201b6001600160a01b0394851602178155604085015191810180546001600160a01b031916929093169190911790915560608301516002820180546fffffffffffffffffffffffffffffffff19169184169190911790556080830151600382015560a083015160c090930151928216600160801b9390921692909202176004909101558054600160881b60ff60881b199091161781553490600b90613205611412565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546132349190614933565b925050819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561329657600080fd5b505af11580156132aa573d6000803e3d6000fd5b50506000805467ffffffffffffffff1916426001600160401b0316179055505060408051630f27ce5f60e21b815290517f000000000000000000000000000000000000000000000000000000000000000063ffffffff1692507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691633c9f397c9160048083019260209291908290030181865afa158015613358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061337c9190614abd565b600a805460ff191663ffffffff92909216929092141790555050565b7e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b6001600160401b03831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b6001600160801b03811160071b81811c6001600160401b031060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c60ff1060031b176000821361345957631615e6386000526004601cfd5b7ff8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffff6f8421084210842108cc6318c6db6d54be83831c1c601f161a1890811b609f90811c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d6c8c3f38e95a6b1ff2ab1c3b343619018302821d6d02384773bdf1ac5676facced60901901830290911d6cb9a025d814b29c212b8b1a07cd1901909102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a5506029190037d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b60007812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f218311670de0b6b3a76400000215820261365757637c5f487d6000526004601cfd5b50670de0b6b3a7640000919091020490565b6000816000190483118202156136875763bac65e5b6000526004601cfd5b50670de0b6b3a764000091020490565b600068023f2fa8f6da5b9d281982136136af57919050565b680755bf798b4a1bf1e582126136cd5763a37bfec96000526004601cfd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6000612380670de0b6b3a76400008361382c86613404565b6138369190614ae3565b6138409190614b68565b613697565b60008054600160801b900460ff16600281111561386457613864614625565b146138825760405163067fe19560e41b815260040160405180910390fd5b60006002878154811061389757613897614907565b6000918252602082206005919091020160048101549092506001600160801b0316908715821760011b90506138ed7f00000000000000000000000000000000000000000000000000000000000000006001614933565b6138ff826001600160801b0316613398565b60ff161461392057604051630bea7bb360e31b815260040160405180910390fd5b60008089156139fc576139737f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614964565b6001901b613989846001600160801b0316614390565b6001600160801b031661399c9190614b96565b156139d0576139c76139b860016001600160801b038716614baa565b865463ffffffff1660006143ae565b600301546139f2565b7f00000000000000000000000000000000000000000000000000000000000000005b9150849050613a1d565b60038501549150613a1a6139b86001600160801b0386166001614bca565b90505b600882901b60088a8a604051613a349291906148f7565b6040518091039020901b14613a5c5760405163696550ff60e01b815260040160405180910390fd5b6000613a678c614477565b90506000613a76836003015490565b6040516370a6769960e11b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e14ced3290613aca908f908f908f908f908a90600401614c15565b6020604051808303816000875af1158015613ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b0d91906149fe565b600485015491149150600090600290613b2e906001600160801b0316613398565b613b40896001600160801b0316613398565b613b4a9190614c4f565b613b549190614c72565b60ff161590508115158103613b7c5760405163fb4e40dd60e01b815260040160405180910390fd5b8754600160201b90046001600160a01b031615613bac57604051639071e6af60e01b815260040160405180910390fd5b50508554640100000000600160c01b03191633600160201b02179095555050505050505050505050565b6000806000806000859050600060028281548110613bf657613bf6614907565b6000918252602090912060059091020160048101549091507f000000000000000000000000000000000000000000000000000000000000000090613c42906001600160801b0316613398565b60ff1611613c63576040516359a5ae1160e11b815260040160405180910390fd5b6000815b60048301547f000000000000000000000000000000000000000000000000000000000000000090613ca0906001600160801b0316613398565b60ff169250821115613d1557825463ffffffff16613cdf7f00000000000000000000000000000000000000000000000000000000000000006001614933565b8303613ce9578391505b60028181548110613cfc57613cfc614907565b9060005260206000209060050201935080945050613c67565b600481810154908401546001600160801b0391821691166000816001600160801b0316613d5a613d4e856001600160801b031660011c90565b6001600160801b031690565b6001600160801b03161490508015613df3576000613d80836001600160801b0316614390565b6001600160801b03161115613dd0576000613db0613da860016001600160801b038616614baa565b8960016143ae565b6003810154600490910154909c506001600160801b03169a50613dd69050565b6008549a505b600386015460048701549099506001600160801b03169750613e37565b6000613e0c613da86001600160801b0385166001614bca565b6003808901546004808b015492840154930154909e506001600160801b039182169d50919b50169850505b505050505050509193509193565b60006001600160801b03841615613ea05760408051602081018790526001600160801b038087169282019290925260608101859052908316608082015260a00160405160208183030381529060405280519060200120611466565b8282604051602001613ec59291909182526001600160801b0316602082015260400190565b6040516020818303038152906040528051906020012095945050505050565b600080613ef084613398565b60ff1690508083036001841b600180831b0386831b17039250505092915050565b60008060008360000151600003613f3b57604051635ab458fb60e01b815260040160405180910390fd5b6020840151805160001a607f8111613f60576000600160009450945094505050614200565b60b78111613ff8576000613f75608083614964565b905080876000015111613f9b576040516366c9448560e01b815260040160405180910390fd5b6001838101516001600160f81b0319169082148015613fc75750600160ff1b6001600160f81b03198216105b15613fe55760405163babb01dd60e01b815260040160405180910390fd5b5060019550935060009250614200915050565b60bf81116140da57600061400d60b783614964565b905080876000015111614033576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b03191660008190036140645760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c603781116140935760405163babb01dd60e01b815260040160405180910390fd5b61409d8184614933565b8951116140bd576040516366c9448560e01b815260040160405180910390fd5b6140c8836001614933565b97509550600094506142009350505050565b60f781116141265760006140ef60c083614964565b905080876000015111614115576040516366c9448560e01b815260040160405180910390fd5b600195509350849250614200915050565b600061413360f783614964565b905080876000015111614159576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b031916600081900361418a5760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c603781116141b95760405163babb01dd60e01b815260040160405180910390fd5b6141c38184614933565b8951116141e3576040516366c9448560e01b815260040160405180910390fd5b6141ee836001614933565b97509550600194506142009350505050565b9193909250565b6060816001600160401b038111156142215761422161486e565b6040519080825280601f01601f19166020018201604052801561424b576020820181803683370190505b50905081156142945760006142608486614933565b90506020820160005b84811015614281578281015182820152602001614269565b84811115614290576000858301525b5050505b9392505050565b60006142b16001600160801b0384166001614bca565b905060006142c1828660016143ae565b9050600086901a838061432357506142fa60027f0000000000000000000000000000000000000000000000000000000000000000614b96565b6004830154600290614314906001600160801b0316613398565b61431e9190614c72565b60ff16145b156143625760ff81166001148061433d575060ff81166002145b61435d5760405163f40239db60e01b8152600481018890526024016130b8565b614387565b60ff8116156143875760405163f40239db60e01b8152600481018890526024016130b8565b50505050505050565b60008061439c83613398565b600160ff919091161b90920392915050565b600080826143ee576143e96001600160801b0386167f00000000000000000000000000000000000000000000000000000000000000006144a6565b614400565b614400856001600160801b0316614515565b90506002848154811061441557614415614907565b906000526020600020906005020191505b60048201546001600160801b0382811691161461446f57815460028054909163ffffffff1690811061445a5761445a614907565b90600052602060002090600502019150614426565b509392505050565b600080600080600061448886613bd6565b935093509350935061449c84848484613e45565b9695505050505050565b6000816144bb846001600160801b0316613398565b60ff16116144d15763b34b5c226000526004601cfd5b6144da83614515565b9050816144ef826001600160801b0316613398565b60ff161161238357612380614505836001614933565b6001600160801b03831690614539565b6000811960018301168161452882613398565b60ff169390931c8015179392505050565b60008061454584613398565b60ff169050808303600180821b0385821b179250505092915050565b60008083601f84011261457357600080fd5b5081356001600160401b0381111561458a57600080fd5b6020830191508360208285010111156145a257600080fd5b9250929050565b600080600083850360a08112156145bf57600080fd5b60808112156145cd57600080fd5b5083925060808401356001600160401b038111156145ea57600080fd5b6145f686828701614561565b9497909650939450505050565b6000806040838503121561461657600080fd5b50508035926020909101359150565b634e487b7160e01b600052602160045260246000fd5b6003811061465957634e487b7160e01b600052602160045260246000fd5b50565b602081016146698361463b565b91905290565b6001600160a01b038116811461465957600080fd5b60006020828403121561469657600080fd5b81356142948161466f565b6000806000606084860312156146b657600080fd5b505081359360208301359350604090920135919050565b6000815180845260005b818110156146f3576020818501810151868301820152016146d7565b81811115614705576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061238060208301846146cd565b60006020828403121561473f57600080fd5b5035919050565b801515811461465957600080fd5b6000806000806080858703121561476a57600080fd5b843593506020850135925060408501359150606085013561478a81614746565b939692955090935050565b6000602082840312156147a757600080fd5b81356001600160801b038116811461429457600080fd5b600080600080600080608087890312156147d757600080fd5b8635955060208701356147e981614746565b945060408701356001600160401b038082111561480557600080fd5b6148118a838b01614561565b9096509450606089013591508082111561482a57600080fd5b5061483789828a01614561565b979a9699509497509295939492505050565b63ffffffff8416815282602082015260606040820152600061146660608301846146cd565b634e487b7160e01b600052604160045260246000fd5b60006080828403121561489657600080fd5b604051608081018181106001600160401b03821117156148c657634e487b7160e01b600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156149465761494661491d565b500190565b60006001820161495d5761495d61491d565b5060010190565b6000828210156149765761497661491d565b500390565b60006020828403121561498d57600080fd5b815161429481614746565b634e487b7160e01b600052601260045260246000fd5b6000826149bd576149bd614998565b500490565b60008160001904831182151516156149dc576149dc61491d565b500290565b6000602082840312156149f357600080fd5b81516142948161466f565b600060208284031215614a1057600080fd5b5051919050565b60006001600160401b03808316818516808303821115614a3957614a3961491d565b01949350505050565b60006001600160401b0380831681851681830481118215151615614a6857614a6861491d565b02949350505050565b60006001600160401b0383811690831681811015614a9157614a9161491d565b039392505050565b60008060408385031215614aac57600080fd5b505080516020909101519092909150565b600060208284031215614acf57600080fd5b815163ffffffff8116811461429457600080fd5b60006001600160ff1b0381841382841380821686840486111615614b0957614b0961491d565b600160ff1b6000871282811687830589121615614b2857614b2861491d565b60008712925087820587128484161615614b4457614b4461491d565b87850587128184161615614b5a57614b5a61491d565b505050929093029392505050565b600082614b7757614b77614998565b600160ff1b821460001984141615614b9157614b9161491d565b500590565b600082614ba557614ba5614998565b500690565b60006001600160801b0383811690831681811015614a9157614a9161491d565b60006001600160801b03808316818516808303821115614a3957614a3961491d565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b606081526000614c29606083018789614bec565b8281036020840152614c3c818688614bec565b9150508260408301529695505050505050565b600060ff821660ff841680821015614c6957614c6961491d565b90039392505050565b600060ff831680614c8557614c85614998565b8060ff8416069150509291505056fea2646970667358221220860c23a83884cc08df9069441e34e5ac65668559b49819edea26545ff6110aec64736f6c634300080f0033000000000000000000000000000000000000000000000000000000000000000103caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b0000000000000000000000000000000000000000000000000000000000000049000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000000000000000000049d4000000000000000000000000007babe08ee4d07dba236530183b24055535a701100000000000000000000000032ce910d9c6c8f78dc6779c1499ab05f281a054e0000000000000000000000002ff5cc82dbf333ea30d8ee462178ab17073153550000000000000000000000000000000000000000000000000000000000014a34000000000000000000000000037637067c1dbe6d2430616d8f54cb774daa59990000000000000000000000008b8c52b04a38f10515c52670fcb23f3c4c44474f", - "nonce": "0x1", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1762539213527, - "chain": 11155111, - "commit": "4b699c9" -} \ No newline at end of file diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/records/DeployDisputeGames.s.sol/11155111/run-1762539301055.json b/sepolia/2025-11-07-upgrade-fault-proofs/records/DeployDisputeGames.s.sol/11155111/run-1762539301055.json deleted file mode 100644 index 37642625..00000000 --- a/sepolia/2025-11-07-upgrade-fault-proofs/records/DeployDisputeGames.s.sol/11155111/run-1762539301055.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x1acc71fe9278c821be87cb7adaee7253dda2736c6c2a6e2c2752af52531f5195", - "transactionType": "CREATE", - "contractName": "FaultDisputeGame", - "contractAddress": "0xf0b64b080548b1f688356b9cf880076c2145f79a", - "function": null, - "arguments": [ - "(0, 0x03caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b, 73, 30, 10800, 302400, 0x07BABE08EE4D07dBA236530183B24055535A7011, 0xd3683e4947A7769603Ab6418eC02f000CE3cF30b, 0x2fF5cC82dBf333Ea30D8ee462178ab1707315355, 84532)" - ], - "transaction": { - "from": "0x7f10098bd53519c739ca8a404afe127647d94774", - "gas": "0x538b43", - "value": "0x0", - "input": "0x6101c06040523480156200001257600080fd5b50604051620053023803806200530283398101604081905262000035916200052d565b620000436001607e62000600565b60ff16816040015111156200006b57604051633beff19960e11b815260040160405180910390fd5b60001981606001511480620000955750604081015160608201516200009290600162000626565b10155b15620000b45760405163e62ccf3960e01b815260040160405180910390fd5b600281606001511015620000db5760405163e62ccf3960e01b815260040160405180910390fd5b6001600160401b0380168160c001516001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000128573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014e919062000641565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b2919062000661565b1115620001d25760405163b4e1243360e01b815260040160405180910390fd5b6000620001f782608001516001600160401b03166200048060201b62000baf1760201c565b6200020d906001600160401b031660026200067b565b905060008260c001516001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027a919062000641565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002de919062000661565b6200030184608001516001600160401b03166200048060201b62000baf1760201c565b6001600160401b031662000316919062000626565b905060006200033183836200048360201b6200318b1760201c565b90506001600160401b038111156200035c5760405163235dfb2b60e21b815260040160405180910390fd5b6200037f8460a001516001600160401b03166200048060201b62000baf1760201c565b6001600160401b0316816001600160401b03161115620003b25760405163235dfb2b60e21b815260040160405180910390fd5b63ffffffff8016620003d9856000015163ffffffff166200048060201b62000baf1760201c565b63ffffffff1603620003fe5760405163073ed16760e31b815260040160405180910390fd5b5050815163ffffffff1661012090815260208301516080908152604084015160a0908152606085015160c0908152918501516001600160401b039081166101a052908501511660e0908152908401516001600160a01b03908116610100908152918501518116610140529084015116610160529091015161018052506200069d565b90565b600081831162000494578162000496565b825b9392505050565b60405161014081016001600160401b0381118282101715620004cf57634e487b7160e01b600052604160045260246000fd5b60405290565b805163ffffffff81168114620004ea57600080fd5b919050565b80516001600160401b0381168114620004ea57600080fd5b6001600160a01b03811681146200051d57600080fd5b50565b8051620004ea8162000507565b600061014082840312156200054157600080fd5b6200054b6200049d565b6200055683620004d5565b81526020830151602082015260408301516040820152606083015160608201526200058460808401620004ef565b60808201526200059760a08401620004ef565b60a0820152620005aa60c0840162000520565b60c0820152620005bd60e0840162000520565b60e0820152610100620005d281850162000520565b90820152610120928301519281019290925250919050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8416808210156200061d576200061d620005ea565b90039392505050565b600082198211156200063c576200063c620005ea565b500190565b6000602082840312156200065457600080fd5b8151620004968162000507565b6000602082840312156200067457600080fd5b5051919050565b6000816000190483118215151615620006985762000698620005ea565b500290565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051614ac36200083f600039600081816106a701528181611a6401528181611ace0152611b000152600081816109bb01526130e301526000818161062a01528181611f74015281816120660152818161210e015281816121840152818161229e01526125fd015260008181610530015281816114e0015281816115aa01528181611e4a015261253501526000818161084c015281816125d4015261314f0152600081816104dc0152818161197d01528181612c900152612e49015260008181610a0e01528181610d930152818161190601528181611b2f01528181611b8a015281816127dd015261281d015260008181610a41015281816117c30152818161188f01528181611a9f01528181612b3901528181612fca015281816135c901528181613af901528181613c1401528181613c720152613cbd015260008181610ae80152818161184b0152818161195101528181612861015281816128ce01528181612ad20152612b5a01526000818161075c0152612bdd0152614ac36000f3fe6080604052600436106102ff5760003560e01c806370872aa511610190578063c395e1ca116100dc578063dabd396d11610095578063f8f43ff61161006f578063f8f43ff614610a95578063fa24f74314610ab5578063fa315aa914610ad9578063fe2bbeb214610b0c57600080fd5b8063dabd396d146109ff578063ec5e630814610a32578063eff0f59214610a6557600080fd5b8063c395e1ca146108d8578063c6f0308c146108f8578063cf09e0d01461096c578063d5d44d801461098c578063d6ae3cd5146109ac578063d8cc1a3c146109df57600080fd5b80638d450a9511610149578063bbdc02db11610123578063bbdc02db14610835578063bcef3b5514610876578063bd8da9561461088b578063c0d8bb74146108ab57600080fd5b80638d450a951461074d57806399735e3214610780578063a445ece61461079557600080fd5b806370872aa5146106de578063786b844b146106f35780637b0f0adc146107085780638129fc1c1461071b5780638980e0cc146107235780638b85902b1461073857600080fd5b80633e3ac9121161024f5780635a5fa2d91161020857806360e27464116101e257806360e27464146106635780636361506d146106835780636b6716c0146106985780636f034409146106cb57600080fd5b80635a5fa2d9146105fb5780635c0cba331461061b578063609d33341461064e57600080fd5b80633e3ac912146105005780633fc8cef314610521578063472777c614610554578063529d6a8c1461056757806354fd4d501461059457806357da950e146105cb57600080fd5b806325fc2ace116102bc57806330dbe5701161029657806330dbe57014610466578063378dd48c1461049e57806337b1b229146104b85780633a768463146104cd57600080fd5b806325fc2ace146104125780632810e1d6146104315780632ad69aeb1461044657600080fd5b8063019351301461030457806303c2924d1461032657806319effeb414610346578063200d2ed21461038a578063222abf45146103b8578063250e69bd146103f8575b600080fd5b34801561031057600080fd5b5061032461031f3660046143a2565b610b3c565b005b34801561033257600080fd5b506103246103413660046143fc565b610d1a565b34801561035257600080fd5b5060005461036d90600160401b90046001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b34801561039657600080fd5b506000546103ab90600160801b900460ff1681565b6040516103819190614455565b3480156103c457600080fd5b506103e86103d336600461447d565b600c6020526000908152604090205460ff1681565b6040519015158152602001610381565b34801561040457600080fd5b50600a546103e89060ff1681565b34801561041e57600080fd5b506008545b604051908152602001610381565b34801561043d57600080fd5b506103ab6111c5565b34801561045257600080fd5b506104236104613660046143fc565b611345565b34801561047257600080fd5b50600154610486906001600160a01b031681565b6040516001600160a01b039091168152602001610381565b3480156104aa57600080fd5b50600d546103ab9060ff1681565b3480156104c457600080fd5b50610486611376565b3480156104d957600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610486565b34801561050c57600080fd5b506000546103e890600160901b900460ff1681565b34801561052d57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610486565b61032461056236600461449a565b611387565b34801561057357600080fd5b5061042361058236600461447d565b60036020526000908152604090205481565b3480156105a057600080fd5b506040805180820190915260058152640312e382e360dc1b60208201525b6040516103819190614513565b3480156105d757600080fd5b506008546009546105e6919082565b60408051928352602083019190915201610381565b34801561060757600080fd5b50610423610616366004614526565b611399565b34801561062757600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610486565b34801561065a57600080fd5b506105be6113d3565b34801561066f57600080fd5b5061032461067e36600461447d565b6113e1565b34801561068f57600080fd5b5061042361167c565b3480156106a457600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061036d565b6103246106d936600461454d565b611688565b3480156106ea57600080fd5b50600954610423565b3480156106ff57600080fd5b50610324611ef9565b61032461071636600461449a565b612262565b61032461226f565b34801561072f57600080fd5b50600254610423565b34801561074457600080fd5b50610423612690565b34801561075957600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610423565b34801561078c57600080fd5b5061042361269c565b3480156107a157600080fd5b506107f76107b0366004614526565b6007602052600090815260409020805460019091015460ff821691610100810463ffffffff1691650100000000009091046001600160801b0316906001600160a01b031684565b60408051941515855263ffffffff90931660208501526001600160801b03909116918301919091526001600160a01b03166060820152608001610381565b34801561084157600080fd5b5060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610381565b34801561088257600080fd5b506104236126a6565b34801561089757600080fd5b5061036d6108a6366004614526565b6126b2565b3480156108b757600080fd5b506104236108c636600461447d565b600b6020526000908152604090205481565b3480156108e457600080fd5b506104236108f336600461458e565b612845565b34801561090457600080fd5b50610918610913366004614526565b612985565b6040805163ffffffff90981688526001600160a01b03968716602089015295909416948601949094526001600160801b039182166060860152608085015291821660a08401521660c082015260e001610381565b34801561097857600080fd5b5060005461036d906001600160401b031681565b34801561099857600080fd5b506104236109a736600461447d565b6129f8565b3480156109b857600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610423565b3480156109eb57600080fd5b506103246109fa3660046145b7565b612a50565b348015610a0b57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061036d565b348015610a3e57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610423565b348015610a7157600080fd5b506103e8610a80366004614526565b60046020526000908152604090205460ff1681565b348015610aa157600080fd5b50610324610ab036600461449a565b612de1565b348015610ac157600080fd5b50610aca61314d565b60405161038193929190614642565b348015610ae557600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610423565b348015610b1857600080fd5b506103e8610b27366004614526565b60066020526000908152604090205460ff1681565b60008054600160801b900460ff166002811115610b5b57610b5b61441e565b14610b795760405163067fe19560e41b815260040160405180910390fd5b600054600160901b900460ff1615610ba45760405163075173a960e11b815260040160405180910390fd5b610bb2610baf6126a6565b90565b610bc9610bc43686900386018661467d565b6131a5565b14610be757604051639cc00b5b60e01b815260040160405180910390fd5b82606001358282604051610bfc9291906146f0565b604051809103902014610c225760405163d81d583b60e01b815260040160405180910390fd5b6000610c6b610c6684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061320192505050565b613255565b90506000610c9282600881518110610c8557610c85614700565b60200260200101516133d9565b9050602081511115610cb75760405163d81d583b60e01b815260040160405180910390fd5b602081810151825190910360031b1c610cce612690565b8103610ced57604051630b8ed88360e41b815260040160405180910390fd5b5050600180546001600160a01b0319163317905550506000805460ff60901b1916600160901b1790555050565b60008054600160801b900460ff166002811115610d3957610d3961441e565b14610d575760405163067fe19560e41b815260040160405180910390fd5b600060028381548110610d6c57610d6c614700565b906000526020600020906005020190506000610d87846126b2565b90506001600160401b037f000000000000000000000000000000000000000000000000000000000000000081169082161015610dd65760405163f2440b5360e01b815260040160405180910390fd5b60008481526006602052604090205460ff1615610e065760405163f1a9458160e01b815260040160405180910390fd5b6000848152600560205260409020805480158015610e2357508515155b15610e85578354600160201b90046001600160a01b031660008115610e485781610e57565b60018601546001600160a01b03165b9050610e63818761345b565b505050600094855250506006602052505060409020805460ff19166001179055565b6000868152600760209081526040918290208251608081018452815460ff81161515808352610100820463ffffffff16948301949094526501000000000090046001600160801b031693810193909352600101546001600160a01b03166060830152610f09576001600160801b036040820152600181526000869003610f09578195505b600086826020015163ffffffff16610f21919061472c565b90506000838211610f325781610f34565b835b602084015190915063ffffffff165b8181101561103a576000868281548110610f5f57610f5f614700565b6000918252602080832090910154808352600690915260409091205490915060ff16610f9e57604051634d03b32360e11b815260040160405180910390fd5b600060028281548110610fb357610fb3614700565b600091825260209091206005909102018054909150600160201b90046001600160a01b0316158015610ff95750600481015460408701516001600160801b039182169116115b156110255760018101546001600160a01b0316606087015260048101546001600160801b031660408701525b5050808061103290614744565b915050610f43565b5063ffffffff818116602085810191825260008c815260079091526040908190208651815493519288015164ffffffffff1990941690151564ffffffff00191617610100929094169182029390931774ffffffffffffffffffffffffffffffff00000000001916650100000000006001600160801b03909316929092029190911782556060850151600190920180546001600160a01b0319166001600160a01b03909316929092179091558490036111ba57606083015160008a8152600660205260409020805460ff19166001179055891580156111215750600054600160901b900460ff165b15611167576001546001600160a01b031661113c818a61345b565b88546001600160a01b03909116600160201b02640100000000600160c01b03199091161788556111b8565b6111946001600160a01b0382161561117f578161118e565b60018901546001600160a01b03165b8961345b565b8754640100000000600160c01b031916600160201b6001600160a01b038316021788555b505b505050505050505050565b600080600054600160801b900460ff1660028111156111e6576111e661441e565b146112045760405163067fe19560e41b815260040160405180910390fd5b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85460ff1661124f57604051634d03b32360e11b815260040160405180910390fd5b60006001600160a01b0316600260008154811061126e5761126e614700565b6000918252602090912060059091020154600160201b90046001600160a01b03161461129b57600161129e565b60025b600080546001600160401b034216600160401b026fffffffffffffffff000000000000000019821681178355929350839260ff60801b191670ffffffffffffffffff00000000000000001990911617600160801b8360028111156113045761130461441e565b0217905560028111156113195761131961441e565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a290565b6005602052816000526040600020818154811061136157600080fd5b90600052602060002001600091509150505481565b6000611382600061349d565b905090565b6113948383836001611688565b505050565b600081815260076020908152604080832060059092528220805482546113ca90610100900463ffffffff168261475d565b95945050505050565b6060611382605460206134c0565b6113e9611ef9565b60006002600d5460ff1660028111156114045761140461441e565b0361142857506001600160a01b0381166000908152600b602052604090205461147e565b6001600d5460ff1660028111156114415761144161441e565b0361146557506001600160a01b03811660009081526003602052604090205461147e565b6040516301e28f7d60e21b815260040160405180910390fd5b6001600160a01b0382166000908152600c602052604090205460ff16611542576001600160a01b038281166000818152600c602052604090819020805460ff1916600117905551637eee288d60e01b81526004810191909152602481018390527f000000000000000000000000000000000000000000000000000000000000000090911690637eee288d90604401600060405180830381600087803b15801561152657600080fd5b505af115801561153a573d6000803e3d6000fd5b505050505050565b80600003611563576040516317bfe5f760e01b815260040160405180910390fd5b6001600160a01b038281166000818152600b602090815260408083208390556003909152808220919091555163f3fef3a360e01b81526004810191909152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063f3fef3a390604401600060405180830381600087803b1580156115f057600080fd5b505af1158015611604573d6000803e3d6000fd5b505050506000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611655576040519150601f19603f3d011682016040523d82523d6000602084013e61165a565b606091505b5050905080611394576040516383e6cc6b60e01b815260040160405180910390fd5b60006113826034613502565b60008054600160801b900460ff1660028111156116a7576116a761441e565b146116c55760405163067fe19560e41b815260040160405180910390fd5b6000600284815481106116da576116da614700565b60009182526020918290206040805160e0810182526005909302909101805463ffffffff811684526001600160a01b03600160201b90910481169484019490945260018101549093169082015260028201546001600160801b03908116606083015260038301546080830181905260049093015480821660a0840152600160801b90041660c0820152915085146117845760405163180a019960e11b815260040160405180910390fd5b60a0810151600083156001600160801b0383161760011b905060006117b1826001600160801b0316613522565b60ff1690508615806117ec57506117e97f0000000000000000000000000000000000000000000000000000000000000000600261472c565b81145b80156117f6575084155b15611814576040516329098def60e21b815260040160405180910390fd5b600054600160901b900460ff16801561182b575086155b156118495760405163075173a960e11b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081111561188a576040516356f57b2b60e01b815260040160405180910390fd5b6118b57f0000000000000000000000000000000000000000000000000000000000000000600161472c565b81036118c7576118c78688858861358e565b346118d183612845565b146118ef57604051638620aa1960e01b815260040160405180910390fd5b60006118fa886126b2565b90506001600160401b037f000000000000000000000000000000000000000000000000000000000000000081169082160361194857604051630ce0744560e21b815260040160405180910390fd5b600061197560017f000000000000000000000000000000000000000000000000000000000000000061475d565b8303611a98577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fd9190614774565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5e9190614791565b611a91907f00000000000000000000000000000000000000000000000000000000000000006001600160401b03166147aa565b9050611b29565b611ac360017f000000000000000000000000000000000000000000000000000000000000000061475d565b8303611afd57611a917f00000000000000000000000000000000000000000000000000000000000000006001600160401b031660026147d5565b507f00000000000000000000000000000000000000000000000000000000000000006001600160401b03165b611b5c817f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316614804565b6001600160401b0316611b75836001600160401b031690565b6001600160401b03161115611bba57611bb7817f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316614804565b91505b6000604083901b421760008a8152608087901b6001600160801b038d1617602052604081209192509060008181526004602052604090205490915060ff1615611c16576040516380497e3b60e01b815260040160405180910390fd5b60016004600083815260200190815260200160002060006101000a81548160ff02191690831515021790555060026040518060e001604052808d63ffffffff16815260200160006001600160a01b03168152602001336001600160a01b03168152602001346001600160801b031681526020018c8152602001886001600160801b03168152602001846001600160801b0316815250908060018154018082558091505060019003906000526020600020906005020160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160020160006101000a8154816001600160801b0302191690836001600160801b031602179055506080820151816003015560a08201518160040160006101000a8154816001600160801b0302191690836001600160801b0316021790555060c08201518160040160106101000a8154816001600160801b0302191690836001600160801b031602179055505050600560008c81526020019081526020016000206001600280549050611e0d919061475d565b81546001810183556000928352602080842090910191909155338252600b9052604081208054349290611e4190849061472c565b925050819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015611ea357600080fd5b505af1158015611eb7573d6000803e3d6000fd5b50506040513393508d92508e91507f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be90600090a4505050505050505050505050565b6002600d5460ff166002811115611f1257611f1261441e565b1480611f3457506001600d5460ff166002811115611f3257611f3261441e565b145b15611f3b57565b6000600d5460ff166002811115611f5457611f5461441e565b14611f72576040516301e28f7d60e21b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff4919061482c565b156120125760405163379a7ed960e01b815260040160405180910390fd5b600054600160401b90046001600160401b03166001600160401b031660000361204e57604051636082930560e11b815260040160405180910390fd5b604051630314d2b360e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630314d2b390602401602060405180830381865afa1580156120b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d9919061482c565b9050806120f957604051634851bd9b60e01b815260040160405180910390fd5b6040516317cf21a960e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906317cf21a990602401600060405180830381600087803b15801561215a57600080fd5b505af192505050801561216b575060015b506040516324b5ce0b60e11b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063496b9c1690602401602060405180830381865afa1580156121d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f7919061482c565b9050801561221157600d805460ff1916600117905561221f565b600d805460ff191660021790555b600d546040517f9908eaac0645df9d0704d06adc9e07337c951de2f06b5f2836151d48d5e4722f916122569160ff90911690614455565b60405180910390a15050565b6113948383836000611688565b600054600160881b900460ff16156122995760405162dc149f60e41b815260040160405180910390fd5b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d83ef2676040518163ffffffff1660e01b81526004016040805180830381865afa1580156122f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231d9190614849565b90925090508161234057604051633535e1d960e11b815260040160405180910390fd5b6040805180820190915282815260200181905260088290556009819055607a361461237e57604051639824bdab60e01b815260040160405180910390fd5b80612387612690565b116123b9576123946126a6565b60405163f40239db60e01b81526004016123b091815260200190565b60405180910390fd5b6040805160e08101825263ffffffff81526000602082015260029181016123de611376565b6001600160a01b03168152602001346001600160801b031681526020016124036126a6565b815260016020820152604001426001600160801b0390811690915282546001808201855560009485526020808620855160059094020180549186015163ffffffff9094166001600160c01b031990921691909117600160201b6001600160a01b0394851602178155604085015191810180546001600160a01b031916929093169190911790915560608301516002820180546fffffffffffffffffffffffffffffffff19169184169190911790556080830151600382015560a083015160c090930151928216600160801b9390921692909202176004909101558054600160881b60ff60881b199091161781553490600b906124fd611376565b6001600160a01b03166001600160a01b03168152602001908152602001600020600082825461252c919061472c565b925050819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561258e57600080fd5b505af11580156125a2573d6000803e3d6000fd5b50506000805467ffffffffffffffff1916426001600160401b0316179055505060408051630f27ce5f60e21b815290517f000000000000000000000000000000000000000000000000000000000000000063ffffffff1692507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691633c9f397c9160048083019260209291908290030181865afa158015612650573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612674919061486d565b600a805460ff191663ffffffff92909216929092141790555050565b60006113826054613502565b6000611382612690565b60006113826014613502565b600080600054600160801b900460ff1660028111156126d3576126d361441e565b146126f15760405163067fe19560e41b815260040160405180910390fd5b60006002838154811061270657612706614700565b600091825260208220600590910201805490925063ffffffff9081161461276c57815460028054909163ffffffff1690811061274457612744614700565b906000526020600020906005020160040160109054906101000a90046001600160801b031690505b600482015460009061279590600160801b90046001600160401b03165b6001600160401b031690565b6127a8906001600160401b03164261475d565b6127be612789846001600160801b031660401c90565b6001600160401b03166127d1919061472c565b90506001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166001600160401b0316816001600160401b03161161281b57806113ca565b7f000000000000000000000000000000000000000000000000000000000000000095945050505050565b60008061285a836001600160801b0316613522565b60ff1690507f00000000000000000000000000000000000000000000000000000000000000008111156128a0576040516356f57b2b60e01b815260040160405180910390fd5b642e90edd00062061a806311e1a30060006128bb83836148a9565b9050670de0b6b3a764000060006128f2827f00000000000000000000000000000000000000000000000000000000000000006148bd565b9050600061291061290b670de0b6b3a7640000866148bd565b613683565b9050600061291e8484613899565b9050600061292c83836138e8565b9050600061293982613916565b9050600061295882612953670de0b6b3a76400008f6148bd565b613a93565b905060006129668b836138e8565b9050612972818d6148bd565b9f9e505050505050505050505050505050565b6002818154811061299557600080fd5b60009182526020909120600590910201805460018201546002830154600384015460049094015463ffffffff84169550600160201b9093046001600160a01b03908116949216926001600160801b03918216929180821691600160801b90041687565b60006002600d5460ff166002811115612a1357612a1361441e565b03612a3457506001600160a01b03166000908152600b602052604090205490565b506001600160a01b031660009081526003602052604090205490565b60008054600160801b900460ff166002811115612a6f57612a6f61441e565b14612a8d5760405163067fe19560e41b815260040160405180910390fd5b600060028781548110612aa257612aa2614700565b6000918252602082206005919091020160048101549092506001600160801b0316908715821760011b9050612af87f0000000000000000000000000000000000000000000000000000000000000000600161472c565b612b0a826001600160801b0316613522565b60ff1614612b2b57604051630bea7bb360e31b815260040160405180910390fd5b6000808915612c0757612b7e7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061475d565b6001901b612b94846001600160801b0316613ac4565b6001600160801b0316612ba791906148dc565b15612bdb57612bd2612bc360016001600160801b0387166148f0565b865463ffffffff166000613ae2565b60030154612bfd565b7f00000000000000000000000000000000000000000000000000000000000000005b9150849050612c28565b60038501549150612c25612bc36001600160801b0386166001614910565b90505b600882901b60088a8a604051612c3f9291906146f0565b6040518091039020901b14612c675760405163696550ff60e01b815260040160405180910390fd5b6000612c728c613bab565b90506000612c81836003015490565b6040516370a6769960e11b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e14ced3290612cd5908f908f908f908f908a9060040161495b565b6020604051808303816000875af1158015612cf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d189190614791565b600485015491149150600090600290612d39906001600160801b0316613522565b612d4b896001600160801b0316613522565b612d559190614995565b612d5f91906149b8565b60ff161590508115158103612d875760405163fb4e40dd60e01b815260040160405180910390fd5b8754600160201b90046001600160a01b031615612db757604051639071e6af60e01b815260040160405180910390fd5b50508554640100000000600160c01b03191633600160201b02179095555050505050505050505050565b60008054600160801b900460ff166002811115612e0057612e0061441e565b14612e1e5760405163067fe19560e41b815260040160405180910390fd5b600080600080612e2d86613bda565b93509350935093506000612e4385858585613e49565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec99190614774565b905060018903612f73576001600160a01b0381166352f0f3ad8a84612eef610baf61167c565b6040516001600160e01b031960e086901b16815260048101939093526024830191909152604482015260206064820152608481018a905260a4015b6020604051808303816000875af1158015612f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6d9190614791565b506111ba565b60028903612f92576001600160a01b0381166352f0f3ad8a8489612eef565b60038903612fb1576001600160a01b0381166352f0f3ad8a8487612eef565b600489036130be576000612fee6001600160801b0385167f0000000000000000000000000000000000000000000000000000000000000000613ee8565b600954612ffb919061472c565b61300690600161472c565b9050613010612690565b81106130235761301e612690565b613025565b805b90506001600160a01b0382166352f0f3ad8b8560405160e084901b6001600160e01b03191681526004810192909252602482015260c084901b604482015260086064820152608481018b905260a4016020604051808303816000875af1158015613093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b79190614791565b50506111ba565b60058903613131576040516352f0f3ad60e01b8152600481018a9052602481018390527f000000000000000000000000000000000000000000000000000000000000000060c01b604482015260086064820152608481018890526001600160a01b038216906352f0f3ad9060a401612f2a565b604051600162ec819b60e01b0319815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006000606061317a6126a6565b91506131846113d3565b9050909192565b600081831161319a578161319c565b825b90505b92915050565b600081600001518260200151836040015184606001516040516020016131e4949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b6040805180820190915260008082526020820152815160000361323757604051635ab458fb60e01b815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b6060600080600061326585613f15565b9194509250905060018160018111156132805761328061441e565b1461329e576040516325ce355f60e11b815260040160405180910390fd5b84516132aa838561472c565b146132c857604051630b8aa6f760e31b815260040160405180910390fd5b604080516020808252610420820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816132df5790505093506000835b86518110156133cd576000806133526040518060400160405280858c60000151613336919061475d565b8152602001858c6020015161334b919061472c565b9052613f15565b50915091506040518060400160405280838361336e919061472c565b8152602001848b60200151613383919061472c565b81525088858151811061339857613398614700565b60209081029190910101526133ae60018561472c565b93506133ba818361472c565b6133c4908461472c565b9250505061330c565b50845250919392505050565b606060008060006133e985613f15565b9194509250905060008160018111156134045761340461441e565b14613422576040516307fe6cb960e21b815260040160405180910390fd5b61342c828461472c565b85511461344c57604051630b8aa6f760e31b815260040160405180910390fd5b6113ca8560200151848461420b565b60028101546001600160a01b038316600090815260036020526040812080546001600160801b039093169290919061349490849061472c565b90915550505050565b6000806134b23660011981013560f01c900390565b929092013560601c92915050565b606060006134d63660011981013560f01c900390565b905060405191508282528284820160208401378260208301016000815260208101604052505092915050565b6000806135173660011981013560f01c900390565b929092013592915050565b7e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b6001600160401b03831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b60006135a46001600160801b0384166001614910565b905060006135b482866001613ae2565b9050600086901a838061361657506135ed60027f00000000000000000000000000000000000000000000000000000000000000006148dc565b6004830154600290613607906001600160801b0316613522565b61361191906149b8565b60ff16145b156136555760ff811660011480613630575060ff81166002145b6136505760405163f40239db60e01b8152600481018890526024016123b0565b61367a565b60ff81161561367a5760405163f40239db60e01b8152600481018890526024016123b0565b50505050505050565b6001600160801b03811160071b81811c6001600160401b031060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c60ff1060031b17600082136136d857631615e6386000526004601cfd5b7ff8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffff6f8421084210842108cc6318c6db6d54be83831c1c601f161a1890811b609f90811c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d6c8c3f38e95a6b1ff2ab1c3b343619018302821d6d02384773bdf1ac5676facced60901901830290911d6cb9a025d814b29c212b8b1a07cd1901909102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a5506029190037d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b60007812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f218311670de0b6b3a7640000021582026138d657637c5f487d6000526004601cfd5b50670de0b6b3a7640000919091020490565b6000816000190483118202156139065763bac65e5b6000526004601cfd5b50670de0b6b3a764000091020490565b600068023f2fa8f6da5b9d2819821361392e57919050565b680755bf798b4a1bf1e5821261394c5763a37bfec96000526004601cfd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b600061319c670de0b6b3a764000083613aab86613683565b613ab591906149da565b613abf9190614a5f565b613916565b600080613ad083613522565b600160ff919091161b90920392915050565b60008082613b2257613b1d6001600160801b0386167f000000000000000000000000000000000000000000000000000000000000000061429f565b613b34565b613b34856001600160801b031661430e565b905060028481548110613b4957613b49614700565b906000526020600020906005020191505b60048201546001600160801b03828116911614613ba357815460028054909163ffffffff16908110613b8e57613b8e614700565b90600052602060002090600502019150613b5a565b509392505050565b6000806000806000613bbc86613bda565b9350935093509350613bd084848484613e49565b9695505050505050565b6000806000806000859050600060028281548110613bfa57613bfa614700565b6000918252602090912060059091020160048101549091507f000000000000000000000000000000000000000000000000000000000000000090613c46906001600160801b0316613522565b60ff1611613c67576040516359a5ae1160e11b815260040160405180910390fd5b6000815b60048301547f000000000000000000000000000000000000000000000000000000000000000090613ca4906001600160801b0316613522565b60ff169250821115613d1957825463ffffffff16613ce37f0000000000000000000000000000000000000000000000000000000000000000600161472c565b8303613ced578391505b60028181548110613d0057613d00614700565b9060005260206000209060050201935080945050613c6b565b600481810154908401546001600160801b0391821691166000816001600160801b0316613d5e613d52856001600160801b031660011c90565b6001600160801b031690565b6001600160801b03161490508015613df7576000613d84836001600160801b0316613ac4565b6001600160801b03161115613dd4576000613db4613dac60016001600160801b0386166148f0565b896001613ae2565b6003810154600490910154909c506001600160801b03169a50613dda9050565b6008549a505b600386015460048701549099506001600160801b03169750613e3b565b6000613e10613dac6001600160801b0385166001614910565b6003808901546004808b015492840154930154909e506001600160801b039182169d50919b50169850505b505050505050509193509193565b60006001600160801b03841615613ea45760408051602081018790526001600160801b038087169282019290925260608101859052908316608082015260a001604051602081830303815290604052805190602001206113ca565b8282604051602001613ec99291909182526001600160801b0316602082015260400190565b6040516020818303038152906040528051906020012095945050505050565b600080613ef484613522565b60ff1690508083036001841b600180831b0386831b17039250505092915050565b60008060008360000151600003613f3f57604051635ab458fb60e01b815260040160405180910390fd5b6020840151805160001a607f8111613f64576000600160009450945094505050614204565b60b78111613ffc576000613f7960808361475d565b905080876000015111613f9f576040516366c9448560e01b815260040160405180910390fd5b6001838101516001600160f81b0319169082148015613fcb5750600160ff1b6001600160f81b03198216105b15613fe95760405163babb01dd60e01b815260040160405180910390fd5b5060019550935060009250614204915050565b60bf81116140de57600061401160b78361475d565b905080876000015111614037576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b03191660008190036140685760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c603781116140975760405163babb01dd60e01b815260040160405180910390fd5b6140a1818461472c565b8951116140c1576040516366c9448560e01b815260040160405180910390fd5b6140cc83600161472c565b97509550600094506142049350505050565b60f7811161412a5760006140f360c08361475d565b905080876000015111614119576040516366c9448560e01b815260040160405180910390fd5b600195509350849250614204915050565b600061413760f78361475d565b90508087600001511161415d576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b031916600081900361418e5760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c603781116141bd5760405163babb01dd60e01b815260040160405180910390fd5b6141c7818461472c565b8951116141e7576040516366c9448560e01b815260040160405180910390fd5b6141f283600161472c565b97509550600194506142049350505050565b9193909250565b6060816001600160401b0381111561422557614225614667565b6040519080825280601f01601f19166020018201604052801561424f576020820181803683370190505b5090508115614298576000614264848661472c565b90506020820160005b8481101561428557828101518282015260200161426d565b84811115614294576000858301525b5050505b9392505050565b6000816142b4846001600160801b0316613522565b60ff16116142ca5763b34b5c226000526004601cfd5b6142d38361430e565b9050816142e8826001600160801b0316613522565b60ff161161319f5761319c6142fe83600161472c565b6001600160801b03831690614332565b6000811960018301168161432182613522565b60ff169390931c8015179392505050565b60008061433e84613522565b60ff169050808303600180821b0385821b179250505092915050565b60008083601f84011261436c57600080fd5b5081356001600160401b0381111561438357600080fd5b60208301915083602082850101111561439b57600080fd5b9250929050565b600080600083850360a08112156143b857600080fd5b60808112156143c657600080fd5b5083925060808401356001600160401b038111156143e357600080fd5b6143ef8682870161435a565b9497909650939450505050565b6000806040838503121561440f57600080fd5b50508035926020909101359150565b634e487b7160e01b600052602160045260246000fd5b6003811061445257634e487b7160e01b600052602160045260246000fd5b50565b6020810161446283614434565b91905290565b6001600160a01b038116811461445257600080fd5b60006020828403121561448f57600080fd5b813561429881614468565b6000806000606084860312156144af57600080fd5b505081359360208301359350604090920135919050565b6000815180845260005b818110156144ec576020818501810151868301820152016144d0565b818111156144fe576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061319c60208301846144c6565b60006020828403121561453857600080fd5b5035919050565b801515811461445257600080fd5b6000806000806080858703121561456357600080fd5b84359350602085013592506040850135915060608501356145838161453f565b939692955090935050565b6000602082840312156145a057600080fd5b81356001600160801b038116811461429857600080fd5b600080600080600080608087890312156145d057600080fd5b8635955060208701356145e28161453f565b945060408701356001600160401b03808211156145fe57600080fd5b61460a8a838b0161435a565b9096509450606089013591508082111561462357600080fd5b5061463089828a0161435a565b979a9699509497509295939492505050565b63ffffffff841681528260208201526060604082015260006113ca60608301846144c6565b634e487b7160e01b600052604160045260246000fd5b60006080828403121561468f57600080fd5b604051608081018181106001600160401b03821117156146bf57634e487b7160e01b600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561473f5761473f614716565b500190565b60006001820161475657614756614716565b5060010190565b60008282101561476f5761476f614716565b500390565b60006020828403121561478657600080fd5b815161429881614468565b6000602082840312156147a357600080fd5b5051919050565b60006001600160401b038083168185168083038211156147cc576147cc614716565b01949350505050565b60006001600160401b03808316818516818304811182151516156147fb576147fb614716565b02949350505050565b60006001600160401b038381169083168181101561482457614824614716565b039392505050565b60006020828403121561483e57600080fd5b81516142988161453f565b6000806040838503121561485c57600080fd5b505080516020909101519092909150565b60006020828403121561487f57600080fd5b815163ffffffff8116811461429857600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826148b8576148b8614893565b500490565b60008160001904831182151516156148d7576148d7614716565b500290565b6000826148eb576148eb614893565b500690565b60006001600160801b038381169083168181101561482457614824614716565b60006001600160801b038083168185168083038211156147cc576147cc614716565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061496f606083018789614932565b8281036020840152614982818688614932565b9150508260408301529695505050505050565b600060ff821660ff8416808210156149af576149af614716565b90039392505050565b600060ff8316806149cb576149cb614893565b8060ff84160691505092915050565b60006001600160ff1b0381841382841380821686840486111615614a0057614a00614716565b600160ff1b6000871282811687830589121615614a1f57614a1f614716565b60008712925087820587128484161615614a3b57614a3b614716565b87850587128184161615614a5157614a51614716565b505050929093029392505050565b600082614a6e57614a6e614893565b600160ff1b821460001984141615614a8857614a88614716565b50059056fea264697066735822122075c70c4154051a88cbed0ac70536a54db779f3d30e831b1083f705c1b425257864736f6c634300080f0033000000000000000000000000000000000000000000000000000000000000000003caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b0000000000000000000000000000000000000000000000000000000000000049000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000000000000000000049d4000000000000000000000000007babe08ee4d07dba236530183b24055535a7011000000000000000000000000d3683e4947a7769603ab6418ec02f000ce3cf30b0000000000000000000000002ff5cc82dbf333ea30d8ee462178ab17073153550000000000000000000000000000000000000000000000000000000000014a34", - "nonce": "0x0", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x8082b4730637f84bbd3a353e051f07d75c00a8bd27725d6453229a5af30592a2", - "transactionType": "CREATE", - "contractName": "PermissionedDisputeGame", - "contractAddress": "0x284a4cf8cb83d3377f8eadfff2414f2bfa68484b", - "function": null, - "arguments": [ - "(1, 0x03caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b, 73, 30, 10800, 302400, 0x07BABE08EE4D07dBA236530183B24055535A7011, 0x32cE910d9C6c8F78dc6779c1499aB05F281A054e, 0x2fF5cC82dBf333Ea30D8ee462178ab1707315355, 84532)", - "0x037637067c1DbE6d2430616d8f54Cb774Daa5999", - "0x8b8c52B04A38f10515C52670fcb23f3C4C44474F" - ], - "transaction": { - "from": "0x7f10098bd53519c739ca8a404afe127647d94774", - "gas": "0x55c89c", - "value": "0x0", - "input": "0x6102006040523480156200001257600080fd5b506040516200558c3803806200558c83398101604081905262000035916200053b565b82620000446001607e6200064a565b60ff16816040015111156200006c57604051633beff19960e11b815260040160405180910390fd5b60001981606001511480620000965750604081015160608201516200009390600162000670565b10155b15620000b55760405163e62ccf3960e01b815260040160405180910390fd5b600281606001511015620000dc5760405163e62ccf3960e01b815260040160405180910390fd5b6001600160401b0380168160c001516001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000129573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014f91906200068b565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b39190620006ab565b1115620001d35760405163b4e1243360e01b815260040160405180910390fd5b6000620001f882608001516001600160401b03166200048e60201b62000c4b1760201c565b6200020e906001600160401b03166002620006c5565b905060008260c001516001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000255573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027b91906200068b565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002df9190620006ab565b6200030284608001516001600160401b03166200048e60201b62000c4b1760201c565b6001600160401b031662000317919062000670565b905060006200033283836200049160201b6200236f1760201c565b90506001600160401b038111156200035d5760405163235dfb2b60e21b815260040160405180910390fd5b620003808460a001516001600160401b03166200048e60201b62000c4b1760201c565b6001600160401b0316816001600160401b03161115620003b35760405163235dfb2b60e21b815260040160405180910390fd5b63ffffffff8016620003da856000015163ffffffff166200048e60201b62000c4b1760201c565b63ffffffff1603620003ff5760405163073ed16760e31b815260040160405180910390fd5b5050815163ffffffff1661012090815260208301516080908152604084015160a0908152606085015160c0908152918501516001600160401b039081166101a052908501511660e0908152908401516001600160a01b03908116610100908152918501518116610140529084015181166101605292015161018052509182166101c052166101e05250620006e7565b90565b6000818311620004a25781620004a4565b825b9392505050565b60405161014081016001600160401b0381118282101715620004dd57634e487b7160e01b600052604160045260246000fd5b60405290565b805163ffffffff81168114620004f857600080fd5b919050565b80516001600160401b0381168114620004f857600080fd5b6001600160a01b03811681146200052b57600080fd5b50565b8051620004f88162000515565b60008060008385036101808112156200055357600080fd5b610140808212156200056457600080fd5b6200056e620004ab565b91506200057b86620004e3565b8252602086015160208301526040860151604083015260608601516060830152620005a960808701620004fd565b6080830152620005bc60a08701620004fd565b60a0830152620005cf60c087016200052e565b60c0830152620005e260e087016200052e565b60e0830152610100620005f78188016200052e565b8184015250610120808701518184015250819450620006188187016200052e565b935050506200062b61016085016200052e565b90509250925092565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff84168082101562000667576200066762000634565b90039392505050565b6000821982111562000686576200068662000634565b500190565b6000602082840312156200069e57600080fd5b8151620004a48162000515565b600060208284031215620006be57600080fd5b5051919050565b6000816000190483118215151615620006e257620006e262000634565b500290565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051614cca620008c2600039600081816105d9015281816117610152611f780152600081816108ad0152818161172f01528181611b330152611f4601526000818161071001528181612ae201528181612b4c0152612b7e015260008181610a5701526122c70152600081816106930152818161182d0152818161191f015281816119c701528181611a3d01528181612fa601526133050152600081816105660152818161157c0152818161164601528181612ec8015261323d0152600081816108e80152818161233301526132dc0152600081816105120152818161202d015281816129fb0152613a85015260008181610aaa01528181610e2f01528181611cc801528181611d080152818161298401528181612bad0152612c08015260008181610add015281816121ae015281816128410152818161290d01528181612b1d0152818161392e01528181613c1001528181613c6e01528181613cb9015281816142d601526143c5015260008181610b8401528181611d4c01528181611db9015281816128c9015281816129cf015281816138c7015261394f0152600081816107c501526139d20152614cca6000f3fe6080604052600436106103355760003560e01c806370872aa5116101ab578063c0d8bb74116100f7578063dabd396d11610095578063f8f43ff61161006f578063f8f43ff614610b31578063fa24f74314610b51578063fa315aa914610b75578063fe2bbeb214610ba857600080fd5b8063dabd396d14610a9b578063ec5e630814610ace578063eff0f59214610b0157600080fd5b8063cf09e0d0116100d1578063cf09e0d014610a08578063d5d44d8014610a28578063d6ae3cd514610a48578063d8cc1a3c14610a7b57600080fd5b8063c0d8bb7414610947578063c395e1ca14610974578063c6f0308c1461099457600080fd5b80638d450a9511610164578063a8e4fb901161013e578063a8e4fb901461089e578063bbdc02db146108d1578063bcef3b5514610912578063bd8da9561461092757600080fd5b80638d450a95146107b657806399735e32146107e9578063a445ece6146107fe57600080fd5b806370872aa514610747578063786b844b1461075c5780637b0f0adc146107715780638129fc1c146107845780638980e0cc1461078c5780638b85902b146107a157600080fd5b80633e3ac912116102855780635a5fa2d91161022357806360e27464116101fd57806360e27464146106cc5780636361506d146106ec5780636b6716c0146107015780636f0344091461073457600080fd5b80635a5fa2d9146106645780635c0cba3314610684578063609d3334146106b757600080fd5b8063529d6a8c1161025f578063529d6a8c1461059d578063534db0e2146105ca57806354fd4d50146105fd57806357da950e1461063457600080fd5b80633e3ac912146105365780633fc8cef314610557578063472777c61461058a57600080fd5b806325fc2ace116102f257806330dbe570116102cc57806330dbe5701461049c578063378dd48c146104d457806337b1b229146104ee5780633a7684631461050357600080fd5b806325fc2ace146104485780632810e1d6146104675780632ad69aeb1461047c57600080fd5b8063019351301461033a57806303c2924d1461035c57806319effeb41461037c578063200d2ed2146103c0578063222abf45146103ee578063250e69bd1461042e575b600080fd5b34801561034657600080fd5b5061035a6103553660046145a9565b610bd8565b005b34801561036857600080fd5b5061035a610377366004614603565b610db6565b34801561038857600080fd5b506000546103a390600160401b90046001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b3480156103cc57600080fd5b506000546103e190600160801b900460ff1681565b6040516103b7919061465c565b3480156103fa57600080fd5b5061041e610409366004614684565b600c6020526000908152604090205460ff1681565b60405190151581526020016103b7565b34801561043a57600080fd5b50600a5461041e9060ff1681565b34801561045457600080fd5b506008545b6040519081526020016103b7565b34801561047357600080fd5b506103e1611261565b34801561048857600080fd5b50610459610497366004614603565b6113e1565b3480156104a857600080fd5b506001546104bc906001600160a01b031681565b6040516001600160a01b0390911681526020016103b7565b3480156104e057600080fd5b50600d546103e19060ff1681565b3480156104fa57600080fd5b506104bc611412565b34801561050f57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104bc565b34801561054257600080fd5b5060005461041e90600160901b900460ff1681565b34801561056357600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104bc565b61035a6105983660046146a1565b611423565b3480156105a957600080fd5b506104596105b8366004614684565b60036020526000908152604090205481565b3480156105d657600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104bc565b34801561060957600080fd5b506040805180820190915260058152640312e382e360dc1b60208201525b6040516103b7919061471a565b34801561064057600080fd5b5060085460095461064f919082565b604080519283526020830191909152016103b7565b34801561067057600080fd5b5061045961067f36600461472d565b611435565b34801561069057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104bc565b3480156106c357600080fd5b5061062761146f565b3480156106d857600080fd5b5061035a6106e7366004614684565b61147d565b3480156106f857600080fd5b50610459611718565b34801561070d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006103a3565b61035a610742366004614754565b611724565b34801561075357600080fd5b50600954610459565b34801561076857600080fd5b5061035a6117b2565b61035a61077f3660046146a1565b611b1b565b61035a611b28565b34801561079857600080fd5b50600254610459565b3480156107ad57600080fd5b50610459611b7b565b3480156107c257600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610459565b3480156107f557600080fd5b50610459611b87565b34801561080a57600080fd5b5061086061081936600461472d565b6007602052600090815260409020805460019091015460ff821691610100810463ffffffff1691650100000000009091046001600160801b0316906001600160a01b031684565b60408051941515855263ffffffff90931660208501526001600160801b03909116918301919091526001600160a01b031660608201526080016103b7565b3480156108aa57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104bc565b3480156108dd57600080fd5b5060405163ffffffff7f00000000000000000000000000000000000000000000000000000000000000001681526020016103b7565b34801561091e57600080fd5b50610459611b91565b34801561093357600080fd5b506103a361094236600461472d565b611b9d565b34801561095357600080fd5b50610459610962366004614684565b600b6020526000908152604090205481565b34801561098057600080fd5b5061045961098f366004614795565b611d30565b3480156109a057600080fd5b506109b46109af36600461472d565b611e70565b6040805163ffffffff90981688526001600160a01b03968716602089015295909416948601949094526001600160801b039182166060860152608085015291821660a08401521660c082015260e0016103b7565b348015610a1457600080fd5b506000546103a3906001600160401b031681565b348015610a3457600080fd5b50610459610a43366004614684565b611ee3565b348015610a5457600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610459565b348015610a8757600080fd5b5061035a610a963660046147be565b611f3b565b348015610aa757600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006103a3565b348015610ada57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610459565b348015610b0d57600080fd5b5061041e610b1c36600461472d565b60046020526000908152604090205460ff1681565b348015610b3d57600080fd5b5061035a610b4c3660046146a1565b611fc5565b348015610b5d57600080fd5b50610b66612331565b6040516103b793929190614849565b348015610b8157600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610459565b348015610bb457600080fd5b5061041e610bc336600461472d565b60066020526000908152604090205460ff1681565b60008054600160801b900460ff166002811115610bf757610bf7614625565b14610c155760405163067fe19560e41b815260040160405180910390fd5b600054600160901b900460ff1615610c405760405163075173a960e11b815260040160405180910390fd5b610c4e610c4b611b91565b90565b610c65610c6036869003860186614884565b612389565b14610c8357604051639cc00b5b60e01b815260040160405180910390fd5b82606001358282604051610c989291906148f7565b604051809103902014610cbe5760405163d81d583b60e01b815260040160405180910390fd5b6000610d07610d0284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506123e592505050565b612439565b90506000610d2e82600881518110610d2157610d21614907565b60200260200101516125bd565b9050602081511115610d535760405163d81d583b60e01b815260040160405180910390fd5b602081810151825190910360031b1c610d6a611b7b565b8103610d8957604051630b8ed88360e41b815260040160405180910390fd5b5050600180546001600160a01b0319163317905550506000805460ff60901b1916600160901b1790555050565b60008054600160801b900460ff166002811115610dd557610dd5614625565b14610df35760405163067fe19560e41b815260040160405180910390fd5b600060028381548110610e0857610e08614907565b906000526020600020906005020190506000610e2384611b9d565b90506001600160401b037f000000000000000000000000000000000000000000000000000000000000000081169082161015610e725760405163f2440b5360e01b815260040160405180910390fd5b60008481526006602052604090205460ff1615610ea25760405163f1a9458160e01b815260040160405180910390fd5b6000848152600560205260409020805480158015610ebf57508515155b15610f21578354600160201b90046001600160a01b031660008115610ee45781610ef3565b60018601546001600160a01b03165b9050610eff818761263f565b505050600094855250506006602052505060409020805460ff19166001179055565b6000868152600760209081526040918290208251608081018452815460ff81161515808352610100820463ffffffff16948301949094526501000000000090046001600160801b031693810193909352600101546001600160a01b03166060830152610fa5576001600160801b036040820152600181526000869003610fa5578195505b600086826020015163ffffffff16610fbd9190614933565b90506000838211610fce5781610fd0565b835b602084015190915063ffffffff165b818110156110d6576000868281548110610ffb57610ffb614907565b6000918252602080832090910154808352600690915260409091205490915060ff1661103a57604051634d03b32360e11b815260040160405180910390fd5b60006002828154811061104f5761104f614907565b600091825260209091206005909102018054909150600160201b90046001600160a01b03161580156110955750600481015460408701516001600160801b039182169116115b156110c15760018101546001600160a01b0316606087015260048101546001600160801b031660408701525b505080806110ce9061494b565b915050610fdf565b5063ffffffff818116602085810191825260008c815260079091526040908190208651815493519288015164ffffffffff1990941690151564ffffffff00191617610100929094169182029390931774ffffffffffffffffffffffffffffffff00000000001916650100000000006001600160801b03909316929092029190911782556060850151600190920180546001600160a01b0319166001600160a01b039093169290921790915584900361125657606083015160008a8152600660205260409020805460ff19166001179055891580156111bd5750600054600160901b900460ff165b15611203576001546001600160a01b03166111d8818a61263f565b88546001600160a01b03909116600160201b02640100000000600160c01b0319909116178855611254565b6112306001600160a01b0382161561121b578161122a565b60018901546001600160a01b03165b8961263f565b8754640100000000600160c01b031916600160201b6001600160a01b038316021788555b505b505050505050505050565b600080600054600160801b900460ff16600281111561128257611282614625565b146112a05760405163067fe19560e41b815260040160405180910390fd5b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85460ff166112eb57604051634d03b32360e11b815260040160405180910390fd5b60006001600160a01b0316600260008154811061130a5761130a614907565b6000918252602090912060059091020154600160201b90046001600160a01b03161461133757600161133a565b60025b600080546001600160401b034216600160401b026fffffffffffffffff000000000000000019821681178355929350839260ff60801b191670ffffffffffffffffff00000000000000001990911617600160801b8360028111156113a0576113a0614625565b0217905560028111156113b5576113b5614625565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a290565b600560205281600052604060002081815481106113fd57600080fd5b90600052602060002001600091509150505481565b600061141e6000612681565b905090565b6114308383836001611724565b505050565b6000818152600760209081526040808320600590925282208054825461146690610100900463ffffffff1682614964565b95945050505050565b606061141e605460206126a4565b6114856117b2565b60006002600d5460ff1660028111156114a0576114a0614625565b036114c457506001600160a01b0381166000908152600b602052604090205461151a565b6001600d5460ff1660028111156114dd576114dd614625565b0361150157506001600160a01b03811660009081526003602052604090205461151a565b6040516301e28f7d60e21b815260040160405180910390fd5b6001600160a01b0382166000908152600c602052604090205460ff166115de576001600160a01b038281166000818152600c602052604090819020805460ff1916600117905551637eee288d60e01b81526004810191909152602481018390527f000000000000000000000000000000000000000000000000000000000000000090911690637eee288d90604401600060405180830381600087803b1580156115c257600080fd5b505af11580156115d6573d6000803e3d6000fd5b505050505050565b806000036115ff576040516317bfe5f760e01b815260040160405180910390fd5b6001600160a01b038281166000818152600b602090815260408083208390556003909152808220919091555163f3fef3a360e01b81526004810191909152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063f3fef3a390604401600060405180830381600087803b15801561168c57600080fd5b505af11580156116a0573d6000803e3d6000fd5b505050506000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146116f1576040519150601f19603f3d011682016040523d82523d6000602084013e6116f6565b606091505b5050905080611430576040516383e6cc6b60e01b815260040160405180910390fd5b600061141e60346126e6565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806117835750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6117a0576040516369c3779f60e11b815260040160405180910390fd5b6117ac84848484612706565b50505050565b6002600d5460ff1660028111156117cb576117cb614625565b14806117ed57506001600d5460ff1660028111156117eb576117eb614625565b145b156117f457565b6000600d5460ff16600281111561180d5761180d614625565b1461182b576040516301e28f7d60e21b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ad919061497b565b156118cb5760405163379a7ed960e01b815260040160405180910390fd5b600054600160401b90046001600160401b03166001600160401b031660000361190757604051636082930560e11b815260040160405180910390fd5b604051630314d2b360e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630314d2b390602401602060405180830381865afa15801561196e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611992919061497b565b9050806119b257604051634851bd9b60e01b815260040160405180910390fd5b6040516317cf21a960e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906317cf21a990602401600060405180830381600087803b158015611a1357600080fd5b505af1925050508015611a24575060015b506040516324b5ce0b60e11b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063496b9c1690602401602060405180830381865afa158015611a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab0919061497b565b90508015611aca57600d805460ff19166001179055611ad8565b600d805460ff191660021790555b600d546040517f9908eaac0645df9d0704d06adc9e07337c951de2f06b5f2836151d48d5e4722f91611b0f9160ff9091169061465c565b60405180910390a15050565b6114308383836000611724565b326001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b71576040516369c3779f60e11b815260040160405180910390fd5b611b79612f77565b565b600061141e60546126e6565b600061141e611b7b565b600061141e60146126e6565b600080600054600160801b900460ff166002811115611bbe57611bbe614625565b14611bdc5760405163067fe19560e41b815260040160405180910390fd5b600060028381548110611bf157611bf1614907565b600091825260208220600590910201805490925063ffffffff90811614611c5757815460028054909163ffffffff16908110611c2f57611c2f614907565b906000526020600020906005020160040160109054906101000a90046001600160801b031690505b6004820154600090611c8090600160801b90046001600160401b03165b6001600160401b031690565b611c93906001600160401b031642614964565b611ca9611c74846001600160801b031660401c90565b6001600160401b0316611cbc9190614933565b90506001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166001600160401b0316816001600160401b031611611d065780611466565b7f000000000000000000000000000000000000000000000000000000000000000095945050505050565b600080611d45836001600160801b0316613398565b60ff1690507f0000000000000000000000000000000000000000000000000000000000000000811115611d8b576040516356f57b2b60e01b815260040160405180910390fd5b642e90edd00062061a806311e1a3006000611da683836149ae565b9050670de0b6b3a76400006000611ddd827f00000000000000000000000000000000000000000000000000000000000000006149c2565b90506000611dfb611df6670de0b6b3a7640000866149c2565b613404565b90506000611e09848461361a565b90506000611e178383613669565b90506000611e2482613697565b90506000611e4382611e3e670de0b6b3a76400008f6149c2565b613814565b90506000611e518b83613669565b9050611e5d818d6149c2565b9f9e505050505050505050505050505050565b60028181548110611e8057600080fd5b60009182526020909120600590910201805460018201546002830154600384015460049094015463ffffffff84169550600160201b9093046001600160a01b03908116949216926001600160801b03918216929180821691600160801b90041687565b60006002600d5460ff166002811115611efe57611efe614625565b03611f1f57506001600160a01b03166000908152600b602052604090205490565b506001600160a01b031660009081526003602052604090205490565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611f9a5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b611fb7576040516369c3779f60e11b815260040160405180910390fd5b6115d6868686868686613845565b60008054600160801b900460ff166002811115611fe457611fe4614625565b146120025760405163067fe19560e41b815260040160405180910390fd5b60008060008061201186613bd6565b9350935093509350600061202785858585613e45565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ad91906149e1565b905060018903612157576001600160a01b0381166352f0f3ad8a846120d3610c4b611718565b6040516001600160e01b031960e086901b16815260048101939093526024830191909152604482015260206064820152608481018a905260a4015b6020604051808303816000875af115801561212d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215191906149fe565b50611256565b60028903612176576001600160a01b0381166352f0f3ad8a84896120d3565b60038903612195576001600160a01b0381166352f0f3ad8a84876120d3565b600489036122a25760006121d26001600160801b0385167f0000000000000000000000000000000000000000000000000000000000000000613ee4565b6009546121df9190614933565b6121ea906001614933565b90506121f4611b7b565b811061220757612202611b7b565b612209565b805b90506001600160a01b0382166352f0f3ad8b8560405160e084901b6001600160e01b03191681526004810192909252602482015260c084901b604482015260086064820152608481018b905260a4016020604051808303816000875af1158015612277573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229b91906149fe565b5050611256565b60058903612315576040516352f0f3ad60e01b8152600481018a9052602481018390527f000000000000000000000000000000000000000000000000000000000000000060c01b604482015260086064820152608481018890526001600160a01b038216906352f0f3ad9060a40161210e565b604051600162ec819b60e01b0319815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006000606061235e611b91565b915061236861146f565b9050909192565b600081831161237e5781612380565b825b90505b92915050565b600081600001518260200151836040015184606001516040516020016123c8949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b6040805180820190915260008082526020820152815160000361241b57604051635ab458fb60e01b815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b6060600080600061244985613f11565b91945092509050600181600181111561246457612464614625565b14612482576040516325ce355f60e11b815260040160405180910390fd5b845161248e8385614933565b146124ac57604051630b8aa6f760e31b815260040160405180910390fd5b604080516020808252610420820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816124c35790505093506000835b86518110156125b1576000806125366040518060400160405280858c6000015161251a9190614964565b8152602001858c6020015161252f9190614933565b9052613f11565b5091509150604051806040016040528083836125529190614933565b8152602001848b602001516125679190614933565b81525088858151811061257c5761257c614907565b6020908102919091010152612592600185614933565b935061259e8183614933565b6125a89084614933565b925050506124f0565b50845250919392505050565b606060008060006125cd85613f11565b9194509250905060008160018111156125e8576125e8614625565b14612606576040516307fe6cb960e21b815260040160405180910390fd5b6126108284614933565b85511461263057604051630b8aa6f760e31b815260040160405180910390fd5b61146685602001518484614207565b60028101546001600160a01b038316600090815260036020526040812080546001600160801b0390931692909190612678908490614933565b90915550505050565b6000806126963660011981013560f01c900390565b929092013560601c92915050565b606060006126ba3660011981013560f01c900390565b905060405191508282528284820160208401378260208301016000815260208101604052505092915050565b6000806126fb3660011981013560f01c900390565b929092013592915050565b60008054600160801b900460ff16600281111561272557612725614625565b146127435760405163067fe19560e41b815260040160405180910390fd5b60006002848154811061275857612758614907565b60009182526020918290206040805160e0810182526005909302909101805463ffffffff811684526001600160a01b03600160201b90910481169484019490945260018101549093169082015260028201546001600160801b03908116606083015260038301546080830181905260049093015480821660a0840152600160801b90041660c0820152915085146128025760405163180a019960e11b815260040160405180910390fd5b60a0810151600083156001600160801b0383161760011b9050600061282f826001600160801b0316613398565b60ff16905086158061286a57506128677f00000000000000000000000000000000000000000000000000000000000000006002614933565b81145b8015612874575084155b15612892576040516329098def60e21b815260040160405180910390fd5b600054600160901b900460ff1680156128a9575086155b156128c75760405163075173a960e11b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000811115612908576040516356f57b2b60e01b815260040160405180910390fd5b6129337f00000000000000000000000000000000000000000000000000000000000000006001614933565b8103612945576129458688858861429b565b3461294f83611d30565b1461296d57604051638620aa1960e01b815260040160405180910390fd5b600061297888611b9d565b90506001600160401b037f00000000000000000000000000000000000000000000000000000000000000008116908216036129c657604051630ce0744560e21b815260040160405180910390fd5b60006129f360017f0000000000000000000000000000000000000000000000000000000000000000614964565b8303612b16577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7b91906149e1565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612adc91906149fe565b612b0f907f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316614a17565b9050612ba7565b612b4160017f0000000000000000000000000000000000000000000000000000000000000000614964565b8303612b7b57612b0f7f00000000000000000000000000000000000000000000000000000000000000006001600160401b03166002614a42565b507f00000000000000000000000000000000000000000000000000000000000000006001600160401b03165b612bda817f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316614a71565b6001600160401b0316612bf3836001600160401b031690565b6001600160401b03161115612c3857612c35817f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316614a71565b91505b6000604083901b421760008a8152608087901b6001600160801b038d1617602052604081209192509060008181526004602052604090205490915060ff1615612c94576040516380497e3b60e01b815260040160405180910390fd5b60016004600083815260200190815260200160002060006101000a81548160ff02191690831515021790555060026040518060e001604052808d63ffffffff16815260200160006001600160a01b03168152602001336001600160a01b03168152602001346001600160801b031681526020018c8152602001886001600160801b03168152602001846001600160801b0316815250908060018154018082558091505060019003906000526020600020906005020160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160020160006101000a8154816001600160801b0302191690836001600160801b031602179055506080820151816003015560a08201518160040160006101000a8154816001600160801b0302191690836001600160801b0316021790555060c08201518160040160106101000a8154816001600160801b0302191690836001600160801b031602179055505050600560008c81526020019081526020016000206001600280549050612e8b9190614964565b81546001810183556000928352602080842090910191909155338252600b9052604081208054349290612ebf908490614933565b925050819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015612f2157600080fd5b505af1158015612f35573d6000803e3d6000fd5b50506040513393508d92508e91507f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be90600090a4505050505050505050505050565b600054600160881b900460ff1615612fa15760405162dc149f60e41b815260040160405180910390fd5b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d83ef2676040518163ffffffff1660e01b81526004016040805180830381865afa158015613001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130259190614a99565b90925090508161304857604051633535e1d960e11b815260040160405180910390fd5b6040805180820190915282815260200181905260088290556009819055607a361461308657604051639824bdab60e01b815260040160405180910390fd5b8061308f611b7b565b116130c15761309c611b91565b60405163f40239db60e01b81526004016130b891815260200190565b60405180910390fd5b6040805160e08101825263ffffffff81526000602082015260029181016130e6611412565b6001600160a01b03168152602001346001600160801b0316815260200161310b611b91565b815260016020820152604001426001600160801b0390811690915282546001808201855560009485526020808620855160059094020180549186015163ffffffff9094166001600160c01b031990921691909117600160201b6001600160a01b0394851602178155604085015191810180546001600160a01b031916929093169190911790915560608301516002820180546fffffffffffffffffffffffffffffffff19169184169190911790556080830151600382015560a083015160c090930151928216600160801b9390921692909202176004909101558054600160881b60ff60881b199091161781553490600b90613205611412565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546132349190614933565b925050819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561329657600080fd5b505af11580156132aa573d6000803e3d6000fd5b50506000805467ffffffffffffffff1916426001600160401b0316179055505060408051630f27ce5f60e21b815290517f000000000000000000000000000000000000000000000000000000000000000063ffffffff1692507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691633c9f397c9160048083019260209291908290030181865afa158015613358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061337c9190614abd565b600a805460ff191663ffffffff92909216929092141790555050565b7e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b6001600160401b03831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b6001600160801b03811160071b81811c6001600160401b031060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c60ff1060031b176000821361345957631615e6386000526004601cfd5b7ff8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffff6f8421084210842108cc6318c6db6d54be83831c1c601f161a1890811b609f90811c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d6c8c3f38e95a6b1ff2ab1c3b343619018302821d6d02384773bdf1ac5676facced60901901830290911d6cb9a025d814b29c212b8b1a07cd1901909102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a5506029190037d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b60007812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f218311670de0b6b3a76400000215820261365757637c5f487d6000526004601cfd5b50670de0b6b3a7640000919091020490565b6000816000190483118202156136875763bac65e5b6000526004601cfd5b50670de0b6b3a764000091020490565b600068023f2fa8f6da5b9d281982136136af57919050565b680755bf798b4a1bf1e582126136cd5763a37bfec96000526004601cfd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6000612380670de0b6b3a76400008361382c86613404565b6138369190614ae3565b6138409190614b68565b613697565b60008054600160801b900460ff16600281111561386457613864614625565b146138825760405163067fe19560e41b815260040160405180910390fd5b60006002878154811061389757613897614907565b6000918252602082206005919091020160048101549092506001600160801b0316908715821760011b90506138ed7f00000000000000000000000000000000000000000000000000000000000000006001614933565b6138ff826001600160801b0316613398565b60ff161461392057604051630bea7bb360e31b815260040160405180910390fd5b60008089156139fc576139737f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614964565b6001901b613989846001600160801b0316614390565b6001600160801b031661399c9190614b96565b156139d0576139c76139b860016001600160801b038716614baa565b865463ffffffff1660006143ae565b600301546139f2565b7f00000000000000000000000000000000000000000000000000000000000000005b9150849050613a1d565b60038501549150613a1a6139b86001600160801b0386166001614bca565b90505b600882901b60088a8a604051613a349291906148f7565b6040518091039020901b14613a5c5760405163696550ff60e01b815260040160405180910390fd5b6000613a678c614477565b90506000613a76836003015490565b6040516370a6769960e11b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e14ced3290613aca908f908f908f908f908a90600401614c15565b6020604051808303816000875af1158015613ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b0d91906149fe565b600485015491149150600090600290613b2e906001600160801b0316613398565b613b40896001600160801b0316613398565b613b4a9190614c4f565b613b549190614c72565b60ff161590508115158103613b7c5760405163fb4e40dd60e01b815260040160405180910390fd5b8754600160201b90046001600160a01b031615613bac57604051639071e6af60e01b815260040160405180910390fd5b50508554640100000000600160c01b03191633600160201b02179095555050505050505050505050565b6000806000806000859050600060028281548110613bf657613bf6614907565b6000918252602090912060059091020160048101549091507f000000000000000000000000000000000000000000000000000000000000000090613c42906001600160801b0316613398565b60ff1611613c63576040516359a5ae1160e11b815260040160405180910390fd5b6000815b60048301547f000000000000000000000000000000000000000000000000000000000000000090613ca0906001600160801b0316613398565b60ff169250821115613d1557825463ffffffff16613cdf7f00000000000000000000000000000000000000000000000000000000000000006001614933565b8303613ce9578391505b60028181548110613cfc57613cfc614907565b9060005260206000209060050201935080945050613c67565b600481810154908401546001600160801b0391821691166000816001600160801b0316613d5a613d4e856001600160801b031660011c90565b6001600160801b031690565b6001600160801b03161490508015613df3576000613d80836001600160801b0316614390565b6001600160801b03161115613dd0576000613db0613da860016001600160801b038616614baa565b8960016143ae565b6003810154600490910154909c506001600160801b03169a50613dd69050565b6008549a505b600386015460048701549099506001600160801b03169750613e37565b6000613e0c613da86001600160801b0385166001614bca565b6003808901546004808b015492840154930154909e506001600160801b039182169d50919b50169850505b505050505050509193509193565b60006001600160801b03841615613ea05760408051602081018790526001600160801b038087169282019290925260608101859052908316608082015260a00160405160208183030381529060405280519060200120611466565b8282604051602001613ec59291909182526001600160801b0316602082015260400190565b6040516020818303038152906040528051906020012095945050505050565b600080613ef084613398565b60ff1690508083036001841b600180831b0386831b17039250505092915050565b60008060008360000151600003613f3b57604051635ab458fb60e01b815260040160405180910390fd5b6020840151805160001a607f8111613f60576000600160009450945094505050614200565b60b78111613ff8576000613f75608083614964565b905080876000015111613f9b576040516366c9448560e01b815260040160405180910390fd5b6001838101516001600160f81b0319169082148015613fc75750600160ff1b6001600160f81b03198216105b15613fe55760405163babb01dd60e01b815260040160405180910390fd5b5060019550935060009250614200915050565b60bf81116140da57600061400d60b783614964565b905080876000015111614033576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b03191660008190036140645760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c603781116140935760405163babb01dd60e01b815260040160405180910390fd5b61409d8184614933565b8951116140bd576040516366c9448560e01b815260040160405180910390fd5b6140c8836001614933565b97509550600094506142009350505050565b60f781116141265760006140ef60c083614964565b905080876000015111614115576040516366c9448560e01b815260040160405180910390fd5b600195509350849250614200915050565b600061413360f783614964565b905080876000015111614159576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b031916600081900361418a5760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c603781116141b95760405163babb01dd60e01b815260040160405180910390fd5b6141c38184614933565b8951116141e3576040516366c9448560e01b815260040160405180910390fd5b6141ee836001614933565b97509550600194506142009350505050565b9193909250565b6060816001600160401b038111156142215761422161486e565b6040519080825280601f01601f19166020018201604052801561424b576020820181803683370190505b50905081156142945760006142608486614933565b90506020820160005b84811015614281578281015182820152602001614269565b84811115614290576000858301525b5050505b9392505050565b60006142b16001600160801b0384166001614bca565b905060006142c1828660016143ae565b9050600086901a838061432357506142fa60027f0000000000000000000000000000000000000000000000000000000000000000614b96565b6004830154600290614314906001600160801b0316613398565b61431e9190614c72565b60ff16145b156143625760ff81166001148061433d575060ff81166002145b61435d5760405163f40239db60e01b8152600481018890526024016130b8565b614387565b60ff8116156143875760405163f40239db60e01b8152600481018890526024016130b8565b50505050505050565b60008061439c83613398565b600160ff919091161b90920392915050565b600080826143ee576143e96001600160801b0386167f00000000000000000000000000000000000000000000000000000000000000006144a6565b614400565b614400856001600160801b0316614515565b90506002848154811061441557614415614907565b906000526020600020906005020191505b60048201546001600160801b0382811691161461446f57815460028054909163ffffffff1690811061445a5761445a614907565b90600052602060002090600502019150614426565b509392505050565b600080600080600061448886613bd6565b935093509350935061449c84848484613e45565b9695505050505050565b6000816144bb846001600160801b0316613398565b60ff16116144d15763b34b5c226000526004601cfd5b6144da83614515565b9050816144ef826001600160801b0316613398565b60ff161161238357612380614505836001614933565b6001600160801b03831690614539565b6000811960018301168161452882613398565b60ff169390931c8015179392505050565b60008061454584613398565b60ff169050808303600180821b0385821b179250505092915050565b60008083601f84011261457357600080fd5b5081356001600160401b0381111561458a57600080fd5b6020830191508360208285010111156145a257600080fd5b9250929050565b600080600083850360a08112156145bf57600080fd5b60808112156145cd57600080fd5b5083925060808401356001600160401b038111156145ea57600080fd5b6145f686828701614561565b9497909650939450505050565b6000806040838503121561461657600080fd5b50508035926020909101359150565b634e487b7160e01b600052602160045260246000fd5b6003811061465957634e487b7160e01b600052602160045260246000fd5b50565b602081016146698361463b565b91905290565b6001600160a01b038116811461465957600080fd5b60006020828403121561469657600080fd5b81356142948161466f565b6000806000606084860312156146b657600080fd5b505081359360208301359350604090920135919050565b6000815180845260005b818110156146f3576020818501810151868301820152016146d7565b81811115614705576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061238060208301846146cd565b60006020828403121561473f57600080fd5b5035919050565b801515811461465957600080fd5b6000806000806080858703121561476a57600080fd5b843593506020850135925060408501359150606085013561478a81614746565b939692955090935050565b6000602082840312156147a757600080fd5b81356001600160801b038116811461429457600080fd5b600080600080600080608087890312156147d757600080fd5b8635955060208701356147e981614746565b945060408701356001600160401b038082111561480557600080fd5b6148118a838b01614561565b9096509450606089013591508082111561482a57600080fd5b5061483789828a01614561565b979a9699509497509295939492505050565b63ffffffff8416815282602082015260606040820152600061146660608301846146cd565b634e487b7160e01b600052604160045260246000fd5b60006080828403121561489657600080fd5b604051608081018181106001600160401b03821117156148c657634e487b7160e01b600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156149465761494661491d565b500190565b60006001820161495d5761495d61491d565b5060010190565b6000828210156149765761497661491d565b500390565b60006020828403121561498d57600080fd5b815161429481614746565b634e487b7160e01b600052601260045260246000fd5b6000826149bd576149bd614998565b500490565b60008160001904831182151516156149dc576149dc61491d565b500290565b6000602082840312156149f357600080fd5b81516142948161466f565b600060208284031215614a1057600080fd5b5051919050565b60006001600160401b03808316818516808303821115614a3957614a3961491d565b01949350505050565b60006001600160401b0380831681851681830481118215151615614a6857614a6861491d565b02949350505050565b60006001600160401b0383811690831681811015614a9157614a9161491d565b039392505050565b60008060408385031215614aac57600080fd5b505080516020909101519092909150565b600060208284031215614acf57600080fd5b815163ffffffff8116811461429457600080fd5b60006001600160ff1b0381841382841380821686840486111615614b0957614b0961491d565b600160ff1b6000871282811687830589121615614b2857614b2861491d565b60008712925087820587128484161615614b4457614b4461491d565b87850587128184161615614b5a57614b5a61491d565b505050929093029392505050565b600082614b7757614b77614998565b600160ff1b821460001984141615614b9157614b9161491d565b500590565b600082614ba557614ba5614998565b500690565b60006001600160801b0383811690831681811015614a9157614a9161491d565b60006001600160801b03808316818516808303821115614a3957614a3961491d565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b606081526000614c29606083018789614bec565b8281036020840152614c3c818688614bec565b9150508260408301529695505050505050565b600060ff821660ff841680821015614c6957614c6961491d565b90039392505050565b600060ff831680614c8557614c85614998565b8060ff8416069150509291505056fea2646970667358221220860c23a83884cc08df9069441e34e5ac65668559b49819edea26545ff6110aec64736f6c634300080f0033000000000000000000000000000000000000000000000000000000000000000103caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b0000000000000000000000000000000000000000000000000000000000000049000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000000000000000000049d4000000000000000000000000007babe08ee4d07dba236530183b24055535a701100000000000000000000000032ce910d9c6c8f78dc6779c1499ab05f281a054e0000000000000000000000002ff5cc82dbf333ea30d8ee462178ab17073153550000000000000000000000000000000000000000000000000000000000014a34000000000000000000000000037637067c1dbe6d2430616d8f54cb774daa59990000000000000000000000008b8c52b04a38f10515c52670fcb23f3c4c44474f", - "nonce": "0x1", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x14e569f", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x1acc71fe9278c821be87cb7adaee7253dda2736c6c2a6e2c2752af52531f5195", - "transactionIndex": "0x2f", - "blockHash": "0xcb4766b74ac62ad6b573e6f9ddb1b0e9562f28731a06a4978c98159cb2e3cd24", - "blockNumber": "0x923212", - "gasUsed": "0x4043be", - "effectiveGasPrice": "0xf424e", - "from": "0x7f10098bd53519c739ca8a404afe127647d94774", - "to": null, - "contractAddress": "0xf0b64b080548b1f688356b9cf880076c2145f79a" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x1905366", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x8082b4730637f84bbd3a353e051f07d75c00a8bd27725d6453229a5af30592a2", - "transactionIndex": "0x30", - "blockHash": "0xcb4766b74ac62ad6b573e6f9ddb1b0e9562f28731a06a4978c98159cb2e3cd24", - "blockNumber": "0x923212", - "gasUsed": "0x41fcc7", - "effectiveGasPrice": "0xf424e", - "from": "0x7f10098bd53519c739ca8a404afe127647d94774", - "to": null, - "contractAddress": "0x284a4cf8cb83d3377f8eadfff2414f2bfa68484b" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1762539301055, - "chain": 11155111, - "commit": "4b699c9" -} \ No newline at end of file From c44a5a9cb83d6f3e9e2b8ae63ad7a79b2b742ddb Mon Sep 17 00:00:00 2001 From: Joby Thundil Date: Fri, 14 Nov 2025 14:05:31 -0500 Subject: [PATCH 12/23] rm use of test superchain config --- sepolia/2025-11-07-upgrade-fault-proofs/.env | 3 --- .../UpgradeWithOpSmartContractManager.sol | 26 ------------------- .../validations/cb-sc-signer.json | 17 +----------- .../validations/cb-signer.json | 17 +----------- .../validations/op-signer.json | 17 +----------- 5 files changed, 3 insertions(+), 77 deletions(-) diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/.env b/sepolia/2025-11-07-upgrade-fault-proofs/.env index b331effc..e60ed546 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/.env +++ b/sepolia/2025-11-07-upgrade-fault-proofs/.env @@ -10,9 +10,6 @@ SYSTEM_CONFIG=0xf272670eb55e895584501d564AfEB048bEd26194 OP_CONTRACT_MANAGER=0xc69e4c24db479191676611a25d977203c3bdca62 PROXY_ADMIN=0x0389E59Aa0a41E4A413Ae70f0008e76CAA34b1F3 -# temporary until OP updates superchainconfig for overridding purposes -TEST_SUPERCHAIN_CONFIG=0x133C4e1C452E14196a93e60FaE0d8059143BBE57 - OWNER_SAFE=0x0fe884546476dDd290eC46318785046ef68a0BA9 CB_SIGNER_SAFE_ADDR=0x646132A1667ca7aD00d36616AFBA1A28116C770A CB_NESTED_SAFE_ADDR=0x5dfEB066334B67355A15dc9b67317fD2a2e1f77f diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol index 091e2feb..f34e3258 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol +++ b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol @@ -23,19 +23,12 @@ contract UpgradeWithOpSmartContractManager is MultisigScript { IProxyAdmin public immutable PROXY_ADMIN; Claim immutable CANNON_ABSOLUTE_PRESTATE; - // Only for simulation purposes before superchain config upgrade - SuperchainConfig testSuperchainConfig; - constructor() { OWNER_SAFE = vm.envAddress("OWNER_SAFE"); PROXY_ADMIN = IProxyAdmin(vm.envAddress("PROXY_ADMIN")); _SYSTEM_CONFIG = ISystemConfig(vm.envAddress("SYSTEM_CONFIG")); OP_CONTRACT_MANAGER = IOPContractsManager(vm.envAddress("OP_CONTRACT_MANAGER")); CANNON_ABSOLUTE_PRESTATE = Claim.wrap(vm.envBytes32("ABSOLUTE_PRESTATE")); - - // This is temporary to get the simulation to pass. OP should upgrade the - // superchainconfig to the correct version before this task is executed. - testSuperchainConfig = SuperchainConfig(vm.envAddress("TEST_SUPERCHAIN_CONFIG")); } function _postCheck(Vm.AccountAccess[] memory, Simulation.Payload memory) internal view override { @@ -113,23 +106,4 @@ contract UpgradeWithOpSmartContractManager is MultisigScript { function _useMulticall() internal pure override returns (bool) { return false; } - - function _simulationOverrides() - internal - view - virtual - override - returns (Simulation.StateOverride[] memory overrides_) - { - overrides_ = new Simulation.StateOverride[](1); - // Override the `superchainConfig` state variable in the SystemConfig to point to our test one - // with the correct version. - Simulation.StorageOverride memory storageOverride = Simulation.StorageOverride( - bytes32(0x000000000000000000000000000000000000000000000000000000000000006c), - bytes32(uint256(uint160(address(testSuperchainConfig)))) - ); - Simulation.StorageOverride[] memory storageOverrides = new Simulation.StorageOverride[](1); - storageOverrides[0] = storageOverride; - overrides_[0] = Simulation.StateOverride(address(_SYSTEM_CONFIG), storageOverrides); - } } diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-sc-signer.json b/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-sc-signer.json index d92cbfc5..f07795b1 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-sc-signer.json +++ b/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-sc-signer.json @@ -1,9 +1,5 @@ { - "taskName": "U17 - Jovian Contracts Upgrade", - "scriptName": "UpgradeWithOpSmartContractManager", - "signature": "sign(address[])", - "sender": "0x7f10098bd53519c739ca8a404afe127647d94774", - "args": "[0x6AF0674791925f767060Dd52f7fB20984E8639d8,0x646132A1667ca7aD00d36616AFBA1A28116C770A]", + "cmd": "forge script --rpc-url https://ethereum-full-sepolia-k8s-dev.cbhq.net UpgradeWithOpSmartContractManager --sig sign(address[]) [0x6AF0674791925f767060Dd52f7fB20984E8639d8,0x646132A1667ca7aD00d36616AFBA1A28116C770A] --sender 0x7f10098bd53519c739ca8a404afe127647d94774", "ledgerId": 1, "rpcUrl": "https://ethereum-full-sepolia-k8s-dev.cbhq.net", "expectedDomainAndMessageHashes": { @@ -44,17 +40,6 @@ "description": "Simulates an approval from msg.sender in order for the task simulation to succeed." } ] - }, - { - "name": "System Config - Sepolia", - "address": "0xf272670eb55e895584501d564afeb048bed26194", - "overrides": [ - { - "key": "0x000000000000000000000000000000000000000000000000000000000000006c", - "value": "0x000000000000000000000000133c4e1c452e14196a93e60fae0d8059143bbe57", - "description": "Temprorary override of SuperChainConfig to v2.4.0" - } - ] } ], "stateChanges": [ diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-signer.json b/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-signer.json index 674f5d63..98aa7e66 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-signer.json +++ b/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-signer.json @@ -1,9 +1,5 @@ { - "taskName": "U17 - Jovian Contracts Upgrade", - "scriptName": "UpgradeWithOpSmartContractManager", - "signature": "sign(address[])", - "sender": "0x7f10098bd53519c739ca8a404afe127647d94774", - "args": "[0x5dfEB066334B67355A15dc9b67317fD2a2e1f77f,0x646132A1667ca7aD00d36616AFBA1A28116C770A]", + "cmd": "forge script --rpc-url https://ethereum-full-sepolia-k8s-dev.cbhq.net UpgradeWithOpSmartContractManager --sig sign(address[]) [0x5dfEB066334B67355A15dc9b67317fD2a2e1f77f,0x646132A1667ca7aD00d36616AFBA1A28116C770A] --sender 0x7f10098bd53519c739ca8a404afe127647d94774", "ledgerId": 1, "rpcUrl": "https://ethereum-full-sepolia-k8s-dev.cbhq.net", "expectedDomainAndMessageHashes": { @@ -49,17 +45,6 @@ "description": "Override the threshold to 1 so the transaction simulation can occur." } ] - }, - { - "name": "System Config - Sepolia", - "address": "0xf272670eb55e895584501d564afeb048bed26194", - "overrides": [ - { - "key": "0x000000000000000000000000000000000000000000000000000000000000006c", - "value": "0x000000000000000000000000133c4e1c452e14196a93e60fae0d8059143bbe57", - "description": "Temprorary override of SuperChainConfig to v2.4.0" - } - ] } ], "stateChanges": [ diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/validations/op-signer.json b/sepolia/2025-11-07-upgrade-fault-proofs/validations/op-signer.json index 5ad7f083..fd18a57b 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/validations/op-signer.json +++ b/sepolia/2025-11-07-upgrade-fault-proofs/validations/op-signer.json @@ -1,9 +1,5 @@ { - "taskName": "U17 - Jovian Contracts Upgrade", - "scriptName": "UpgradeWithOpSmartContractManager", - "signature": "sign(address[])", - "sender": "0x0CF2F86C3338993ce10F74d6f4B095712c7efe26", - "args": "[0x6AF0674791925f767060Dd52f7fB20984E8639d8]", + "cmd": "forge script --rpc-url https://ethereum-full-sepolia-k8s-dev.cbhq.net UpgradeWithOpSmartContractManager --sig sign(address[]) [0x6AF0674791925f767060Dd52f7fB20984E8639d8] --sender 0x0CF2F86C3338993ce10F74d6f4B095712c7efe26", "ledgerId": 1, "rpcUrl": "https://ethereum-full-sepolia-k8s-dev.cbhq.net", "expectedDomainAndMessageHashes": { @@ -33,17 +29,6 @@ "description": "Simulates an approval from msg.sender in order for the task simulation to succeed." } ] - }, - { - "name": "System Config - Sepolia", - "address": "0xf272670eb55e895584501d564afeb048bed26194", - "overrides": [ - { - "key": "0x000000000000000000000000000000000000000000000000000000000000006c", - "value": "0x000000000000000000000000133c4e1c452e14196a93e60fae0d8059143bbe57", - "description": "Temprorary override of SuperChainConfig to v2.4.0" - } - ] } ], "stateChanges": [ From 4209ea7a9d7af0c14d7b4ae2b39a85bf2cd1972e Mon Sep 17 00:00:00 2001 From: Joby Thundil Date: Fri, 14 Nov 2025 14:07:31 -0500 Subject: [PATCH 13/23] rm redundant check --- .../script/UpgradeWithOpSmartContractManager.sol | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol index f34e3258..f7300132 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol +++ b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol @@ -63,7 +63,6 @@ contract UpgradeWithOpSmartContractManager is MultisigScript { ); require(PROXY_ADMIN.getProxyImplementation(opChainAddrs.l1StandardBridge) == impls.l1StandardBridgeImpl, "06"); require(PROXY_ADMIN.getProxyImplementation(opChainAddrs.l1ERC721Bridge) == impls.l1ERC721BridgeImpl, "07"); - require(PROXY_ADMIN.getProxyImplementation(opChainAddrs.l1ERC721Bridge) == impls.l1ERC721BridgeImpl, "08"); IDisputeGameFactory dfg = IDisputeGameFactory(_SYSTEM_CONFIG.disputeGameFactory()); IFaultDisputeGame fdg = IFaultDisputeGame(address(dfg.gameImpls(GameTypes.CANNON))); @@ -72,12 +71,12 @@ contract UpgradeWithOpSmartContractManager is MultisigScript { Claim pfdgAbsolutePrestate = pfdg.absolutePrestate(); // verify FaultDisputeGame and PermissionedDisputeGame absolute prestate - require(Claim.unwrap(fdgAbsolutePrestate) == Claim.unwrap(CANNON_ABSOLUTE_PRESTATE), "09"); - require(Claim.unwrap(pfdgAbsolutePrestate) == Claim.unwrap(CANNON_ABSOLUTE_PRESTATE), "10"); + require(Claim.unwrap(fdgAbsolutePrestate) == Claim.unwrap(CANNON_ABSOLUTE_PRESTATE), "08"); + require(Claim.unwrap(pfdgAbsolutePrestate) == Claim.unwrap(CANNON_ABSOLUTE_PRESTATE), "09"); // verify FaultDisputeGame and PermissionedDisputeGame absolute vm - require(address(fdg.vm()) == impls.mipsImpl, "11"); - require(address(pfdg.vm()) == impls.mipsImpl, "12"); + require(address(fdg.vm()) == impls.mipsImpl, "10"); + require(address(pfdg.vm()) == impls.mipsImpl, "11"); } function _buildCalls() internal view override returns (IMulticall3.Call3Value[] memory) { From 96166ba83e764295631cff03448e4cce321e950a Mon Sep 17 00:00:00 2001 From: Joby Thundil Date: Fri, 14 Nov 2025 14:08:19 -0500 Subject: [PATCH 14/23] fix comment --- .../script/UpgradeWithOpSmartContractManager.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol index f7300132..f7e5cdff 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol +++ b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol @@ -74,7 +74,7 @@ contract UpgradeWithOpSmartContractManager is MultisigScript { require(Claim.unwrap(fdgAbsolutePrestate) == Claim.unwrap(CANNON_ABSOLUTE_PRESTATE), "08"); require(Claim.unwrap(pfdgAbsolutePrestate) == Claim.unwrap(CANNON_ABSOLUTE_PRESTATE), "09"); - // verify FaultDisputeGame and PermissionedDisputeGame absolute vm + // verify FaultDisputeGame and PermissionedDisputeGame vm require(address(fdg.vm()) == impls.mipsImpl, "10"); require(address(pfdg.vm()) == impls.mipsImpl, "11"); } From 9d926d9d3ffb8ccdf8559c6594342f3988539a72 Mon Sep 17 00:00:00 2001 From: Joby Thundil Date: Mon, 17 Nov 2025 17:38:00 -0500 Subject: [PATCH 15/23] pr feedback --- .../FACILITATORS.md | 2 -- .../2025-11-07-upgrade-fault-proofs/Makefile | 24 +++++++++---------- .../2025-11-07-upgrade-fault-proofs/README.md | 9 ++++--- 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/FACILITATORS.md b/sepolia/2025-11-07-upgrade-fault-proofs/FACILITATORS.md index 67d7a467..5c0c8f2e 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/FACILITATORS.md +++ b/sepolia/2025-11-07-upgrade-fault-proofs/FACILITATORS.md @@ -37,8 +37,6 @@ SIGNATURES=AAAABBBBCCCC make approve-cb SIGNATURES=AAAABBBBCCCC make approve-cb-sc ``` -Optimism facilitator: - ```bash SIGNATURES=AAAABBBBCCCC make approve-op ``` diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/Makefile b/sepolia/2025-11-07-upgrade-fault-proofs/Makefile index bf3f6374..bc267ba2 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/Makefile +++ b/sepolia/2025-11-07-upgrade-fault-proofs/Makefile @@ -8,13 +8,7 @@ ifndef LEDGER_ACCOUNT override LEDGER_ACCOUNT = 1 endif -.PHONY: deploy -deploy: - forge script --rpc-url $(L1_RPC_URL) DeployDisputeGames \ - --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" --broadcast -vvvv - - -# Mainnet Commands +# Sepolia Commands # OWNER_SAFE/ # ├── CB_SIGNER_SAFE_ADDR/ @@ -35,8 +29,8 @@ gen-validation-cb: checkout-signer-tool run-script-cb run-script-cb: cd $(SIGNER_TOOL_PATH); \ npm ci; \ - bun run scripts/genValidationFile.ts --rpc-url $(L1_RPC_URL) \ - --workdir .. --forge-cmd 'forge script --rpc-url $(L1_RPC_URL) \ + bun run scripts/genValidationFile.ts --rpc-url $(RPC_URL) \ + --workdir .. --forge-cmd 'forge script --rpc-url $(RPC_URL) \ $(SCRIPT_NAME) --sig "sign(address[])" "[$(CB_NESTED_SAFE_ADDR), $(CB_SIGNER_SAFE_ADDR)]" --sender 0x7f10098bd53519c739ca8a404afe127647d94774' --out ../validations/cb-signer.json; @@ -47,8 +41,8 @@ gen-validation-cb-sc: checkout-signer-tool run-script-cb-sc run-script-cb-sc: cd $(SIGNER_TOOL_PATH); \ npm ci; \ - bun run scripts/genValidationFile.ts --rpc-url $(L1_RPC_URL) \ - --workdir .. --forge-cmd 'forge script --rpc-url $(L1_RPC_URL) \ + bun run scripts/genValidationFile.ts --rpc-url $(RPC_URL) \ + --workdir .. --forge-cmd 'forge script --rpc-url $(RPC_URL) \ $(SCRIPT_NAME) --sig "sign(address[])" "[$(CB_SC_SAFE_ADDR), $(CB_SIGNER_SAFE_ADDR)]" --sender 0x7f10098bd53519c739ca8a404afe127647d94774' --out ../validations/cb-sc-signer.json; .PHONY: gen-validation-op @@ -58,8 +52,8 @@ gen-validation-op: checkout-signer-tool run-script-op run-script-op: cd $(SIGNER_TOOL_PATH); \ npm ci; \ - bun run scripts/genValidationFile.ts --rpc-url $(L1_RPC_URL) \ - --workdir .. --forge-cmd 'forge script --rpc-url $(L1_RPC_URL) \ + bun run scripts/genValidationFile.ts --rpc-url $(RPC_URL) \ + --workdir .. --forge-cmd 'forge script --rpc-url $(RPC_URL) \ $(SCRIPT_NAME) --sig "sign(address[])" "[$(OP_SIGNER_SAFE_ADDR)]" --sender 0x0CF2F86C3338993ce10F74d6f4B095712c7efe26' --out ../validations/op-signer.json; @@ -72,6 +66,10 @@ approve-cb: approve-cb-sc: $(call MULTISIG_APPROVE,$(CB_SC_SAFE_ADDR) $(CB_SIGNER_SAFE_ADDR),$(SIGNATURES)) +.PHONY: approve-cb-coordinator +approve-cb-coordinator: + $(call MULTISIG_APPROVE,$(CB_SIGNER_SAFE_ADDR),0x) + .PHONY: approve-op approve-op: $(call MULTISIG_APPROVE,$(OP_SIGNER_SAFE_ADDR),$(SIGNATURES)) diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/README.md b/sepolia/2025-11-07-upgrade-fault-proofs/README.md index 2942a5c8..fc6cd6b9 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/README.md +++ b/sepolia/2025-11-07-upgrade-fault-proofs/README.md @@ -1,10 +1,12 @@ -# Upgrade Contracts using OP Contracts Manager +# U17 Jovian Upgrade Status: PENDING ## Description -This task contains a single script that executes the `upgrade` function of the specified OP Contracts Manager. +The Jovian hardfork is a proposed network upgrade for OP Stack chains, which brings several improvements to the way rollup fees are calculated as well as performing a maintenance update to the fault proof virtual machine. [More Details](https://docs.optimism.io/notices/upgrade-17). + +This script executes the `upgrade` function of the OP Contracts Manager to upgrade all relevant contracts. ## Procedure @@ -47,6 +49,7 @@ make sign-task ### 3. Open the UI at [http://localhost:3000](http://localhost:3000) -Be sure to select the correct task user from the list of available users to sign (**not** the "rollback" user). +Be sure to select the correct task user from the list of available users to sign. +After completion, the signer tool can be closed by using Ctrl + c ### 4. Send signature to facilitator From ea0817479b102c26169a784bea31503591091f8b Mon Sep 17 00:00:00 2001 From: Joby Thundil Date: Mon, 17 Nov 2025 17:56:39 -0500 Subject: [PATCH 16/23] use delegate call --- sepolia/2025-11-07-upgrade-fault-proofs/.env | 2 +- .../script/UpgradeWithOpSmartContractManager.sol | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/.env b/sepolia/2025-11-07-upgrade-fault-proofs/.env index e60ed546..37538135 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/.env +++ b/sepolia/2025-11-07-upgrade-fault-proofs/.env @@ -1,5 +1,5 @@ OP_COMMIT=d09c836f818c73ae139f60b717654c4e53712743 -BASE_CONTRACTS_COMMIT=de19b64b38784d62606c48891d886289f2ce2e67 +BASE_CONTRACTS_COMMIT=51788f920e368e72c63cef24a5e1ea0f6562d9a5 ABSOLUTE_PRESTATE=0x03caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol index f7e5cdff..8f46a8b8 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol +++ b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol @@ -102,7 +102,7 @@ contract UpgradeWithOpSmartContractManager is MultisigScript { return OWNER_SAFE; } - function _useMulticall() internal pure override returns (bool) { - return false; + function _useDelegateCall() internal pure override returns (bool) { + return true; } } From dca337fb2fa731c605bd89e6de46dab836398bb0 Mon Sep 17 00:00:00 2001 From: Joby Thundil Date: Mon, 17 Nov 2025 18:41:12 -0500 Subject: [PATCH 17/23] update validations --- .../validations/cb-sc-signer.json | 11 ++++++----- .../validations/cb-signer.json | 15 ++++++++------- .../validations/op-signer.json | 11 ++++++----- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-sc-signer.json b/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-sc-signer.json index f07795b1..c73498dc 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-sc-signer.json +++ b/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-sc-signer.json @@ -5,7 +5,7 @@ "expectedDomainAndMessageHashes": { "address": "0x0fe884546476dDd290eC46318785046ef68a0BA9", "domainHash": "0x6f25427e79742a1eb82c103e2bf43c85fc59509274ec258ad6ed841c4a0048aa", - "messageHash": "0xb27022be270aecd3b178089275018d5ae3d2bf5816a8edcca2ea5f192c85fa5f" + "messageHash": "0x738cb5c63b889ddbbab5ae7e0c4cdc182dae7f4ff1716678cd31e4b2b9620925" }, "stateOverrides": [ { @@ -35,7 +35,7 @@ "address": "0x6af0674791925f767060dd52f7fb20984e8639d8", "overrides": [ { - "key": "0x1dbf25b2f964cd98c5401f22339f9fa5815d0cfcb3da53e4414e5d16f5ec096b", + "key": "0xdc3041261ef345875deee5bbf656467f61ae2f0260ba59b96dff236b329efe6e", "value": "0x0000000000000000000000000000000000000000000000000000000000000001", "description": "Simulates an approval from msg.sender in order for the task simulation to succeed." } @@ -55,7 +55,7 @@ "allowDifference": false }, { - "key": "0xc75b371a1ae964cc781240f39c8650e713bac3098792a24e4d0aa18d48263485", + "key": "0x132b6656c4b15beb5c2e41642af758bc0a8f119e85c129268964c2082734d0fa", "before": "0x0000000000000000000000000000000000000000000000000000000000000000", "after": "0x0000000000000000000000000000000000000000000000000000000000000001", "description": "Increment approvedHashes", @@ -101,7 +101,7 @@ "allowDifference": false }, { - "key": "0xbcb5b7da83ea6bc13376cf72e234ae02c6869248995a284b5ec545eadb659887", + "key": "0x97386419018d8c4d4f497136fc297808ef32cc774fab08b062e9d2cebcc7b0e8", "before": "0x0000000000000000000000000000000000000000000000000000000000000000", "after": "0x0000000000000000000000000000000000000000000000000000000000000001", "description": "Increment approvedHashes", @@ -201,5 +201,6 @@ } ] } - ] + ], + "balanceChanges": [] } diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-signer.json b/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-signer.json index 98aa7e66..de4a5761 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-signer.json +++ b/sepolia/2025-11-07-upgrade-fault-proofs/validations/cb-signer.json @@ -5,7 +5,7 @@ "expectedDomainAndMessageHashes": { "address": "0x0fe884546476dDd290eC46318785046ef68a0BA9", "domainHash": "0x0127bbb910536860a0757a9c0ffcdf9e4452220f566ed83af1f27f9e833f0e23", - "messageHash": "0xb61b2eb4bb59bcd705aaf172c6caa1dd622cf5bd35fbaa67d0d0d9bd9a0c0898" + "messageHash": "0xf499c3a3e9535241bfe7ff1a97239b3b2042e314614c6c1869b56a56d878ec3d" }, "stateOverrides": [ { @@ -29,7 +29,7 @@ "description": "Override the threshold to 1 so the transaction simulation can occur." }, { - "key": "0x612ab2e1430587c769e82b224707a5e70a756d03bb8938d3515bdc72c4adb07e", + "key": "0x779df92d36af0820632e0ba83514bd3cb1ef99f5b9e496659c11d24ab3d95b54", "value": "0x0000000000000000000000000000000000000000000000000000000000000001", "description": "Simulates an approval from msg.sender in order for the task simulation to succeed." } @@ -60,7 +60,7 @@ "allowDifference": false }, { - "key": "0xc75b371a1ae964cc781240f39c8650e713bac3098792a24e4d0aa18d48263485", + "key": "0x132b6656c4b15beb5c2e41642af758bc0a8f119e85c129268964c2082734d0fa", "before": "0x0000000000000000000000000000000000000000000000000000000000000000", "after": "0x0000000000000000000000000000000000000000000000000000000000000001", "description": "Increment approvedHashes", @@ -100,8 +100,8 @@ "changes": [ { "key": "0x0000000000000000000000000000000000000000000000000000000000000005", - "before": "0x000000000000000000000000000000000000000000000000000000000000000a", - "after": "0x000000000000000000000000000000000000000000000000000000000000000b", + "before": "0x000000000000000000000000000000000000000000000000000000000000000b", + "after": "0x000000000000000000000000000000000000000000000000000000000000000c", "description": "Increments the nonce", "allowDifference": false } @@ -119,7 +119,7 @@ "allowDifference": false }, { - "key": "0xea1ce1e66d025647b83425bfcfca0f8665836bce6a3d8fd50541909d7c6c9bdf", + "key": "0x2f5145ced07ce269c6c4db5520937e13f39750363e1135f1fc5ed25c961f8a1b", "before": "0x0000000000000000000000000000000000000000000000000000000000000000", "after": "0x0000000000000000000000000000000000000000000000000000000000000001", "description": "Increment approvedHashes", @@ -206,5 +206,6 @@ } ] } - ] + ], + "balanceChanges": [] } diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/validations/op-signer.json b/sepolia/2025-11-07-upgrade-fault-proofs/validations/op-signer.json index fd18a57b..9b6f590f 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/validations/op-signer.json +++ b/sepolia/2025-11-07-upgrade-fault-proofs/validations/op-signer.json @@ -1,11 +1,11 @@ { "cmd": "forge script --rpc-url https://ethereum-full-sepolia-k8s-dev.cbhq.net UpgradeWithOpSmartContractManager --sig sign(address[]) [0x6AF0674791925f767060Dd52f7fB20984E8639d8] --sender 0x0CF2F86C3338993ce10F74d6f4B095712c7efe26", - "ledgerId": 1, + "ledgerId": 0, "rpcUrl": "https://ethereum-full-sepolia-k8s-dev.cbhq.net", "expectedDomainAndMessageHashes": { "address": "0x0fe884546476dDd290eC46318785046ef68a0BA9", "domainHash": "0x6f25427e79742a1eb82c103e2bf43c85fc59509274ec258ad6ed841c4a0048aa", - "messageHash": "0x89a1d4884ca278f7ea9cd1d010572686b6431a11e3f8f699c85ca974d1cdbe02" + "messageHash": "0x63012f7123ec444c2b91c33f750ad17c662f82ac30075dc2cf4be163c7b07422" }, "stateOverrides": [ { @@ -24,7 +24,7 @@ "address": "0x6af0674791925f767060dd52f7fb20984e8639d8", "overrides": [ { - "key": "0x6b6236770e801b703e7312f8dc240dea8002c5bc6a2454508de44672e2a57a35", + "key": "0x9a696c577589e96cb3fbc50421a9a814cd6f236c810f32af46de8a295e1cbbc9", "value": "0x0000000000000000000000000000000000000000000000000000000000000001", "description": "Simulates an approval from msg.sender in order for the task simulation to succeed." } @@ -44,7 +44,7 @@ "allowDifference": false }, { - "key": "0x533e011ba3bc153180d605f18ea46bf16af7f44c55a3896267c3b536cfc7e13c", + "key": "0xd838681ca403c84d3748b96661bee5375d8a7d01999bc2ab6f1395c0c80e9500", "before": "0x0000000000000000000000000000000000000000000000000000000000000000", "after": "0x0000000000000000000000000000000000000000000000000000000000000001", "description": "Increment approvedHashes", @@ -170,5 +170,6 @@ } ] } - ] + ], + "balanceChanges": [] } From 733245c38617f3b51f9750d1f5e089e5cbcbd228 Mon Sep 17 00:00:00 2001 From: Joby Thundil Date: Mon, 17 Nov 2025 18:46:31 -0500 Subject: [PATCH 18/23] fix linting --- .../script/UpgradeWithOpSmartContractManager.sol | 1 - 1 file changed, 1 deletion(-) diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol index 8f46a8b8..972b692b 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol +++ b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol @@ -9,7 +9,6 @@ import { IDisputeGameFactory, IFaultDisputeGame } from "@eth-optimism-bedrock/interfaces/L1/IOPContractsManager.sol"; -import {SuperchainConfig} from "@eth-optimism-bedrock/src/L1/SuperchainConfig.sol"; import {MultisigScript} from "@base-contracts/script/universal/MultisigScript.sol"; import {IMulticall3} from "forge-std/interfaces/IMulticall3.sol"; import {Vm} from "forge-std/Vm.sol"; From 3db52cd01f6e2807e67accc768614e21f9287e27 Mon Sep 17 00:00:00 2001 From: Joby Thundil Date: Mon, 17 Nov 2025 19:34:33 -0500 Subject: [PATCH 19/23] pr feedback --- .../UpgradeWithOpSmartContractManager.sol | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol index 972b692b..873c073f 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol +++ b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol @@ -22,12 +22,21 @@ contract UpgradeWithOpSmartContractManager is MultisigScript { IProxyAdmin public immutable PROXY_ADMIN; Claim immutable CANNON_ABSOLUTE_PRESTATE; + address oldDelayedWethPermissioned; + address oldDelayedWethPermissionless; + constructor() { OWNER_SAFE = vm.envAddress("OWNER_SAFE"); PROXY_ADMIN = IProxyAdmin(vm.envAddress("PROXY_ADMIN")); _SYSTEM_CONFIG = ISystemConfig(vm.envAddress("SYSTEM_CONFIG")); OP_CONTRACT_MANAGER = IOPContractsManager(vm.envAddress("OP_CONTRACT_MANAGER")); CANNON_ABSOLUTE_PRESTATE = Claim.wrap(vm.envBytes32("ABSOLUTE_PRESTATE")); + + IDisputeGameFactory dfg = IDisputeGameFactory(_SYSTEM_CONFIG.disputeGameFactory()); + IFaultDisputeGame fdg = IFaultDisputeGame(address(dfg.gameImpls(GameTypes.CANNON))); + IFaultDisputeGame pfdg = IFaultDisputeGame(address(dfg.gameImpls(GameTypes.PERMISSIONED_CANNON))); + oldDelayedWethPermissioned = address(pfdg.weth()); + oldDelayedWethPermissionless = address(fdg.weth()); } function _postCheck(Vm.AccountAccess[] memory, Simulation.Payload memory) internal view override { @@ -49,19 +58,14 @@ contract UpgradeWithOpSmartContractManager is MultisigScript { == impls.disputeGameFactoryImpl, "03" ); - require( - PROXY_ADMIN.getProxyImplementation(address(_SYSTEM_CONFIG.disputeGameFactory())) - == impls.disputeGameFactoryImpl, - "04" - ); ISystemConfig.Addresses memory opChainAddrs = _SYSTEM_CONFIG.getAddresses(); require( PROXY_ADMIN.getProxyImplementation(opChainAddrs.l1CrossDomainMessenger) == impls.l1CrossDomainMessengerImpl, - "05" + "04" ); - require(PROXY_ADMIN.getProxyImplementation(opChainAddrs.l1StandardBridge) == impls.l1StandardBridgeImpl, "06"); - require(PROXY_ADMIN.getProxyImplementation(opChainAddrs.l1ERC721Bridge) == impls.l1ERC721BridgeImpl, "07"); + require(PROXY_ADMIN.getProxyImplementation(opChainAddrs.l1StandardBridge) == impls.l1StandardBridgeImpl, "05"); + require(PROXY_ADMIN.getProxyImplementation(opChainAddrs.l1ERC721Bridge) == impls.l1ERC721BridgeImpl, "06"); IDisputeGameFactory dfg = IDisputeGameFactory(_SYSTEM_CONFIG.disputeGameFactory()); IFaultDisputeGame fdg = IFaultDisputeGame(address(dfg.gameImpls(GameTypes.CANNON))); @@ -70,12 +74,17 @@ contract UpgradeWithOpSmartContractManager is MultisigScript { Claim pfdgAbsolutePrestate = pfdg.absolutePrestate(); // verify FaultDisputeGame and PermissionedDisputeGame absolute prestate - require(Claim.unwrap(fdgAbsolutePrestate) == Claim.unwrap(CANNON_ABSOLUTE_PRESTATE), "08"); - require(Claim.unwrap(pfdgAbsolutePrestate) == Claim.unwrap(CANNON_ABSOLUTE_PRESTATE), "09"); + require(Claim.unwrap(fdgAbsolutePrestate) == Claim.unwrap(CANNON_ABSOLUTE_PRESTATE), "07"); + require(Claim.unwrap(pfdgAbsolutePrestate) == Claim.unwrap(CANNON_ABSOLUTE_PRESTATE), "08"); // verify FaultDisputeGame and PermissionedDisputeGame vm - require(address(fdg.vm()) == impls.mipsImpl, "10"); - require(address(pfdg.vm()) == impls.mipsImpl, "11"); + require(address(fdg.vm()) == impls.mipsImpl, "09"); + require(address(pfdg.vm()) == impls.mipsImpl, "10"); + + // verify DelayedWETH doesn't change + // https://github.com/ethereum-optimism/optimism/blob/d09c836f818c73ae139f60b717654c4e53712743/packages/contracts-bedrock/src/L1/OPContractsManager.sol#L877 + require(address(fdg.weth()) == oldDelayedWethPermissionless, "11"); + require(address(pfdg.weth()) == oldDelayedWethPermissioned, "12"); } function _buildCalls() internal view override returns (IMulticall3.Call3Value[] memory) { From d2ce272f38910505ccb7cf06d0ca0e1939cea9d7 Mon Sep 17 00:00:00 2001 From: Joby Thundil Date: Mon, 17 Nov 2025 21:34:43 -0500 Subject: [PATCH 20/23] fix ledgerid and mark as ready to sign --- sepolia/2025-11-07-upgrade-fault-proofs/README.md | 2 +- .../2025-11-07-upgrade-fault-proofs/validations/op-signer.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/README.md b/sepolia/2025-11-07-upgrade-fault-proofs/README.md index fc6cd6b9..07f811ca 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/README.md +++ b/sepolia/2025-11-07-upgrade-fault-proofs/README.md @@ -1,6 +1,6 @@ # U17 Jovian Upgrade -Status: PENDING +Status: READY TO SIGN ## Description diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/validations/op-signer.json b/sepolia/2025-11-07-upgrade-fault-proofs/validations/op-signer.json index 9b6f590f..e299f968 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/validations/op-signer.json +++ b/sepolia/2025-11-07-upgrade-fault-proofs/validations/op-signer.json @@ -1,6 +1,6 @@ { "cmd": "forge script --rpc-url https://ethereum-full-sepolia-k8s-dev.cbhq.net UpgradeWithOpSmartContractManager --sig sign(address[]) [0x6AF0674791925f767060Dd52f7fB20984E8639d8] --sender 0x0CF2F86C3338993ce10F74d6f4B095712c7efe26", - "ledgerId": 0, + "ledgerId": 1, "rpcUrl": "https://ethereum-full-sepolia-k8s-dev.cbhq.net", "expectedDomainAndMessageHashes": { "address": "0x0fe884546476dDd290eC46318785046ef68a0BA9", From 58a1ca7fd791c15f6552895c5507b31952f2b5a8 Mon Sep 17 00:00:00 2001 From: Joby Thundil Date: Mon, 17 Nov 2025 21:57:32 -0500 Subject: [PATCH 21/23] use standard validator --- sepolia/2025-11-07-upgrade-fault-proofs/.env | 2 + .../UpgradeWithOpSmartContractManager.sol | 69 ++++--------------- 2 files changed, 16 insertions(+), 55 deletions(-) diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/.env b/sepolia/2025-11-07-upgrade-fault-proofs/.env index 37538135..99aa2ef2 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/.env +++ b/sepolia/2025-11-07-upgrade-fault-proofs/.env @@ -9,6 +9,8 @@ RECORD_STATE_DIFF=true SYSTEM_CONFIG=0xf272670eb55e895584501d564AfEB048bEd26194 OP_CONTRACT_MANAGER=0xc69e4c24db479191676611a25d977203c3bdca62 PROXY_ADMIN=0x0389E59Aa0a41E4A413Ae70f0008e76CAA34b1F3 +L1_PROXY_ADMIN_OWNER=0x0fe884546476dDd290eC46318785046ef68a0BA9 +CHALLENGER=0x8b8c52B04A38f10515C52670fcb23f3C4C44474F OWNER_SAFE=0x0fe884546476dDd290eC46318785046ef68a0BA9 CB_SIGNER_SAFE_ADDR=0x646132A1667ca7aD00d36616AFBA1A28116C770A diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol index 873c073f..d910bb9c 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol +++ b/sepolia/2025-11-07-upgrade-fault-proofs/script/UpgradeWithOpSmartContractManager.sol @@ -1,13 +1,12 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.15; -import {Claim, GameTypes} from "@eth-optimism-bedrock/src/dispute/lib/Types.sol"; +import {Claim} from "@eth-optimism-bedrock/src/dispute/lib/Types.sol"; import { IOPContractsManager, + IOPContractsManagerStandardValidator, ISystemConfig, - IProxyAdmin, - IDisputeGameFactory, - IFaultDisputeGame + IProxyAdmin } from "@eth-optimism-bedrock/interfaces/L1/IOPContractsManager.sol"; import {MultisigScript} from "@base-contracts/script/universal/MultisigScript.sol"; import {IMulticall3} from "forge-std/interfaces/IMulticall3.sol"; @@ -22,8 +21,8 @@ contract UpgradeWithOpSmartContractManager is MultisigScript { IProxyAdmin public immutable PROXY_ADMIN; Claim immutable CANNON_ABSOLUTE_PRESTATE; - address oldDelayedWethPermissioned; - address oldDelayedWethPermissionless; + address internal immutable L1_PROXY_ADMIN_OWNER; + address internal immutable CHALLENGER; constructor() { OWNER_SAFE = vm.envAddress("OWNER_SAFE"); @@ -31,60 +30,20 @@ contract UpgradeWithOpSmartContractManager is MultisigScript { _SYSTEM_CONFIG = ISystemConfig(vm.envAddress("SYSTEM_CONFIG")); OP_CONTRACT_MANAGER = IOPContractsManager(vm.envAddress("OP_CONTRACT_MANAGER")); CANNON_ABSOLUTE_PRESTATE = Claim.wrap(vm.envBytes32("ABSOLUTE_PRESTATE")); - - IDisputeGameFactory dfg = IDisputeGameFactory(_SYSTEM_CONFIG.disputeGameFactory()); - IFaultDisputeGame fdg = IFaultDisputeGame(address(dfg.gameImpls(GameTypes.CANNON))); - IFaultDisputeGame pfdg = IFaultDisputeGame(address(dfg.gameImpls(GameTypes.PERMISSIONED_CANNON))); - oldDelayedWethPermissioned = address(pfdg.weth()); - oldDelayedWethPermissionless = address(fdg.weth()); + L1_PROXY_ADMIN_OWNER = vm.envAddress("L1_PROXY_ADMIN_OWNER"); + CHALLENGER = vm.envAddress("CHALLENGER"); } function _postCheck(Vm.AccountAccess[] memory, Simulation.Payload memory) internal view override { - IOPContractsManager.Implementations memory impls = OP_CONTRACT_MANAGER.implementations(); - - // verify proxyadmin address updates - require(PROXY_ADMIN.getProxyImplementation(address(_SYSTEM_CONFIG)) == impls.systemConfigImpl, "00"); - require( - PROXY_ADMIN.getProxyImplementation(address(_SYSTEM_CONFIG.optimismPortal())) == impls.optimismPortalImpl, - "01" - ); - require( - PROXY_ADMIN.getProxyImplementation(address(_SYSTEM_CONFIG.optimismMintableERC20Factory())) - == impls.optimismMintableERC20FactoryImpl, - "02" - ); - require( - PROXY_ADMIN.getProxyImplementation(address(_SYSTEM_CONFIG.disputeGameFactory())) - == impls.disputeGameFactoryImpl, - "03" - ); - - ISystemConfig.Addresses memory opChainAddrs = _SYSTEM_CONFIG.getAddresses(); - require( - PROXY_ADMIN.getProxyImplementation(opChainAddrs.l1CrossDomainMessenger) == impls.l1CrossDomainMessengerImpl, - "04" - ); - require(PROXY_ADMIN.getProxyImplementation(opChainAddrs.l1StandardBridge) == impls.l1StandardBridgeImpl, "05"); - require(PROXY_ADMIN.getProxyImplementation(opChainAddrs.l1ERC721Bridge) == impls.l1ERC721BridgeImpl, "06"); - - IDisputeGameFactory dfg = IDisputeGameFactory(_SYSTEM_CONFIG.disputeGameFactory()); - IFaultDisputeGame fdg = IFaultDisputeGame(address(dfg.gameImpls(GameTypes.CANNON))); - IFaultDisputeGame pfdg = IFaultDisputeGame(address(dfg.gameImpls(GameTypes.PERMISSIONED_CANNON))); - Claim fdgAbsolutePrestate = fdg.absolutePrestate(); - Claim pfdgAbsolutePrestate = pfdg.absolutePrestate(); - - // verify FaultDisputeGame and PermissionedDisputeGame absolute prestate - require(Claim.unwrap(fdgAbsolutePrestate) == Claim.unwrap(CANNON_ABSOLUTE_PRESTATE), "07"); - require(Claim.unwrap(pfdgAbsolutePrestate) == Claim.unwrap(CANNON_ABSOLUTE_PRESTATE), "08"); + IOPContractsManagerStandardValidator.ValidationInput memory input = + IOPContractsManagerStandardValidator.ValidationInput( + PROXY_ADMIN, _SYSTEM_CONFIG, Claim.unwrap(CANNON_ABSOLUTE_PRESTATE), _SYSTEM_CONFIG.l2ChainId() + ); - // verify FaultDisputeGame and PermissionedDisputeGame vm - require(address(fdg.vm()) == impls.mipsImpl, "09"); - require(address(pfdg.vm()) == impls.mipsImpl, "10"); + IOPContractsManagerStandardValidator.ValidationOverrides memory overrides = + IOPContractsManagerStandardValidator.ValidationOverrides(L1_PROXY_ADMIN_OWNER, CHALLENGER); - // verify DelayedWETH doesn't change - // https://github.com/ethereum-optimism/optimism/blob/d09c836f818c73ae139f60b717654c4e53712743/packages/contracts-bedrock/src/L1/OPContractsManager.sol#L877 - require(address(fdg.weth()) == oldDelayedWethPermissionless, "11"); - require(address(pfdg.weth()) == oldDelayedWethPermissioned, "12"); + OP_CONTRACT_MANAGER.validateWithOverrides(input, false, overrides); } function _buildCalls() internal view override returns (IMulticall3.Call3Value[] memory) { From 8bb02d25154b394ca4aab6be5965f962557bb67f Mon Sep 17 00:00:00 2001 From: Joby Thundil Date: Tue, 18 Nov 2025 09:14:00 -0500 Subject: [PATCH 22/23] fix op validation and add records --- .../11155111/approve-latest.json | 89 +++++++ .../11155111/run-1763474377488.json | 90 +++++++ .../11155111/run-1763474533668.json | 89 +++++++ .../11155111/run-1763474617427.json | 89 +++++++ .../11155111/run-1763475097893.json | 89 +++++++ .../11155111/run-1763475193401.json | 239 ++++++++++++++++++ .../validations/op-signer.json | 8 +- 7 files changed, 689 insertions(+), 4 deletions(-) create mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/records/UpgradeWithOpSmartContractManager.sol/11155111/approve-latest.json create mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/records/UpgradeWithOpSmartContractManager.sol/11155111/run-1763474377488.json create mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/records/UpgradeWithOpSmartContractManager.sol/11155111/run-1763474533668.json create mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/records/UpgradeWithOpSmartContractManager.sol/11155111/run-1763474617427.json create mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/records/UpgradeWithOpSmartContractManager.sol/11155111/run-1763475097893.json create mode 100644 sepolia/2025-11-07-upgrade-fault-proofs/records/UpgradeWithOpSmartContractManager.sol/11155111/run-1763475193401.json diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/records/UpgradeWithOpSmartContractManager.sol/11155111/approve-latest.json b/sepolia/2025-11-07-upgrade-fault-proofs/records/UpgradeWithOpSmartContractManager.sol/11155111/approve-latest.json new file mode 100644 index 00000000..b1488c37 --- /dev/null +++ b/sepolia/2025-11-07-upgrade-fault-proofs/records/UpgradeWithOpSmartContractManager.sol/11155111/approve-latest.json @@ -0,0 +1,89 @@ +{ + "transactions": [ + { + "hash": "0xa4724b8bc774d8be3ee5c24b0ac471ed6c71535c6f8ec14b6b3ae01056eb1a92", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x6af0674791925f767060dd52f7fb20984e8639d8", + "function": "execTransaction(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,bytes)", + "arguments": [ + "0xA8B8CA1d6F0F5Ce63dCEA9121A01b302c5801303", + "0", + "0x82ad56cb0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000fe884546476ddd290ec46318785046ef68a0ba9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024d4d9bdcd41a6d7fbb33919d08a40b81927f228de3011cca9ece4c32b179f8e4711572b5a00000000000000000000000000000000000000000000000000000000", + "1", + "0", + "0", + "0", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x8b6972507570fed878d8f95e6cbeb6325bf157c852dd041b996c6ad69dd3ee4416df65e7db3a0bf74d042a302f02ff621156dd5e246eb98c80721174b3a01ed51b" + ], + "transaction": { + "from": "0x7f10098bd53519c739ca8a404afe127647d94774", + "to": "0x6af0674791925f767060dd52f7fb20984e8639d8", + "gas": "0x1ea78", + "value": "0x0", + "input": "0x6a761202000000000000000000000000a8b8ca1d6f0f5ce63dcea9121a01b302c58013030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000012482ad56cb0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000fe884546476ddd290ec46318785046ef68a0ba9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024d4d9bdcd41a6d7fbb33919d08a40b81927f228de3011cca9ece4c32b179f8e4711572b5a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000418b6972507570fed878d8f95e6cbeb6325bf157c852dd041b996c6ad69dd3ee4416df65e7db3a0bf74d042a302f02ff621156dd5e246eb98c80721174b3a01ed51b00000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x7", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xc5306d", + "logs": [ + { + "address": "0x0fe884546476ddd290ec46318785046ef68a0ba9", + "topics": [ + "0xf2a0eb156472d1440255b0d7c1e19cc07115d1051fe605b0dce69acfec884d9c", + "0x41a6d7fbb33919d08a40b81927f228de3011cca9ece4c32b179f8e4711572b5a", + "0x0000000000000000000000006af0674791925f767060dd52f7fb20984e8639d8" + ], + "data": "0x", + "blockHash": "0x0275e064bcf51f06eb06ba4c98c1d047482b2786c34da27ea0154eeb7fb70176", + "blockNumber": "0x935533", + "blockTimestamp": "0x691c7e98", + "transactionHash": "0xa4724b8bc774d8be3ee5c24b0ac471ed6c71535c6f8ec14b6b3ae01056eb1a92", + "transactionIndex": "0x41", + "logIndex": "0xfc", + "removed": false + }, + { + "address": "0x6af0674791925f767060dd52f7fb20984e8639d8", + "topics": [ + "0x442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e" + ], + "data": "0x8524b53b3070cc94d521fe0eb3d64e85c60073f292a454fcef114c9b84a1ade20000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x0275e064bcf51f06eb06ba4c98c1d047482b2786c34da27ea0154eeb7fb70176", + "blockNumber": "0x935533", + "blockTimestamp": "0x691c7e98", + "transactionHash": "0xa4724b8bc774d8be3ee5c24b0ac471ed6c71535c6f8ec14b6b3ae01056eb1a92", + "transactionIndex": "0x41", + "logIndex": "0xfd", + "removed": false + } + ], + "logsBloom": "0x00000000400000040000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000100000000000000800000000000000000000000000000000000000000000000000000400000000000000000000400000000000000000000008000000000000000000000000000008000000200000000800000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014020000000000000000000000100000000008000000", + "type": "0x2", + "transactionHash": "0xa4724b8bc774d8be3ee5c24b0ac471ed6c71535c6f8ec14b6b3ae01056eb1a92", + "transactionIndex": "0x41", + "blockHash": "0x0275e064bcf51f06eb06ba4c98c1d047482b2786c34da27ea0154eeb7fb70176", + "blockNumber": "0x935533", + "gasUsed": "0x16318", + "effectiveGasPrice": "0xf4249", + "from": "0x7f10098bd53519c739ca8a404afe127647d94774", + "to": "0x6af0674791925f767060dd52f7fb20984e8639d8", + "contractAddress": null + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1763475097893, + "chain": 11155111, + "commit": "58a1ca7" +} \ No newline at end of file diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/records/UpgradeWithOpSmartContractManager.sol/11155111/run-1763474377488.json b/sepolia/2025-11-07-upgrade-fault-proofs/records/UpgradeWithOpSmartContractManager.sol/11155111/run-1763474377488.json new file mode 100644 index 00000000..edb3edbe --- /dev/null +++ b/sepolia/2025-11-07-upgrade-fault-proofs/records/UpgradeWithOpSmartContractManager.sol/11155111/run-1763474377488.json @@ -0,0 +1,90 @@ +{ + "transactions": [ + { + "hash": "0xef59f27a54fa9a993bea42030de61ab87e1078f90b51d665101f8d69b0412b15", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x5dfeb066334b67355a15dc9b67317fd2a2e1f77f", + "function": "execTransaction(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,bytes)", + "arguments": [ + "0xA8B8CA1d6F0F5Ce63dCEA9121A01b302c5801303", + "0", + "0x82ad56cb000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000646132a1667ca7ad00d36616afba1a28116c770a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024d4d9bdcdd927483e0a20849a8b8b610bbf455e42da2cbf8b8846f6fdf4a32bad1bbd22f700000000000000000000000000000000000000000000000000000000", + "1", + "0", + "0", + "0", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0xf641599e973958913085e9236ca194875b6a45a02d3c45cd51894c2a5e048c454d88be3cdd4ce9a82eee38437a3e649087e59f88caaa69a889f55eee2d947c0d1baff25c1af81289ba784fe0e05e639a3b01fadf008de619129c758305ec16e822460001cae6e33f41c6f922c6985e6d51f846a90cd7eb99c4fd3b2435555af6271c9ff3a435971f59c0d9abfcf236185bdae0248e4a139647a1d65f2f3b5678a2de79fc1b917f9f68799382b5af13803be962aba6927c56699077f36c086656cbf71c" + ], + "transaction": { + "from": "0x7f10098bd53519c739ca8a404afe127647d94774", + "to": "0x5dfeb066334b67355a15dc9b67317fd2a2e1f77f", + "gas": "0x23275", + "value": "0x0", + "input": "0x6a761202000000000000000000000000a8b8ca1d6f0f5ce63dcea9121a01b302c58013030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000012482ad56cb000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000646132a1667ca7ad00d36616afba1a28116c770a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024d4d9bdcdd927483e0a20849a8b8b610bbf455e42da2cbf8b8846f6fdf4a32bad1bbd22f7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3f641599e973958913085e9236ca194875b6a45a02d3c45cd51894c2a5e048c454d88be3cdd4ce9a82eee38437a3e649087e59f88caaa69a889f55eee2d947c0d1baff25c1af81289ba784fe0e05e639a3b01fadf008de619129c758305ec16e822460001cae6e33f41c6f922c6985e6d51f846a90cd7eb99c4fd3b2435555af6271c9ff3a435971f59c0d9abfcf236185bdae0248e4a139647a1d65f2f3b5678a2de79fc1b917f9f68799382b5af13803be962aba6927c56699077f36c086656cbf71c0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x4", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x471351", + "logs": [ + { + "address": "0x646132a1667ca7ad00d36616afba1a28116c770a", + "topics": [ + "0xf2a0eb156472d1440255b0d7c1e19cc07115d1051fe605b0dce69acfec884d9c", + "0xd927483e0a20849a8b8b610bbf455e42da2cbf8b8846f6fdf4a32bad1bbd22f7", + "0x0000000000000000000000005dfeb066334b67355a15dc9b67317fd2a2e1f77f" + ], + "data": "0x", + "blockHash": "0xa6499b324a0959262508e57c82afbf5f8b6ef5e4f2992af5a758b02b2143ea33", + "blockNumber": "0x9354fe", + "blockTimestamp": "0x691c7bc8", + "transactionHash": "0xef59f27a54fa9a993bea42030de61ab87e1078f90b51d665101f8d69b0412b15", + "transactionIndex": "0x21", + "logIndex": "0x2b", + "removed": false + }, + { + "address": "0x5dfeb066334b67355a15dc9b67317fd2a2e1f77f", + "topics": [ + "0x442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e", + "0x98bda964a74c0878b7662d4dab0bb7da306b5ca7be0cfd01092e398311ee0366" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xa6499b324a0959262508e57c82afbf5f8b6ef5e4f2992af5a758b02b2143ea33", + "blockNumber": "0x9354fe", + "blockTimestamp": "0x691c7bc8", + "transactionHash": "0xef59f27a54fa9a993bea42030de61ab87e1078f90b51d665101f8d69b0412b15", + "transactionIndex": "0x21", + "logIndex": "0x2c", + "removed": false + } + ], + "logsBloom": "0x00000000400000000000000000000000000000000000000000000000040000000000010000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000800000000400000000000400000000000000000000000000000000000000000000000000000000004000000000000000000000200000000000000000000000000000000000000000000000000000000000020000404000000000000010080000000000000000000000000000000800000000000000000000000000000000004000020000020000000020000000000000040000000000000000000000000100000000000000000", + "type": "0x2", + "transactionHash": "0xef59f27a54fa9a993bea42030de61ab87e1078f90b51d665101f8d69b0412b15", + "transactionIndex": "0x21", + "blockHash": "0xa6499b324a0959262508e57c82afbf5f8b6ef5e4f2992af5a758b02b2143ea33", + "blockNumber": "0x9354fe", + "gasUsed": "0x19736", + "effectiveGasPrice": "0x10d3d9", + "from": "0x7f10098bd53519c739ca8a404afe127647d94774", + "to": "0x5dfeb066334b67355a15dc9b67317fd2a2e1f77f", + "contractAddress": null + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1763474377488, + "chain": 11155111, + "commit": "58a1ca7" +} \ No newline at end of file diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/records/UpgradeWithOpSmartContractManager.sol/11155111/run-1763474533668.json b/sepolia/2025-11-07-upgrade-fault-proofs/records/UpgradeWithOpSmartContractManager.sol/11155111/run-1763474533668.json new file mode 100644 index 00000000..ea32fd2a --- /dev/null +++ b/sepolia/2025-11-07-upgrade-fault-proofs/records/UpgradeWithOpSmartContractManager.sol/11155111/run-1763474533668.json @@ -0,0 +1,89 @@ +{ + "transactions": [ + { + "hash": "0x5cb75ae877781e0cbcdb8369ab460fe9612d3d32128a410a39c37e6a9c6abafa", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x6af0674791925f767060dd52f7fb20984e8639d8", + "function": "execTransaction(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,bytes)", + "arguments": [ + "0xA8B8CA1d6F0F5Ce63dCEA9121A01b302c5801303", + "0", + "0x82ad56cb000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000646132a1667ca7ad00d36616afba1a28116c770a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024d4d9bdcdd927483e0a20849a8b8b610bbf455e42da2cbf8b8846f6fdf4a32bad1bbd22f700000000000000000000000000000000000000000000000000000000", + "1", + "0", + "0", + "0", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0xf2ed8e2c126afc94ae9276822b2e243c14dde081c14059e73ebe55689003b4f97d367ed90bb986179507d74ccf563082bd5fbf00e5ed23edb330073413910ec31c" + ], + "transaction": { + "from": "0x7f10098bd53519c739ca8a404afe127647d94774", + "to": "0x6af0674791925f767060dd52f7fb20984e8639d8", + "gas": "0x1dc22", + "value": "0x0", + "input": "0x6a761202000000000000000000000000a8b8ca1d6f0f5ce63dcea9121a01b302c58013030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000012482ad56cb000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000646132a1667ca7ad00d36616afba1a28116c770a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024d4d9bdcdd927483e0a20849a8b8b610bbf455e42da2cbf8b8846f6fdf4a32bad1bbd22f700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041f2ed8e2c126afc94ae9276822b2e243c14dde081c14059e73ebe55689003b4f97d367ed90bb986179507d74ccf563082bd5fbf00e5ed23edb330073413910ec31c00000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x5", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x172446b", + "logs": [ + { + "address": "0x646132a1667ca7ad00d36616afba1a28116c770a", + "topics": [ + "0xf2a0eb156472d1440255b0d7c1e19cc07115d1051fe605b0dce69acfec884d9c", + "0xd927483e0a20849a8b8b610bbf455e42da2cbf8b8846f6fdf4a32bad1bbd22f7", + "0x0000000000000000000000006af0674791925f767060dd52f7fb20984e8639d8" + ], + "data": "0x", + "blockHash": "0xf130c89f6d4c27de78073f8cd88ddd2a58b1447034db6d3393e05120434f2f5c", + "blockNumber": "0x935509", + "blockTimestamp": "0x691c7c64", + "transactionHash": "0x5cb75ae877781e0cbcdb8369ab460fe9612d3d32128a410a39c37e6a9c6abafa", + "transactionIndex": "0x58", + "logIndex": "0xd2", + "removed": false + }, + { + "address": "0x6af0674791925f767060dd52f7fb20984e8639d8", + "topics": [ + "0x442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e" + ], + "data": "0xe77a5b3c54f98875399dd031cbde2dd375517ed53f566c4a811b8bcf6eac50f30000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xf130c89f6d4c27de78073f8cd88ddd2a58b1447034db6d3393e05120434f2f5c", + "blockNumber": "0x935509", + "blockTimestamp": "0x691c7c64", + "transactionHash": "0x5cb75ae877781e0cbcdb8369ab460fe9612d3d32128a410a39c37e6a9c6abafa", + "transactionIndex": "0x58", + "logIndex": "0xd3", + "removed": false + } + ], + "logsBloom": "0x00000000400000040000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000400000000400000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000010080000000000000000000000000000000000000000000000000000000000000000004000020000000000000020000000000000014020000000000000000000000100000000008000000", + "type": "0x2", + "transactionHash": "0x5cb75ae877781e0cbcdb8369ab460fe9612d3d32128a410a39c37e6a9c6abafa", + "transactionIndex": "0x58", + "blockHash": "0xf130c89f6d4c27de78073f8cd88ddd2a58b1447034db6d3393e05120434f2f5c", + "blockNumber": "0x935509", + "gasUsed": "0x158b7", + "effectiveGasPrice": "0x10d2bc", + "from": "0x7f10098bd53519c739ca8a404afe127647d94774", + "to": "0x6af0674791925f767060dd52f7fb20984e8639d8", + "contractAddress": null + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1763474533668, + "chain": 11155111, + "commit": "58a1ca7" +} \ No newline at end of file diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/records/UpgradeWithOpSmartContractManager.sol/11155111/run-1763474617427.json b/sepolia/2025-11-07-upgrade-fault-proofs/records/UpgradeWithOpSmartContractManager.sol/11155111/run-1763474617427.json new file mode 100644 index 00000000..ba1d2c80 --- /dev/null +++ b/sepolia/2025-11-07-upgrade-fault-proofs/records/UpgradeWithOpSmartContractManager.sol/11155111/run-1763474617427.json @@ -0,0 +1,89 @@ +{ + "transactions": [ + { + "hash": "0x61d68dc327312f8bd3968a0338a30db2b1c59249c067f6731c6ce729aade2ce0", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x646132a1667ca7ad00d36616afba1a28116c770a", + "function": "execTransaction(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,bytes)", + "arguments": [ + "0xA8B8CA1d6F0F5Ce63dCEA9121A01b302c5801303", + "0", + "0x82ad56cb0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000fe884546476ddd290ec46318785046ef68a0ba9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024d4d9bdcd41a6d7fbb33919d08a40b81927f228de3011cca9ece4c32b179f8e4711572b5a00000000000000000000000000000000000000000000000000000000", + "1", + "0", + "0", + "0", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000005dfeb066334b67355a15dc9b67317fd2a2e1f77f0000000000000000000000000000000000000000000000000000000000000000010000000000000000000000006af0674791925f767060dd52f7fb20984e8639d8000000000000000000000000000000000000000000000000000000000000000001" + ], + "transaction": { + "from": "0x7f10098bd53519c739ca8a404afe127647d94774", + "to": "0x646132a1667ca7ad00d36616afba1a28116c770a", + "gas": "0x21d8a", + "value": "0x0", + "input": "0x6a761202000000000000000000000000a8b8ca1d6f0f5ce63dcea9121a01b302c58013030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000012482ad56cb0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000fe884546476ddd290ec46318785046ef68a0ba9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024d4d9bdcd41a6d7fbb33919d08a40b81927f228de3011cca9ece4c32b179f8e4711572b5a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000820000000000000000000000005dfeb066334b67355a15dc9b67317fd2a2e1f77f0000000000000000000000000000000000000000000000000000000000000000010000000000000000000000006af0674791925f767060dd52f7fb20984e8639d8000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x6", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x61bf34", + "logs": [ + { + "address": "0x0fe884546476ddd290ec46318785046ef68a0ba9", + "topics": [ + "0xf2a0eb156472d1440255b0d7c1e19cc07115d1051fe605b0dce69acfec884d9c", + "0x41a6d7fbb33919d08a40b81927f228de3011cca9ece4c32b179f8e4711572b5a", + "0x000000000000000000000000646132a1667ca7ad00d36616afba1a28116c770a" + ], + "data": "0x", + "blockHash": "0xf59bdcf3815b5efdd1b57c995ba4ba38c90e2ae36c93230fb4886ee16926d604", + "blockNumber": "0x93550f", + "blockTimestamp": "0x691c7cb8", + "transactionHash": "0x61d68dc327312f8bd3968a0338a30db2b1c59249c067f6731c6ce729aade2ce0", + "transactionIndex": "0x4c", + "logIndex": "0x2e", + "removed": false + }, + { + "address": "0x646132a1667ca7ad00d36616afba1a28116c770a", + "topics": [ + "0x442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e" + ], + "data": "0xd927483e0a20849a8b8b610bbf455e42da2cbf8b8846f6fdf4a32bad1bbd22f70000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xf59bdcf3815b5efdd1b57c995ba4ba38c90e2ae36c93230fb4886ee16926d604", + "blockNumber": "0x93550f", + "blockTimestamp": "0x691c7cb8", + "transactionHash": "0x61d68dc327312f8bd3968a0338a30db2b1c59249c067f6731c6ce729aade2ce0", + "transactionIndex": "0x4c", + "logIndex": "0x2f", + "removed": false + } + ], + "logsBloom": "0x00000000400000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000100000000000000800000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000008010000000000000000000000000008000000200000000800000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000010000000200000000000000000000000000000000000000000000000000000000001004000020000000000000000000000000000000000000000200000000000000100000000000000000", + "type": "0x2", + "transactionHash": "0x61d68dc327312f8bd3968a0338a30db2b1c59249c067f6731c6ce729aade2ce0", + "transactionIndex": "0x4c", + "blockHash": "0xf59bdcf3815b5efdd1b57c995ba4ba38c90e2ae36c93230fb4886ee16926d604", + "blockNumber": "0x93550f", + "gasUsed": "0x17249", + "effectiveGasPrice": "0x119144", + "from": "0x7f10098bd53519c739ca8a404afe127647d94774", + "to": "0x646132a1667ca7ad00d36616afba1a28116c770a", + "contractAddress": null + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1763474617427, + "chain": 11155111, + "commit": "58a1ca7" +} \ No newline at end of file diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/records/UpgradeWithOpSmartContractManager.sol/11155111/run-1763475097893.json b/sepolia/2025-11-07-upgrade-fault-proofs/records/UpgradeWithOpSmartContractManager.sol/11155111/run-1763475097893.json new file mode 100644 index 00000000..b1488c37 --- /dev/null +++ b/sepolia/2025-11-07-upgrade-fault-proofs/records/UpgradeWithOpSmartContractManager.sol/11155111/run-1763475097893.json @@ -0,0 +1,89 @@ +{ + "transactions": [ + { + "hash": "0xa4724b8bc774d8be3ee5c24b0ac471ed6c71535c6f8ec14b6b3ae01056eb1a92", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x6af0674791925f767060dd52f7fb20984e8639d8", + "function": "execTransaction(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,bytes)", + "arguments": [ + "0xA8B8CA1d6F0F5Ce63dCEA9121A01b302c5801303", + "0", + "0x82ad56cb0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000fe884546476ddd290ec46318785046ef68a0ba9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024d4d9bdcd41a6d7fbb33919d08a40b81927f228de3011cca9ece4c32b179f8e4711572b5a00000000000000000000000000000000000000000000000000000000", + "1", + "0", + "0", + "0", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x8b6972507570fed878d8f95e6cbeb6325bf157c852dd041b996c6ad69dd3ee4416df65e7db3a0bf74d042a302f02ff621156dd5e246eb98c80721174b3a01ed51b" + ], + "transaction": { + "from": "0x7f10098bd53519c739ca8a404afe127647d94774", + "to": "0x6af0674791925f767060dd52f7fb20984e8639d8", + "gas": "0x1ea78", + "value": "0x0", + "input": "0x6a761202000000000000000000000000a8b8ca1d6f0f5ce63dcea9121a01b302c58013030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000012482ad56cb0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000fe884546476ddd290ec46318785046ef68a0ba9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024d4d9bdcd41a6d7fbb33919d08a40b81927f228de3011cca9ece4c32b179f8e4711572b5a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000418b6972507570fed878d8f95e6cbeb6325bf157c852dd041b996c6ad69dd3ee4416df65e7db3a0bf74d042a302f02ff621156dd5e246eb98c80721174b3a01ed51b00000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x7", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xc5306d", + "logs": [ + { + "address": "0x0fe884546476ddd290ec46318785046ef68a0ba9", + "topics": [ + "0xf2a0eb156472d1440255b0d7c1e19cc07115d1051fe605b0dce69acfec884d9c", + "0x41a6d7fbb33919d08a40b81927f228de3011cca9ece4c32b179f8e4711572b5a", + "0x0000000000000000000000006af0674791925f767060dd52f7fb20984e8639d8" + ], + "data": "0x", + "blockHash": "0x0275e064bcf51f06eb06ba4c98c1d047482b2786c34da27ea0154eeb7fb70176", + "blockNumber": "0x935533", + "blockTimestamp": "0x691c7e98", + "transactionHash": "0xa4724b8bc774d8be3ee5c24b0ac471ed6c71535c6f8ec14b6b3ae01056eb1a92", + "transactionIndex": "0x41", + "logIndex": "0xfc", + "removed": false + }, + { + "address": "0x6af0674791925f767060dd52f7fb20984e8639d8", + "topics": [ + "0x442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e" + ], + "data": "0x8524b53b3070cc94d521fe0eb3d64e85c60073f292a454fcef114c9b84a1ade20000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x0275e064bcf51f06eb06ba4c98c1d047482b2786c34da27ea0154eeb7fb70176", + "blockNumber": "0x935533", + "blockTimestamp": "0x691c7e98", + "transactionHash": "0xa4724b8bc774d8be3ee5c24b0ac471ed6c71535c6f8ec14b6b3ae01056eb1a92", + "transactionIndex": "0x41", + "logIndex": "0xfd", + "removed": false + } + ], + "logsBloom": "0x00000000400000040000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000100000000000000800000000000000000000000000000000000000000000000000000400000000000000000000400000000000000000000008000000000000000000000000000008000000200000000800000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014020000000000000000000000100000000008000000", + "type": "0x2", + "transactionHash": "0xa4724b8bc774d8be3ee5c24b0ac471ed6c71535c6f8ec14b6b3ae01056eb1a92", + "transactionIndex": "0x41", + "blockHash": "0x0275e064bcf51f06eb06ba4c98c1d047482b2786c34da27ea0154eeb7fb70176", + "blockNumber": "0x935533", + "gasUsed": "0x16318", + "effectiveGasPrice": "0xf4249", + "from": "0x7f10098bd53519c739ca8a404afe127647d94774", + "to": "0x6af0674791925f767060dd52f7fb20984e8639d8", + "contractAddress": null + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1763475097893, + "chain": 11155111, + "commit": "58a1ca7" +} \ No newline at end of file diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/records/UpgradeWithOpSmartContractManager.sol/11155111/run-1763475193401.json b/sepolia/2025-11-07-upgrade-fault-proofs/records/UpgradeWithOpSmartContractManager.sol/11155111/run-1763475193401.json new file mode 100644 index 00000000..99c6f65c --- /dev/null +++ b/sepolia/2025-11-07-upgrade-fault-proofs/records/UpgradeWithOpSmartContractManager.sol/11155111/run-1763475193401.json @@ -0,0 +1,239 @@ +{ + "transactions": [ + { + "hash": "0x248f85399e2a23687bd9d1440b51d9677a94ff763827abcad5a2a4b457c70590", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x0fe884546476ddd290ec46318785046ef68a0ba9", + "function": "execTransaction(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,bytes)", + "arguments": [ + "0xA8B8CA1d6F0F5Ce63dCEA9121A01b302c5801303", + "0", + "0x858cc832000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000c69e4c24db479191676611a25d977203c3bdca620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a4ff2dd5a100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f272670eb55e895584501d564afeb048bed261940000000000000000000000000389e59aa0a41e4a413ae70f0008e76caa34b1f303caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b00000000000000000000000000000000000000000000000000000000", + "1", + "0", + "0", + "0", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x000000000000000000000000646132a1667ca7ad00d36616afba1a28116c770a0000000000000000000000000000000000000000000000000000000000000000010000000000000000000000006af0674791925f767060dd52f7fb20984e8639d8000000000000000000000000000000000000000000000000000000000000000001" + ], + "transaction": { + "from": "0x7f10098bd53519c739ca8a404afe127647d94774", + "to": "0x0fe884546476ddd290ec46318785046ef68a0ba9", + "gas": "0xe1f3ef", + "value": "0x0", + "input": "0x6a761202000000000000000000000000a8b8ca1d6f0f5ce63dcea9121a01b302c580130300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000001a4858cc832000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000c69e4c24db479191676611a25d977203c3bdca620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a4ff2dd5a100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f272670eb55e895584501d564afeb048bed261940000000000000000000000000389e59aa0a41e4a413ae70f0008e76caa34b1f303caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082000000000000000000000000646132a1667ca7ad00d36616afba1a28116c770a0000000000000000000000000000000000000000000000000000000000000000010000000000000000000000006af0674791925f767060dd52f7fb20984e8639d8000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x8", + "chainId": "0xaa36a7" + }, + "additionalContracts": [ + { + "transactionType": "CREATE2", + "contractName": null, + "address": "0xa1ae4fd5541a3e7a912e45560ed60d3edc5f9a05", + "initCode": "0x6102006040523480156200001257600080fd5b50604051620065483803806200654883398101604081905262000035916200053c565b82620000446001607e6200064b565b60ff16816040015111156200006c57604051633beff19960e11b815260040160405180910390fd5b60001981606001511480620000965750604081015160608201516200009390600162000671565b10155b15620000b55760405163e62ccf3960e01b815260040160405180910390fd5b600281606001511015620000dc5760405163e62ccf3960e01b815260040160405180910390fd5b6001600160401b0380168160c001516001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000129573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014f91906200068c565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b39190620006ac565b1115620001d35760405163b4e1243360e01b815260040160405180910390fd5b6000620001f882608001516001600160401b03166200048e60201b62000cec1760201c565b6200020e906001600160401b03166002620006c6565b905060008260c001516001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000255573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027b91906200068c565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002df9190620006ac565b6200030284608001516001600160401b03166200048e60201b62000cec1760201c565b6001600160401b031662000317919062000671565b905060006200033283836200049160201b6200283e1760201c565b90506001600160401b038111156200035d5760405163235dfb2b60e21b815260040160405180910390fd5b620003808460a001516001600160401b03166200048e60201b62000cec1760201c565b6001600160401b0316816001600160401b03161115620003b35760405163235dfb2b60e21b815260040160405180910390fd5b63ffffffff8016620003da856000015163ffffffff166200048e60201b62000cec1760201c565b63ffffffff1603620003ff5760405163073ed16760e31b815260040160405180910390fd5b5050815163ffffffff1661012090815260208301516080908152604084015160a0908152606085015160c0908152918501516001600160401b039081166101a052908501511660e0908152908401516001600160a01b03908116610100908152918501518116610140529084015181166101605292015161018052509182166101c052166101e05250620006e8565b90565b600081831015620004a35781620004a5565b825b9392505050565b60405161014081016001600160401b0381118282101715620004de57634e487b7160e01b600052604160045260246000fd5b60405290565b805163ffffffff81168114620004f957600080fd5b919050565b80516001600160401b0381168114620004f957600080fd5b6001600160a01b03811681146200052c57600080fd5b50565b8051620004f98162000516565b60008060008385036101808112156200055457600080fd5b610140808212156200056557600080fd5b6200056f620004ac565b91506200057c86620004e4565b8252602086015160208301526040860151604083015260608601516060830152620005aa60808701620004fe565b6080830152620005bd60a08701620004fe565b60a0830152620005d060c087016200052f565b60c0830152620005e360e087016200052f565b60e0830152610100620005f88188016200052f565b8184015250610120808701518184015250819450620006198187016200052f565b935050506200062c61016085016200052f565b90509250925092565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff84168082101562000668576200066862000635565b90039392505050565b6000821982111562000687576200068762000635565b500190565b6000602082840312156200069f57600080fd5b8151620004a58162000516565b600060208284031215620006bf57600080fd5b5051919050565b6000816000190483118215151615620006e357620006e362000635565b500290565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051615c85620008c36000396000818161061c01528181611a4a01526123b001526000818161090d01528181611a1801528181611eeb015261237e015260008181610778015281816130ed01528181613158015261318b015260008181610ac5015261277c0152600081816106ee01528181611b4801528181611c8c01528181611d6601528181611df5015281816135fa0152613aad0152600081816105a90152818161182601528181611922015281816134f401526139b4015260008181610948015281816127fe0152613a840152600081816105460152818161247e01528181613006015261431b015260008181610b1801528181610f7f0152818161207c015281816120be01528181612f76015281816131bb015261321a015260008181610b4b0152818161262201528181612dbf01528181612ee50152818161312901528181614192015281816145bf0152818161469e0152818161475101528181614f7f0152615170015260008181610bf20152818161216a015281816121f001528181612e8801528181612fda015281816140aa01526141b301526000818161083a01526142360152615c856000f3fe6080604052600436106103555760003560e01c806370872aa5116101bb578063c0d8bb74116100f7578063dabd396d11610095578063f8f43ff61161006f578063f8f43ff614610b9f578063fa24f74314610bbf578063fa315aa914610be3578063fe2bbeb214610c1657600080fd5b8063dabd396d14610b09578063ec5e630814610b3c578063eff0f59214610b6f57600080fd5b8063cf09e0d0116100d1578063cf09e0d014610a75578063d5d44d8014610a96578063d6ae3cd514610ab6578063d8cc1a3c14610ae957600080fd5b8063c0d8bb74146109b4578063c395e1ca146109e1578063c6f0308c14610a0157600080fd5b80638d450a9511610164578063a8e4fb901161013e578063a8e4fb90146108fe578063bbdc02db14610931578063bcef3b5514610972578063bd8da9561461099457600080fd5b80638d450a951461082b57806399735e3214610809578063a445ece61461085e57600080fd5b80638129fc1c116101955780638129fc1c146107ec5780638980e0cc146107f45780638b85902b1461080957600080fd5b806370872aa5146107af578063786b844b146107c45780637b0f0adc146107d957600080fd5b80633e3ac912116102955780635a5fa2d91161023357806360e274641161020d57806360e27464146107275780636361506d146107475780636b6716c0146107695780636f0344091461079c57600080fd5b80635a5fa2d9146106bf5780635c0cba33146106df578063609d33341461071257600080fd5b8063529d6a8c1161026f578063529d6a8c146105e0578063534db0e21461060d57806354fd4d501461064057806357da950e1461068f57600080fd5b80633e3ac9121461056a5780633fc8cef31461059a578063472777c6146105cd57600080fd5b806325fc2ace1161030257806330dbe570116102dc57806330dbe570146104c3578063378dd48c146104fb57806337b1b229146105155780633a7684631461053757600080fd5b806325fc2ace1461046f5780632810e1d61461048e5780632ad69aeb146104a357600080fd5b8063200d2ed211610333578063200d2ed2146103e7578063222abf4514610415578063250e69bd1461045557600080fd5b8063019351301461035a57806303c2924d1461037c57806319effeb41461039c575b600080fd5b34801561036657600080fd5b5061037a6103753660046154f5565b610c46565b005b34801561038857600080fd5b5061037a610397366004615550565b610f05565b3480156103a857600080fd5b506000546103c99068010000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b3480156103f357600080fd5b5060005461040890600160801b900460ff1681565b6040516103de91906155a9565b34801561042157600080fd5b506104456104303660046155d1565b600c6020526000908152604090205460ff1681565b60405190151581526020016103de565b34801561046157600080fd5b50600a546104459060ff1681565b34801561047b57600080fd5b506008545b6040519081526020016103de565b34801561049a57600080fd5b5061040861148d565b3480156104af57600080fd5b506104806104be366004615550565b611665565b3480156104cf57600080fd5b506001546104e3906001600160a01b031681565b6040516001600160a01b0390911681526020016103de565b34801561050757600080fd5b50600d546104089060ff1681565b34801561052157600080fd5b503660011981013560f01c90033560601c6104e3565b34801561054357600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104e3565b34801561057657600080fd5b50600054610445907201000000000000000000000000000000000000900460ff1681565b3480156105a657600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104e3565b61037a6105db3660046155ee565b61169b565b3480156105ec57600080fd5b506104806105fb3660046155d1565b60036020526000908152604090205481565b34801561061957600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104e3565b34801561064c57600080fd5b5060408051808201909152600581527f312e382e3000000000000000000000000000000000000000000000000000000060208201525b6040516103de9190615685565b34801561069b57600080fd5b506008546009546106aa919082565b604080519283526020830191909152016103de565b3480156106cb57600080fd5b506104806106da366004615698565b6116ad565b3480156106eb57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104e3565b34801561071e57600080fd5b506106826116e7565b34801561073357600080fd5b5061037a6107423660046155d1565b6116f5565b34801561075357600080fd5b503660011981013560f01c900360340135610480565b34801561077557600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006103c9565b61037a6107aa3660046156bf565b611a0d565b3480156107bb57600080fd5b50600954610480565b3480156107d057600080fd5b5061037a611ab4565b61037a6107e73660046155ee565b611ed3565b61037a611ee0565b34801561080057600080fd5b50600254610480565b34801561081557600080fd5b503660011981013560f01c900360540135610480565b34801561083757600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610480565b34801561086a57600080fd5b506108c0610879366004615698565b6007602052600090815260409020805460019091015460ff821691610100810463ffffffff1691650100000000009091046001600160801b0316906001600160a01b031684565b60408051941515855263ffffffff90931660208501526001600160801b03909116918301919091526001600160a01b031660608201526080016103de565b34801561090a57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104e3565b34801561093d57600080fd5b5060405163ffffffff7f00000000000000000000000000000000000000000000000000000000000000001681526020016103de565b34801561097e57600080fd5b503660011981013560f01c900360140135610480565b3480156109a057600080fd5b506103c96109af366004615698565b611f4c565b3480156109c057600080fd5b506104806109cf3660046155d1565b600b6020526000908152604090205481565b3480156109ed57600080fd5b506104806109fc366004615700565b6120e6565b348015610a0d57600080fd5b50610a21610a1c366004615698565b6122a7565b6040805163ffffffff90981688526001600160a01b03968716602089015295909416948601949094526001600160801b039182166060860152608085015291821660a08401521660c082015260e0016103de565b348015610a8157600080fd5b506000546103c99067ffffffffffffffff1681565b348015610aa257600080fd5b50610480610ab13660046155d1565b61231b565b348015610ac257600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610480565b348015610af557600080fd5b5061037a610b04366004615729565b612373565b348015610b1557600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006103c9565b348015610b4857600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610480565b348015610b7b57600080fd5b50610445610b8a366004615698565b60046020526000908152604090205460ff1681565b348015610bab57600080fd5b5061037a610bba3660046155ee565b612416565b348015610bcb57600080fd5b50610bd46127fc565b6040516103de939291906157b5565b348015610bef57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610480565b348015610c2257600080fd5b50610445610c31366004615698565b60066020526000908152604090205460ff1681565b60008054600160801b900460ff166002811115610c6557610c65615572565b14610c835760405163067fe19560e41b815260040160405180910390fd5b6000547201000000000000000000000000000000000000900460ff1615610cd6576040517f0ea2e75200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cef3660011981013560f01c90036014013590565b90565b610d06610d01368690038601866157f0565b612859565b14610d3d576040517f9cc00b5b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82606001358282604051610d52929190615864565b604051809103902014610d91576040517fd81d583b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610dda610dd584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506128b592505050565b612922565b90506000610e0182600881518110610df457610df4615874565b6020026020010151612ad8565b9050602081511115610e3f576040517fd81d583b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081810151825190910360031b1c3660011981013560f01c9003605401358103610e96576040517fb8ed883000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050600180547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790555050600080547fffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff1672010000000000000000000000000000000000001790555050565b60008054600160801b900460ff166002811115610f2457610f24615572565b14610f425760405163067fe19560e41b815260040160405180910390fd5b600060028381548110610f5757610f57615874565b906000526020600020906005020190506000610f7284611f4c565b905067ffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169082161015610fdb576040517ff2440b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008481526006602052604090205460ff1615611024576040517ff1a9458100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600084815260056020526040902080548015801561104157508515155b156110a457835464010000000090046001600160a01b0316600081156110675781611076565b60018601546001600160a01b03165b90506110828187612b8c565b505050600094855250506006602052505060409020805460ff19166001179055565b6000868152600760209081526040918290208251608081018452815460ff81161515808352610100820463ffffffff16948301949094526501000000000090046001600160801b031693810193909352600101546001600160a01b03166060830152611128576001600160801b036040820152600181526000869003611128578195505b600086826020015163ffffffff1661114091906158a0565b905060008382116111515781611153565b835b602084015190915063ffffffff165b8181101561127357600086828154811061117e5761117e615874565b6000918252602080832090910154808352600690915260409091205490915060ff166111d6576040517f9a07664600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600282815481106111eb576111eb615874565b60009182526020909120600590910201805490915064010000000090046001600160a01b03161580156112325750600481015460408701516001600160801b039182169116115b1561125e5760018101546001600160a01b0316606087015260048101546001600160801b031660408701525b5050808061126b906158b8565b915050611162565b5063ffffffff818116602085810191825260008c81526007909152604090819020865181549351928801517fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009094169015157fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff161761010092909416918202939093177fffffffffffffffffffffff00000000000000000000000000000000ffffffffff16650100000000006001600160801b03909316929092029190911782556060850151600190920180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039093169290921790915584900361148257606083015160008a8152600660205260409020805460ff19166001179055891580156113bf57506000547201000000000000000000000000000000000000900460ff165b1561141a576001546001600160a01b03166113da818a612b8c565b88546001600160a01b03909116640100000000027fffffffffffffffff0000000000000000000000000000000000000000ffffffff909116178855611480565b6114476001600160a01b038216156114325781611441565b60018901546001600160a01b03165b89612b8c565b87547fffffffffffffffff0000000000000000000000000000000000000000ffffffff166401000000006001600160a01b038316021788555b505b505050505050505050565b600080600054600160801b900460ff1660028111156114ae576114ae615572565b146114cc5760405163067fe19560e41b815260040160405180910390fd5b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85460ff16611530576040517f9a07664600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001600160a01b0316600260008154811061154f5761154f615874565b600091825260209091206005909102015464010000000090046001600160a01b03161461157d576001611580565b60025b6000805467ffffffffffffffff421668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff82168117835592935083927fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffff000000000000000000ffffffffffffffff90911617600160801b83600281111561162457611624615572565b02179055600281111561163957611639615572565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a290565b6005602052816000526040600020818154811061168157600080fd5b90600052602060002001600091509150505481565b905090565b6116a88383836001611a0d565b505050565b600081815260076020908152604080832060059092528220805482546116de90610100900463ffffffff16826158d2565b95945050505050565b606061169660546020612bce565b6116fd611ab4565b60006002600d5460ff16600281111561171857611718615572565b0361173c57506001600160a01b0381166000908152600b60205260409020546117ab565b6001600d5460ff16600281111561175557611755615572565b0361177957506001600160a01b0381166000908152600360205260409020546117ab565b6040517f078a3df400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000908152600c602052604090205460ff16611888576001600160a01b038281166000818152600c602052604090819020805460ff19166001179055517f7eee288d0000000000000000000000000000000000000000000000000000000081526004810191909152602481018390527f000000000000000000000000000000000000000000000000000000000000000090911690637eee288d90604401600060405180830381600087803b15801561186c57600080fd5b505af1158015611880573d6000803e3d6000fd5b505050505050565b806000036118c2576040517f17bfe5f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038281166000818152600b60209081526040808320839055600390915280822091909155517ff3fef3a30000000000000000000000000000000000000000000000000000000081526004810191909152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063f3fef3a390604401600060405180830381600087803b15801561196857600080fd5b505af115801561197c573d6000803e3d6000fd5b505050506000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146119cd576040519150601f19603f3d011682016040523d82523d6000602084013e6119d2565b606091505b50509050806116a8576040517f83e6cc6b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611a6c5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b611aa2576040517fd386ef3e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aae84848484612c02565b50505050565b6002600d5460ff166002811115611acd57611acd615572565b1480611aef57506001600d5460ff166002811115611aed57611aed615572565b145b15611af657565b6000600d5460ff166002811115611b0f57611b0f615572565b14611b46576040517f078a3df400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ba4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc891906158e9565b15611bff576040517f379a7ed900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005468010000000000000000900467ffffffffffffffff1667ffffffffffffffff16600003611c5b576040517fc105260a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f0314d2b30000000000000000000000000000000000000000000000000000000081523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630314d2b390602401602060405180830381865afa158015611cdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cff91906158e9565b905080611d38576040517f4851bd9b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f17cf21a90000000000000000000000000000000000000000000000000000000081523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906317cf21a990602401600060405180830381600087803b158015611db257600080fd5b505af1925050508015611dc3575060015b506040517f496b9c160000000000000000000000000000000000000000000000000000000081523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063496b9c1690602401602060405180830381865afa158015611e44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6891906158e9565b90508015611e8257600d805460ff19166001179055611e90565b600d805460ff191660021790555b600d546040517f9908eaac0645df9d0704d06adc9e07337c951de2f06b5f2836151d48d5e4722f91611ec79160ff909116906155a9565b60405180910390a15050565b6116a88383836000611a0d565b326001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611f42576040517fd386ef3e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f4a6135a3565b565b600080600054600160801b900460ff166002811115611f6d57611f6d615572565b14611f8b5760405163067fe19560e41b815260040160405180910390fd5b600060028381548110611fa057611fa0615874565b600091825260208220600590910201805490925063ffffffff9081161461200657815460028054909163ffffffff16908110611fde57611fde615874565b906000526020600020906005020160040160109054906101000a90046001600160801b031690505b600482015460009061203190600160801b900467ffffffffffffffff165b67ffffffffffffffff1690565b6120459067ffffffffffffffff16426158d2565b61205b612024846001600160801b031660401c90565b67ffffffffffffffff1661206f91906158a0565b905067ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001667ffffffffffffffff168167ffffffffffffffff16116120bc57806116de565b7f000000000000000000000000000000000000000000000000000000000000000095945050505050565b600080612163836001600160801b03167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b60ff1690507f00000000000000000000000000000000000000000000000000000000000000008111156121c2576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b642e90edd00062061a806311e1a30060006121dd838361591c565b9050670de0b6b3a76400006000612214827f0000000000000000000000000000000000000000000000000000000000000000615930565b9050600061223261222d670de0b6b3a764000086615930565b613b40565b905060006122408484613d92565b9050600061224e8383613de1565b9050600061225b82613e0f565b9050600061227a82612275670de0b6b3a76400008f615930565b613ff7565b905060006122888b83613de1565b9050612294818d615930565b9f9e505050505050505050505050505050565b600281815481106122b757600080fd5b60009182526020909120600590910201805460018201546002830154600384015460049094015463ffffffff841695506401000000009093046001600160a01b03908116949216926001600160801b03918216929180821691600160801b90041687565b60006002600d5460ff16600281111561233657612336615572565b0361235757506001600160a01b03166000908152600b602052604090205490565b506001600160a01b031660009081526003602052604090205490565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806123d25750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b612408576040517fd386ef3e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611880868686868686614028565b60008054600160801b900460ff16600281111561243557612435615572565b146124535760405163067fe19560e41b815260040160405180910390fd5b60008060008061246286614584565b93509350935093506000612478858585856148dd565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fe919061594f565b9050600189036125cb576001600160a01b0381166352f0f3ad8a8461252f3660011981013560f01c90036034013590565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815260048101939093526024830191909152604482015260206064820152608481018a905260a4015b6020604051808303816000875af11580156125a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c5919061596c565b50611482565b600289036125ea576001600160a01b0381166352f0f3ad8a848961252f565b60038903612609576001600160a01b0381166352f0f3ad8a848761252f565b6004890361273e5760006126466001600160801b0385167f000000000000000000000000000000000000000000000000000000000000000061497c565b60095461265391906158a0565b61265e9060016158a0565b90503660011981013560f01c900360540135811061268b573660011981013560f01c90036054013561268d565b805b90506001600160a01b0382166352f0f3ad8b8560405160e084901b7fffffffff000000000000000000000000000000000000000000000000000000001681526004810192909252602482015260c084901b604482015260086064820152608481018b905260a4016020604051808303816000875af1158015612713573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612737919061596c565b5050611482565b600589036127ca576040517f52f0f3ad000000000000000000000000000000000000000000000000000000008152600481018a9052602481018390527f000000000000000000000000000000000000000000000000000000000000000060c01b604482015260086064820152608481018890526001600160a01b038216906352f0f3ad9060a401612582565b6040517fff137e6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000003660011981013560f01c90036014013560606128376116e7565b9050909192565b60008183101561284e5781612850565b825b90505b92915050565b60008160000151826020015183604001518460600151604051602001612898949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b60408051808201909152600080825260208201528151600003612904576040517f5ab458fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b6060600080600061293285614a11565b91945092509050600181600181111561294d5761294d615572565b14612984576040517f4b9c6abe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845161299083856158a0565b146129c7576040517f5c5537b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516020808252610420820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816129de5790505093506000835b8651811015612acc57600080612a516040518060400160405280858c60000151612a3591906158d2565b8152602001858c60200151612a4a91906158a0565b9052614a11565b509150915060405180604001604052808383612a6d91906158a0565b8152602001848b60200151612a8291906158a0565b815250888581518110612a9757612a97615874565b6020908102919091010152612aad6001856158a0565b9350612ab981836158a0565b612ac390846158a0565b92505050612a0b565b50845250919392505050565b60606000806000612ae885614a11565b919450925090506000816001811115612b0357612b03615572565b14612b3a576040517f1ff9b2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612b4482846158a0565b855114612b7d576040517f5c5537b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116de85602001518484614eaf565b60028101546001600160a01b038316600090815260036020526040812080546001600160801b0390931692909190612bc59084906158a0565b90915550505050565b6040518181523660011981013560f01c90038284820160208401378260208301016000815260208101604052505092915050565b60008054600160801b900460ff166002811115612c2157612c21615572565b14612c3f5760405163067fe19560e41b815260040160405180910390fd5b600060028481548110612c5457612c54615874565b60009182526020918290206040805160e0810182526005909302909101805463ffffffff811684526001600160a01b0364010000000090910481169484019490945260018101549093169082015260028201546001600160801b03908116606083015260038301546080830181905260049093015480821660a0840152600160801b90041660c082015291508514612d18576040517f3014033200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a0810151600083156001600160801b0383161760011b90506000612dad826001600160801b03167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b60ff169050861580612de85750612de57f000000000000000000000000000000000000000000000000000000000000000060026158a0565b81145b8015612df2575084155b15612e29576040517fa42637bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000547201000000000000000000000000000000000000900460ff168015612e4f575086155b15612e86576040517f0ea2e75200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000811115612ee0576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612f0b7f000000000000000000000000000000000000000000000000000000000000000060016158a0565b8103612f1d57612f1d86888588614f44565b34612f27836120e6565b14612f5e576040517f8620aa1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612f6988611f4c565b905067ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811690821603612fd1576040517f3381d11400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612ffe60017f00000000000000000000000000000000000000000000000000000000000000006158d2565b8303613122577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015613062573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613086919061594f565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e7919061596c565b61311b907f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16615985565b90506131b5565b61314d60017f00000000000000000000000000000000000000000000000000000000000000006158d2565b83036131885761311b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1660026159b1565b507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff165b6131e9817f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166159e1565b67ffffffffffffffff166132048367ffffffffffffffff1690565b67ffffffffffffffff16111561324b57613248817f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166159e1565b91505b6000604083901b421760008a8152608087901b6001600160801b038d1617602052604081209192509060008181526004602052604090205490915060ff16156132c0576040517f80497e3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016004600083815260200190815260200160002060006101000a81548160ff02191690831515021790555060026040518060e001604052808d63ffffffff16815260200160006001600160a01b03168152602001336001600160a01b03168152602001346001600160801b031681526020018c8152602001886001600160801b03168152602001846001600160801b0316815250908060018154018082558091505060019003906000526020600020906005020160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160020160006101000a8154816001600160801b0302191690836001600160801b031602179055506080820151816003015560a08201518160040160006101000a8154816001600160801b0302191690836001600160801b0316021790555060c08201518160040160106101000a8154816001600160801b0302191690836001600160801b031602179055505050600560008c815260200190815260200160002060016002805490506134b791906158d2565b81546001810183556000928352602080842090910191909155338252600b90526040812080543492906134eb9084906158a0565b925050819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561354d57600080fd5b505af1158015613561573d6000803e3d6000fd5b50506040513393508d92508e91507f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be90600090a4505050505050505050505050565b60005471010000000000000000000000000000000000900460ff16156135f5576040517f0dc149f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d83ef2676040518163ffffffff1660e01b81526004016040805180830381865afa158015613655573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136799190615a0a565b9092509050816136b5576040517f6a6bc3b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915282815260200181905260088290556009819055607a361461370c576040517f9824bdab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803660011981013560f01c9003605401351161376a576040517ff40239db0000000000000000000000000000000000000000000000000000000081523660011981013560f01c90036014013560048201526024015b60405180910390fd5b6040805160e08101825263ffffffff808252600060208084018281523660011981013560f01c90038035606090811c8789018181526001600160801b0334818116948b0194855260149095013560808b01908152600160a08c0181815242841660c08e019081526002805493840181558c529c517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace600590930292830180549a5191909d167fffffffffffffffff000000000000000000000000000000000000000000000000909a16999099176401000000006001600160a01b039a8b160217909b5592517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf840180547fffffffffffffffffffffffff000000000000000000000000000000000000000016919098161790965592517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad0820180547fffffffffffffffffffffffffffffffff000000000000000000000000000000001691851691909117905593517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad185015595519651968116600160801b9790911696909602959095177f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad2909101558154710100000000000000000000000000000000007fffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff909116178255918152600b9091529182208054919290916139ab9084906158a0565b925050819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015613a0d57600080fd5b505af1158015613a21573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000164267ffffffffffffffff161790555050604080517f3c9f397c00000000000000000000000000000000000000000000000000000000815290517f000000000000000000000000000000000000000000000000000000000000000063ffffffff1692507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691633c9f397c9160048083019260209291908290030181865afa158015613b00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b249190615a2e565b600a805460ff191663ffffffff92909216929092141790555050565b6001600160801b03811160071b81811c67ffffffffffffffff1060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c60ff1060031b1760008213613b9657631615e6386000526004601cfd5b7ff8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffff6f8421084210842108cc6318c6db6d54be83831c1c601f161a1890811b609f90811c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506029190037d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b60007812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f218311670de0b6b3a764000002158202613dcf57637c5f487d6000526004601cfd5b50670de0b6b3a7640000919091020490565b600081600019048311820215613dff5763bac65e5b6000526004601cfd5b50670de0b6b3a764000091020490565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdc0d0570925a462d78213613e3d57919050565b680755bf798b4a1bf1e58212613e5b5763a37bfec96000526004601cfd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6000612850670de0b6b3a76400008361400f86613b40565b6140199190615a54565b6140239190615b10565b613e0f565b60008054600160801b900460ff16600281111561404757614047615572565b146140655760405163067fe19560e41b815260040160405180910390fd5b60006002878154811061407a5761407a615874565b6000918252602082206005919091020160048101549092506001600160801b0316908715821760011b90506140d07f000000000000000000000000000000000000000000000000000000000000000060016158a0565b61414a826001600160801b03167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b60ff1614614184576040517f5f53dd9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808915614260576141d77f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006158d2565b6001901b6141ed846001600160801b03166150d3565b6001600160801b03166142009190615b5a565b156142345761422b61421c60016001600160801b038716615b6e565b865463ffffffff166000615159565b60030154614256565b7f00000000000000000000000000000000000000000000000000000000000000005b9150849050614281565b6003850154915061427e61421c6001600160801b0386166001615b8e565b90505b600882901b60088a8a604051614298929190615864565b6040518091039020901b146142d9576040517f696550ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006142e48c615222565b905060006142f3836003015490565b6040517fe14ced320000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e14ced3290614360908f908f908f908f908a90600401615bf9565b6020604051808303816000875af115801561437f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143a3919061596c565b60048501549114915060009060029061442c906001600160801b03167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b6144a6896001600160801b03167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b6144b09190615c33565b6144ba9190615c56565b60ff1615905081151581036144fb576040517ffb4e40dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b875464010000000090046001600160a01b031615614545576040517f9071e6af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505085547fffffffffffffffff0000000000000000000000000000000000000000ffffffff163364010000000002179095555050505050505050505050565b60008060008060008590506000600282815481106145a4576145a4615874565b600091825260209091206004600590920201908101549091507f000000000000000000000000000000000000000000000000000000000000000090614659906001600160801b03167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b60ff1611614693576040517fb34b5c2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000815b60048301547f000000000000000000000000000000000000000000000000000000000000000090614738906001600160801b03167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b60ff1692508211156147ad57825463ffffffff166147777f000000000000000000000000000000000000000000000000000000000000000060016158a0565b8303614781578391505b6002818154811061479457614794615874565b9060005260206000209060050201935080945050614697565b600481810154908401546001600160801b0391821691166000816001600160801b03166147f26147e6856001600160801b031660011c90565b6001600160801b031690565b6001600160801b0316149050801561488b576000614818836001600160801b03166150d3565b6001600160801b0316111561486857600061484861484060016001600160801b038616615b6e565b896001615159565b6003810154600490910154909c506001600160801b03169a5061486e9050565b6008549a505b600386015460048701549099506001600160801b031697506148cf565b60006148a46148406001600160801b0385166001615b8e565b6003808901546004808b015492840154930154909e506001600160801b039182169d50919b50169850505b505050505050509193509193565b60006001600160801b038416156149385760408051602081018790526001600160801b038087169282019290925260608101859052908316608082015260a001604051602081830303815290604052805190602001206116de565b828260405160200161495d9291909182526001600160801b0316602082015260400190565b6040516020818303038152906040528051906020012095945050505050565b6000806149f0847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b60ff1690508083036001841b600180831b0386831b17039250505092915050565b60008060008360000151600003614a54576040517f5ab458fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020840151805160001a607f8111614a79576000600160009450945094505050614ea8565b60b78111614b8f576000614a8e6080836158d2565b905080876000015111614acd576040517f66c9448500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001838101517fff00000000000000000000000000000000000000000000000000000000000000169082148015614b4557507f80000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216105b15614b7c576040517fbabb01dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060019550935060009250614ea8915050565b60bf8111614ced576000614ba460b7836158d2565b905080876000015111614be3576040517f66c9448500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003614c45576040517fbabb01dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600184015160088302610100031c60378111614c8d576040517fbabb01dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b614c9781846158a0565b895111614cd0576040517f66c9448500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b614cdb8360016158a0565b9750955060009450614ea89350505050565b60f78111614d52576000614d0260c0836158d2565b905080876000015111614d41576040517f66c9448500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600195509350849250614ea8915050565b6000614d5f60f7836158d2565b905080876000015111614d9e576040517f66c9448500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003614e00576040517fbabb01dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600184015160088302610100031c60378111614e48576040517fbabb01dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b614e5281846158a0565b895111614e8b576040517f66c9448500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b614e968360016158a0565b9750955060019450614ea89350505050565b9193909250565b60608167ffffffffffffffff811115614eca57614eca6157da565b6040519080825280601f01601f191660200182016040528015614ef4576020820181803683370190505b5090508115614f3d576000614f0984866158a0565b90506020820160005b84811015614f2a578281015182820152602001614f12565b84811115614f39576000858301525b5050505b9392505050565b6000614f5a6001600160801b0384166001615b8e565b90506000614f6a82866001615159565b9050600086901a83806150345750614fa360027f0000000000000000000000000000000000000000000000000000000000000000615b5a565b6004830154600290615025906001600160801b03167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b61502f9190615c56565b60ff16145b1561508c5760ff81166001148061504e575060ff81166002145b615087576040517ff40239db00000000000000000000000000000000000000000000000000000000815260048101889052602401613761565b6150ca565b60ff8116156150ca576040517ff40239db00000000000000000000000000000000000000000000000000000000815260048101889052602401613761565b50505050505050565b600080615147837e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b600160ff919091161b90920392915050565b60008082615199576151946001600160801b0386167f0000000000000000000000000000000000000000000000000000000000000000615251565b6151ab565b6151ab856001600160801b0316615390565b9050600284815481106151c0576151c0615874565b906000526020600020906005020191505b60048201546001600160801b0382811691161461521a57815460028054909163ffffffff1690811061520557615205615874565b906000526020600020906005020191506151d1565b509392505050565b600080600080600061523386614584565b9350935093509350615247848484846148dd565b9695505050505050565b6000816152ce846001600160801b03167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b60ff16116152e45763b34b5c226000526004601cfd5b6152ed83615390565b90508161536a826001600160801b03167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b60ff1611612853576128506153808360016158a0565b6001600160801b0383169061541c565b6000811960018301168161540b827e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b60ff169390931c8015179392505050565b600080615490847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b60ff169050808303600180821b0385821b179250505092915050565b60008083601f8401126154be57600080fd5b50813567ffffffffffffffff8111156154d657600080fd5b6020830191508360208285010111156154ee57600080fd5b9250929050565b600080600083850360a081121561550b57600080fd5b608081121561551957600080fd5b50839250608084013567ffffffffffffffff81111561553757600080fd5b615543868287016154ac565b9497909650939450505050565b6000806040838503121561556357600080fd5b50508035926020909101359150565b634e487b7160e01b600052602160045260246000fd5b600381106155a657634e487b7160e01b600052602160045260246000fd5b50565b602081016155b683615588565b91905290565b6001600160a01b03811681146155a657600080fd5b6000602082840312156155e357600080fd5b8135614f3d816155bc565b60008060006060848603121561560357600080fd5b505081359360208301359350604090920135919050565b6000815180845260005b8181101561564057602081850181015186830182015201615624565b81811115615652576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612850602083018461561a565b6000602082840312156156aa57600080fd5b5035919050565b80151581146155a657600080fd5b600080600080608085870312156156d557600080fd5b84359350602085013592506040850135915060608501356156f5816156b1565b939692955090935050565b60006020828403121561571257600080fd5b81356001600160801b0381168114614f3d57600080fd5b6000806000806000806080878903121561574257600080fd5b863595506020870135615754816156b1565b9450604087013567ffffffffffffffff8082111561577157600080fd5b61577d8a838b016154ac565b9096509450606089013591508082111561579657600080fd5b506157a389828a016154ac565b979a9699509497509295939492505050565b63ffffffff841681528260208201526060604082015260006116de606083018461561a565b634e487b7160e01b600052604160045260246000fd5b60006080828403121561580257600080fd5b6040516080810181811067ffffffffffffffff8211171561583357634e487b7160e01b600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156158b3576158b361588a565b500190565b600060001982036158cb576158cb61588a565b5060010190565b6000828210156158e4576158e461588a565b500390565b6000602082840312156158fb57600080fd5b8151614f3d816156b1565b634e487b7160e01b600052601260045260246000fd5b60008261592b5761592b615906565b500490565b600081600019048311821515161561594a5761594a61588a565b500290565b60006020828403121561596157600080fd5b8151614f3d816155bc565b60006020828403121561597e57600080fd5b5051919050565b600067ffffffffffffffff8083168185168083038211156159a8576159a861588a565b01949350505050565b600067ffffffffffffffff808316818516818304811182151516156159d8576159d861588a565b02949350505050565b600067ffffffffffffffff83811690831681811015615a0257615a0261588a565b039392505050565b60008060408385031215615a1d57600080fd5b505080516020909101519092909150565b600060208284031215615a4057600080fd5b815163ffffffff81168114614f3d57600080fd5b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600084136000841385830485118282161615615a9557615a9561588a565b7f80000000000000000000000000000000000000000000000000000000000000006000871286820588128184161615615ad057615ad061588a565b60008712925087820587128484161615615aec57615aec61588a565b87850587128184161615615b0257615b0261588a565b505050929093029392505050565b600082615b1f57615b1f615906565b60001983147f800000000000000000000000000000000000000000000000000000000000000083141615615b5557615b5561588a565b500590565b600082615b6957615b69615906565b500690565b60006001600160801b0383811690831681811015615a0257615a0261588a565b60006001600160801b038083168185168083038211156159a8576159a861588a565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b606081526000615c0d606083018789615bb0565b8281036020840152615c20818688615bb0565b9150508260408301529695505050505050565b600060ff821660ff841680821015615c4d57615c4d61588a565b90039392505050565b600060ff831680615c6957615c69615906565b8060ff8416069150509291505056fea164736f6c634300080f000a000000000000000000000000000000000000000000000000000000000000000103caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b0000000000000000000000000000000000000000000000000000000000000049000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000000000000000000049d400000000000000000000000006463dee3828677f6270d83d45408044fc5edb90800000000000000000000000032ce910d9c6c8f78dc6779c1499ab05f281a054e0000000000000000000000002ff5cc82dbf333ea30d8ee462178ab17073153550000000000000000000000000000000000000000000000000000000000014a34000000000000000000000000037637067c1dbe6d2430616d8f54cb774daa59990000000000000000000000008b8c52b04a38f10515c52670fcb23f3c4c44474f" + }, + { + "transactionType": "CREATE2", + "contractName": null, + "address": "0xed839a2aa262eccc513308fe7b8f39088ff8e992", + "initCode": "0x6101c06040523480156200001257600080fd5b50604051620062933803806200629383398101604081905262000035916200052e565b620000436001607e62000601565b60ff16816040015111156200006b57604051633beff19960e11b815260040160405180910390fd5b60001981606001511480620000955750604081015160608201516200009290600162000627565b10155b15620000b45760405163e62ccf3960e01b815260040160405180910390fd5b600281606001511015620000db5760405163e62ccf3960e01b815260040160405180910390fd5b6001600160401b0380168160c001516001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000128573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014e919062000642565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b2919062000662565b1115620001d25760405163b4e1243360e01b815260040160405180910390fd5b6000620001f782608001516001600160401b03166200048060201b62000c701760201c565b6200020d906001600160401b031660026200067c565b905060008260c001516001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027a919062000642565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002de919062000662565b6200030184608001516001600160401b03166200048060201b62000c701760201c565b6001600160401b031662000316919062000627565b905060006200033183836200048360201b62003aa61760201c565b90506001600160401b038111156200035c5760405163235dfb2b60e21b815260040160405180910390fd5b6200037f8460a001516001600160401b03166200048060201b62000c701760201c565b6001600160401b0316816001600160401b03161115620003b25760405163235dfb2b60e21b815260040160405180910390fd5b63ffffffff8016620003d9856000015163ffffffff166200048060201b62000c701760201c565b63ffffffff1603620003fe5760405163073ed16760e31b815260040160405180910390fd5b5050815163ffffffff1661012090815260208301516080908152604084015160a0908152606085015160c0908152918501516001600160401b039081166101a052908501511660e0908152908401516001600160a01b03908116610100908152918501518116610140529084015116610160529091015161018052506200069e565b90565b60008183101562000495578162000497565b825b9392505050565b60405161014081016001600160401b0381118282101715620004d057634e487b7160e01b600052604160045260246000fd5b60405290565b805163ffffffff81168114620004eb57600080fd5b919050565b80516001600160401b0381168114620004eb57600080fd5b6001600160a01b03811681146200051e57600080fd5b50565b8051620004eb8162000508565b600061014082840312156200054257600080fd5b6200054c6200049e565b6200055783620004d6565b81526020830151602082015260408301516040820152606083015160608201526200058560808401620004f0565b60808201526200059860a08401620004f0565b60a0820152620005ab60c0840162000521565b60c0820152620005be60e0840162000521565b60e0820152610100620005d381850162000521565b90820152610120928301519281019290925250919050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8416808210156200061e576200061e620005eb565b90039392505050565b600082198211156200063d576200063d620005eb565b500190565b6000602082840312156200065557600080fd5b8151620004978162000508565b6000602082840312156200067557600080fd5b5051919050565b6000816000190483118215151615620006995762000699620005eb565b500290565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615a53620008406000396000818161072f01528181611e7c01528181611ee70152611f1a015260008181610a4901526139e40152600081816106a5015281816123c60152818161250a015281816125e401528181612673015281816127b50152612c68015260008181610593015281816117aa015281816118a6015281816122830152612b6f0152600081816108cc01528181612c3f0152613a6601526000818161053001528181611d950152818161341501526136e6015260008181610a9c01528181610f0301528181611d0501528181611f4a01528181611fa901528181612e2b0152612e6d015260008181610acf01528181611b4e01528181611c7401528181611eb80152818161328c0152818161388a01528181613ea50152818161457e0152818161469a01528181614779015261482c015260008181610b7601528181611c1701528181611d6901528181612f1901528181612f9f015281816131a401526132ad0152600081816107f101526133300152615a536000f3fe60806040526004361061033f5760003560e01c806370872aa5116101b0578063c395e1ca116100ec578063dabd396d11610095578063f8f43ff61161006f578063f8f43ff614610b23578063fa24f74314610b43578063fa315aa914610b67578063fe2bbeb214610b9a57600080fd5b8063dabd396d14610a8d578063ec5e630814610ac0578063eff0f59214610af357600080fd5b8063d5d44d80116100c6578063d5d44d8014610a1a578063d6ae3cd514610a3a578063d8cc1a3c14610a6d57600080fd5b8063c395e1ca14610965578063c6f0308c14610985578063cf09e0d0146109f957600080fd5b80638d450a9511610159578063bbdc02db11610133578063bbdc02db146108b5578063bcef3b55146108f6578063bd8da95614610918578063c0d8bb741461093857600080fd5b80638d450a95146107e257806399735e32146107c0578063a445ece61461081557600080fd5b80638129fc1c1161018a5780638129fc1c146107a35780638980e0cc146107ab5780638b85902b146107c057600080fd5b806370872aa514610766578063786b844b1461077b5780637b0f0adc1461079057600080fd5b80633e3ac9121161027f5780635a5fa2d91161022857806360e274641161020257806360e27464146106de5780636361506d146106fe5780636b6716c0146107205780636f0344091461075357600080fd5b80635a5fa2d9146106765780635c0cba3314610696578063609d3334146106c957600080fd5b8063529d6a8c11610259578063529d6a8c146105ca57806354fd4d50146105f757806357da950e1461064657600080fd5b80633e3ac912146105545780633fc8cef314610584578063472777c6146105b757600080fd5b806325fc2ace116102ec57806330dbe570116102c657806330dbe570146104ad578063378dd48c146104e557806337b1b229146104ff5780633a7684631461052157600080fd5b806325fc2ace146104595780632810e1d6146104785780632ad69aeb1461048d57600080fd5b8063200d2ed21161031d578063200d2ed2146103d1578063222abf45146103ff578063250e69bd1461043f57600080fd5b8063019351301461034457806303c2924d1461036657806319effeb414610386575b600080fd5b34801561035057600080fd5b5061036461035f3660046152c3565b610bca565b005b34801561037257600080fd5b5061036461038136600461531e565b610e89565b34801561039257600080fd5b506000546103b39068010000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b3480156103dd57600080fd5b506000546103f290600160801b900460ff1681565b6040516103c89190615377565b34801561040b57600080fd5b5061042f61041a36600461539f565b600c6020526000908152604090205460ff1681565b60405190151581526020016103c8565b34801561044b57600080fd5b50600a5461042f9060ff1681565b34801561046557600080fd5b506008545b6040519081526020016103c8565b34801561048457600080fd5b506103f2611411565b34801561049957600080fd5b5061046a6104a836600461531e565b6115e9565b3480156104b957600080fd5b506001546104cd906001600160a01b031681565b6040516001600160a01b0390911681526020016103c8565b3480156104f157600080fd5b50600d546103f29060ff1681565b34801561050b57600080fd5b503660011981013560f01c90033560601c6104cd565b34801561052d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104cd565b34801561056057600080fd5b5060005461042f907201000000000000000000000000000000000000900460ff1681565b34801561059057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104cd565b6103646105c53660046153bc565b61161f565b3480156105d657600080fd5b5061046a6105e536600461539f565b60036020526000908152604090205481565b34801561060357600080fd5b5060408051808201909152600581527f312e382e3000000000000000000000000000000000000000000000000000000060208201525b6040516103c89190615453565b34801561065257600080fd5b50600854600954610661919082565b604080519283526020830191909152016103c8565b34801561068257600080fd5b5061046a610691366004615466565b611631565b3480156106a257600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104cd565b3480156106d557600080fd5b5061063961166b565b3480156106ea57600080fd5b506103646106f936600461539f565b611679565b34801561070a57600080fd5b503660011981013560f01c90036034013561046a565b34801561072c57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006103b3565b61036461076136600461548d565b611991565b34801561077257600080fd5b5060095461046a565b34801561078757600080fd5b50610364612332565b61036461079e3660046153bc565b612751565b61036461275e565b3480156107b757600080fd5b5060025461046a565b3480156107cc57600080fd5b503660011981013560f01c90036054013561046a565b3480156107ee57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061046a565b34801561082157600080fd5b50610877610830366004615466565b6007602052600090815260409020805460019091015460ff821691610100810463ffffffff1691650100000000009091046001600160801b0316906001600160a01b031684565b60408051941515855263ffffffff90931660208501526001600160801b03909116918301919091526001600160a01b031660608201526080016103c8565b3480156108c157600080fd5b5060405163ffffffff7f00000000000000000000000000000000000000000000000000000000000000001681526020016103c8565b34801561090257600080fd5b503660011981013560f01c90036014013561046a565b34801561092457600080fd5b506103b3610933366004615466565b612cfb565b34801561094457600080fd5b5061046a61095336600461539f565b600b6020526000908152604090205481565b34801561097157600080fd5b5061046a6109803660046154ce565b612e95565b34801561099157600080fd5b506109a56109a0366004615466565b613056565b6040805163ffffffff90981688526001600160a01b03968716602089015295909416948601949094526001600160801b039182166060860152608085015291821660a08401521660c082015260e0016103c8565b348015610a0557600080fd5b506000546103b39067ffffffffffffffff1681565b348015610a2657600080fd5b5061046a610a3536600461539f565b6130ca565b348015610a4657600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061046a565b348015610a7957600080fd5b50610364610a883660046154f7565b613122565b348015610a9957600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006103b3565b348015610acc57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061046a565b348015610aff57600080fd5b5061042f610b0e366004615466565b60046020526000908152604090205460ff1681565b348015610b2f57600080fd5b50610364610b3e3660046153bc565b61367e565b348015610b4f57600080fd5b50610b58613a64565b6040516103c893929190615583565b348015610b7357600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061046a565b348015610ba657600080fd5b5061042f610bb5366004615466565b60066020526000908152604090205460ff1681565b60008054600160801b900460ff166002811115610be957610be9615340565b14610c075760405163067fe19560e41b815260040160405180910390fd5b6000547201000000000000000000000000000000000000900460ff1615610c5a576040517f0ea2e75200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c733660011981013560f01c90036014013590565b90565b610c8a610c85368690038601866155be565b613ac1565b14610cc1576040517f9cc00b5b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82606001358282604051610cd6929190615632565b604051809103902014610d15576040517fd81d583b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d5e610d5984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613b1d92505050565b613b8a565b90506000610d8582600881518110610d7857610d78615642565b6020026020010151613d40565b9050602081511115610dc3576040517fd81d583b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081810151825190910360031b1c3660011981013560f01c9003605401358103610e1a576040517fb8ed883000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050600180547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790555050600080547fffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff1672010000000000000000000000000000000000001790555050565b60008054600160801b900460ff166002811115610ea857610ea8615340565b14610ec65760405163067fe19560e41b815260040160405180910390fd5b600060028381548110610edb57610edb615642565b906000526020600020906005020190506000610ef684612cfb565b905067ffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169082161015610f5f576040517ff2440b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008481526006602052604090205460ff1615610fa8576040517ff1a9458100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848152600560205260409020805480158015610fc557508515155b1561102857835464010000000090046001600160a01b031660008115610feb5781610ffa565b60018601546001600160a01b03165b90506110068187613df4565b505050600094855250506006602052505060409020805460ff19166001179055565b6000868152600760209081526040918290208251608081018452815460ff81161515808352610100820463ffffffff16948301949094526501000000000090046001600160801b031693810193909352600101546001600160a01b031660608301526110ac576001600160801b0360408201526001815260008690036110ac578195505b600086826020015163ffffffff166110c4919061566e565b905060008382116110d557816110d7565b835b602084015190915063ffffffff165b818110156111f757600086828154811061110257611102615642565b6000918252602080832090910154808352600690915260409091205490915060ff1661115a576040517f9a07664600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002828154811061116f5761116f615642565b60009182526020909120600590910201805490915064010000000090046001600160a01b03161580156111b65750600481015460408701516001600160801b039182169116115b156111e25760018101546001600160a01b0316606087015260048101546001600160801b031660408701525b505080806111ef90615686565b9150506110e6565b5063ffffffff818116602085810191825260008c81526007909152604090819020865181549351928801517fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009094169015157fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff161761010092909416918202939093177fffffffffffffffffffffff00000000000000000000000000000000ffffffffff16650100000000006001600160801b03909316929092029190911782556060850151600190920180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039093169290921790915584900361140657606083015160008a8152600660205260409020805460ff191660011790558915801561134357506000547201000000000000000000000000000000000000900460ff165b1561139e576001546001600160a01b031661135e818a613df4565b88546001600160a01b03909116640100000000027fffffffffffffffff0000000000000000000000000000000000000000ffffffff909116178855611404565b6113cb6001600160a01b038216156113b657816113c5565b60018901546001600160a01b03165b89613df4565b87547fffffffffffffffff0000000000000000000000000000000000000000ffffffff166401000000006001600160a01b038316021788555b505b505050505050505050565b600080600054600160801b900460ff16600281111561143257611432615340565b146114505760405163067fe19560e41b815260040160405180910390fd5b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85460ff166114b4576040517f9a07664600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001600160a01b031660026000815481106114d3576114d3615642565b600091825260209091206005909102015464010000000090046001600160a01b031614611501576001611504565b60025b6000805467ffffffffffffffff421668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff82168117835592935083927fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffff000000000000000000ffffffffffffffff90911617600160801b8360028111156115a8576115a8615340565b0217905560028111156115bd576115bd615340565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a290565b6005602052816000526040600020818154811061160557600080fd5b90600052602060002001600091509150505481565b905090565b61162c8383836001611991565b505050565b6000818152600760209081526040808320600590925282208054825461166290610100900463ffffffff16826156a0565b95945050505050565b606061161a60546020613e36565b611681612332565b60006002600d5460ff16600281111561169c5761169c615340565b036116c057506001600160a01b0381166000908152600b602052604090205461172f565b6001600d5460ff1660028111156116d9576116d9615340565b036116fd57506001600160a01b03811660009081526003602052604090205461172f565b6040517f078a3df400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000908152600c602052604090205460ff1661180c576001600160a01b038281166000818152600c602052604090819020805460ff19166001179055517f7eee288d0000000000000000000000000000000000000000000000000000000081526004810191909152602481018390527f000000000000000000000000000000000000000000000000000000000000000090911690637eee288d90604401600060405180830381600087803b1580156117f057600080fd5b505af1158015611804573d6000803e3d6000fd5b505050505050565b80600003611846576040517f17bfe5f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038281166000818152600b60209081526040808320839055600390915280822091909155517ff3fef3a30000000000000000000000000000000000000000000000000000000081526004810191909152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063f3fef3a390604401600060405180830381600087803b1580156118ec57600080fd5b505af1158015611900573d6000803e3d6000fd5b505050506000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611951576040519150601f19603f3d011682016040523d82523d6000602084013e611956565b606091505b505090508061162c576040517f83e6cc6b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054600160801b900460ff1660028111156119b0576119b0615340565b146119ce5760405163067fe19560e41b815260040160405180910390fd5b6000600284815481106119e3576119e3615642565b60009182526020918290206040805160e0810182526005909302909101805463ffffffff811684526001600160a01b0364010000000090910481169484019490945260018101549093169082015260028201546001600160801b03908116606083015260038301546080830181905260049093015480821660a0840152600160801b90041660c082015291508514611aa7576040517f3014033200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a0810151600083156001600160801b0383161760011b90506000611b3c826001600160801b03167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b60ff169050861580611b775750611b747f0000000000000000000000000000000000000000000000000000000000000000600261566e565b81145b8015611b81575084155b15611bb8576040517fa42637bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000547201000000000000000000000000000000000000900460ff168015611bde575086155b15611c15576040517f0ea2e75200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000811115611c6f576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c9a7f0000000000000000000000000000000000000000000000000000000000000000600161566e565b8103611cac57611cac86888588613e6a565b34611cb683612e95565b14611ced576040517f8620aa1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611cf888612cfb565b905067ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811690821603611d60576040517f3381d11400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611d8d60017f00000000000000000000000000000000000000000000000000000000000000006156a0565b8303611eb1577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1591906156b7565b6001600160a01b031663f3f480d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7691906156d4565b611eaa907f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166156ed565b9050611f44565b611edc60017f00000000000000000000000000000000000000000000000000000000000000006156a0565b8303611f1757611eaa7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166002615719565b507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff165b611f78817f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16615749565b67ffffffffffffffff16611f938367ffffffffffffffff1690565b67ffffffffffffffff161115611fda57611fd7817f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16615749565b91505b6000604083901b421760008a8152608087901b6001600160801b038d1617602052604081209192509060008181526004602052604090205490915060ff161561204f576040517f80497e3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016004600083815260200190815260200160002060006101000a81548160ff02191690831515021790555060026040518060e001604052808d63ffffffff16815260200160006001600160a01b03168152602001336001600160a01b03168152602001346001600160801b031681526020018c8152602001886001600160801b03168152602001846001600160801b0316815250908060018154018082558091505060019003906000526020600020906005020160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160020160006101000a8154816001600160801b0302191690836001600160801b031602179055506080820151816003015560a08201518160040160006101000a8154816001600160801b0302191690836001600160801b0316021790555060c08201518160040160106101000a8154816001600160801b0302191690836001600160801b031602179055505050600560008c8152602001908152602001600020600160028054905061224691906156a0565b81546001810183556000928352602080842090910191909155338252600b905260408120805434929061227a90849061566e565b925050819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156122dc57600080fd5b505af11580156122f0573d6000803e3d6000fd5b50506040513393508d92508e91507f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be90600090a4505050505050505050505050565b6002600d5460ff16600281111561234b5761234b615340565b148061236d57506001600d5460ff16600281111561236b5761236b615340565b145b1561237457565b6000600d5460ff16600281111561238d5761238d615340565b146123c4576040517f078a3df400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612422573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124469190615772565b1561247d576040517f379a7ed900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005468010000000000000000900467ffffffffffffffff1667ffffffffffffffff166000036124d9576040517fc105260a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f0314d2b30000000000000000000000000000000000000000000000000000000081523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630314d2b390602401602060405180830381865afa158015612559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257d9190615772565b9050806125b6576040517f4851bd9b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f17cf21a90000000000000000000000000000000000000000000000000000000081523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906317cf21a990602401600060405180830381600087803b15801561263057600080fd5b505af1925050508015612641575060015b506040517f496b9c160000000000000000000000000000000000000000000000000000000081523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063496b9c1690602401602060405180830381865afa1580156126c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e69190615772565b9050801561270057600d805460ff1916600117905561270e565b600d805460ff191660021790555b600d546040517f9908eaac0645df9d0704d06adc9e07337c951de2f06b5f2836151d48d5e4722f916127459160ff90911690615377565b60405180910390a15050565b61162c8383836000611991565b60005471010000000000000000000000000000000000900460ff16156127b0576040517f0dc149f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d83ef2676040518163ffffffff1660e01b81526004016040805180830381865afa158015612810573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612834919061578f565b909250905081612870576040517f6a6bc3b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915282815260200181905260088290556009819055607a36146128c7576040517f9824bdab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803660011981013560f01c90036054013511612925576040517ff40239db0000000000000000000000000000000000000000000000000000000081523660011981013560f01c90036014013560048201526024015b60405180910390fd5b6040805160e08101825263ffffffff808252600060208084018281523660011981013560f01c90038035606090811c8789018181526001600160801b0334818116948b0194855260149095013560808b01908152600160a08c0181815242841660c08e019081526002805493840181558c529c517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace600590930292830180549a5191909d167fffffffffffffffff000000000000000000000000000000000000000000000000909a16999099176401000000006001600160a01b039a8b160217909b5592517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf840180547fffffffffffffffffffffffff000000000000000000000000000000000000000016919098161790965592517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad0820180547fffffffffffffffffffffffffffffffff000000000000000000000000000000001691851691909117905593517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad185015595519651968116600160801b9790911696909602959095177f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad2909101558154710100000000000000000000000000000000007fffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff909116178255918152600b909152918220805491929091612b6690849061566e565b925050819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015612bc857600080fd5b505af1158015612bdc573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000164267ffffffffffffffff161790555050604080517f3c9f397c00000000000000000000000000000000000000000000000000000000815290517f000000000000000000000000000000000000000000000000000000000000000063ffffffff1692507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691633c9f397c9160048083019260209291908290030181865afa158015612cbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cdf91906157b3565b600a805460ff191663ffffffff92909216929092141790555050565b600080600054600160801b900460ff166002811115612d1c57612d1c615340565b14612d3a5760405163067fe19560e41b815260040160405180910390fd5b600060028381548110612d4f57612d4f615642565b600091825260208220600590910201805490925063ffffffff90811614612db557815460028054909163ffffffff16908110612d8d57612d8d615642565b906000526020600020906005020160040160109054906101000a90046001600160801b031690505b6004820154600090612de090600160801b900467ffffffffffffffff165b67ffffffffffffffff1690565b612df49067ffffffffffffffff16426156a0565b612e0a612dd3846001600160801b031660401c90565b67ffffffffffffffff16612e1e919061566e565b905067ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001667ffffffffffffffff168167ffffffffffffffff1611612e6b5780611662565b7f000000000000000000000000000000000000000000000000000000000000000095945050505050565b600080612f12836001600160801b03167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b60ff1690507f0000000000000000000000000000000000000000000000000000000000000000811115612f71576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b642e90edd00062061a806311e1a3006000612f8c83836157ef565b9050670de0b6b3a76400006000612fc3827f0000000000000000000000000000000000000000000000000000000000000000615803565b90506000612fe1612fdc670de0b6b3a764000086615803565b613ff9565b90506000612fef848461424b565b90506000612ffd838361429a565b9050600061300a826142c8565b9050600061302982613024670de0b6b3a76400008f615803565b6144b0565b905060006130378b8361429a565b9050613043818d615803565b9f9e505050505050505050505050505050565b6002818154811061306657600080fd5b60009182526020909120600590910201805460018201546002830154600384015460049094015463ffffffff841695506401000000009093046001600160a01b03908116949216926001600160801b03918216929180821691600160801b90041687565b60006002600d5460ff1660028111156130e5576130e5615340565b0361310657506001600160a01b03166000908152600b602052604090205490565b506001600160a01b031660009081526003602052604090205490565b60008054600160801b900460ff16600281111561314157613141615340565b1461315f5760405163067fe19560e41b815260040160405180910390fd5b60006002878154811061317457613174615642565b6000918252602082206005919091020160048101549092506001600160801b0316908715821760011b90506131ca7f0000000000000000000000000000000000000000000000000000000000000000600161566e565b613244826001600160801b03167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b60ff161461327e576040517f5f53dd9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080891561335a576132d17f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006156a0565b6001901b6132e7846001600160801b03166144e1565b6001600160801b03166132fa9190615822565b1561332e5761332561331660016001600160801b038716615836565b865463ffffffff166000614567565b60030154613350565b7f00000000000000000000000000000000000000000000000000000000000000005b915084905061337b565b600385015491506133786133166001600160801b0386166001615856565b90505b600882901b60088a8a604051613392929190615632565b6040518091039020901b146133d3576040517f696550ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006133de8c614630565b905060006133ed836003015490565b6040517fe14ced320000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e14ced329061345a908f908f908f908f908a906004016158c1565b6020604051808303816000875af1158015613479573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061349d91906156d4565b600485015491149150600090600290613526906001600160801b03167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b6135a0896001600160801b03167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b6135aa91906158fb565b6135b4919061591e565b60ff1615905081151581036135f5576040517ffb4e40dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b875464010000000090046001600160a01b03161561363f576040517f9071e6af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505085547fffffffffffffffff0000000000000000000000000000000000000000ffffffff163364010000000002179095555050505050505050505050565b60008054600160801b900460ff16600281111561369d5761369d615340565b146136bb5760405163067fe19560e41b815260040160405180910390fd5b6000806000806136ca8661465f565b935093509350935060006136e0858585856149b8565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015613742573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061376691906156b7565b905060018903613833576001600160a01b0381166352f0f3ad8a846137973660011981013560f01c90036034013590565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815260048101939093526024830191909152604482015260206064820152608481018a905260a4015b6020604051808303816000875af1158015613809573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061382d91906156d4565b50611406565b60028903613852576001600160a01b0381166352f0f3ad8a8489613797565b60038903613871576001600160a01b0381166352f0f3ad8a8487613797565b600489036139a65760006138ae6001600160801b0385167f0000000000000000000000000000000000000000000000000000000000000000614a57565b6009546138bb919061566e565b6138c690600161566e565b90503660011981013560f01c90036054013581106138f3573660011981013560f01c9003605401356138f5565b805b90506001600160a01b0382166352f0f3ad8b8560405160e084901b7fffffffff000000000000000000000000000000000000000000000000000000001681526004810192909252602482015260c084901b604482015260086064820152608481018b905260a4016020604051808303816000875af115801561397b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399f91906156d4565b5050611406565b60058903613a32576040517f52f0f3ad000000000000000000000000000000000000000000000000000000008152600481018a9052602481018390527f000000000000000000000000000000000000000000000000000000000000000060c01b604482015260086064820152608481018890526001600160a01b038216906352f0f3ad9060a4016137ea565b6040517fff137e6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000003660011981013560f01c9003601401356060613a9f61166b565b9050909192565b600081831015613ab65781613ab8565b825b90505b92915050565b60008160000151826020015183604001518460600151604051602001613b00949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b60408051808201909152600080825260208201528151600003613b6c576040517f5ab458fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b60606000806000613b9a85614aec565b919450925090506001816001811115613bb557613bb5615340565b14613bec576040517f4b9c6abe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8451613bf8838561566e565b14613c2f576040517f5c5537b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516020808252610420820190925290816020015b6040805180820190915260008082526020820152815260200190600190039081613c465790505093506000835b8651811015613d3457600080613cb96040518060400160405280858c60000151613c9d91906156a0565b8152602001858c60200151613cb2919061566e565b9052614aec565b509150915060405180604001604052808383613cd5919061566e565b8152602001848b60200151613cea919061566e565b815250888581518110613cff57613cff615642565b6020908102919091010152613d1560018561566e565b9350613d21818361566e565b613d2b908461566e565b92505050613c73565b50845250919392505050565b60606000806000613d5085614aec565b919450925090506000816001811115613d6b57613d6b615340565b14613da2576040517f1ff9b2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613dac828461566e565b855114613de5576040517f5c5537b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61166285602001518484614f8a565b60028101546001600160a01b038316600090815260036020526040812080546001600160801b0390931692909190613e2d90849061566e565b90915550505050565b6040518181523660011981013560f01c90038284820160208401378260208301016000815260208101604052505092915050565b6000613e806001600160801b0384166001615856565b90506000613e9082866001614567565b9050600086901a8380613f5a5750613ec960027f0000000000000000000000000000000000000000000000000000000000000000615822565b6004830154600290613f4b906001600160801b03167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b613f55919061591e565b60ff16145b15613fb25760ff811660011480613f74575060ff81166002145b613fad576040517ff40239db0000000000000000000000000000000000000000000000000000000081526004810188905260240161291c565b613ff0565b60ff811615613ff0576040517ff40239db0000000000000000000000000000000000000000000000000000000081526004810188905260240161291c565b50505050505050565b6001600160801b03811160071b81811c67ffffffffffffffff1060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c60ff1060031b176000821361404f57631615e6386000526004601cfd5b7ff8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffff6f8421084210842108cc6318c6db6d54be83831c1c601f161a1890811b609f90811c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506029190037d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b60007812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f218311670de0b6b3a76400000215820261428857637c5f487d6000526004601cfd5b50670de0b6b3a7640000919091020490565b6000816000190483118202156142b85763bac65e5b6000526004601cfd5b50670de0b6b3a764000091020490565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdc0d0570925a462d782136142f657919050565b680755bf798b4a1bf1e582126143145763a37bfec96000526004601cfd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6000613ab8670de0b6b3a7640000836144c886613ff9565b6144d29190615940565b6144dc91906159fc565b6142c8565b600080614555837e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b600160ff919091161b90920392915050565b600080826145a7576145a26001600160801b0386167f000000000000000000000000000000000000000000000000000000000000000061501f565b6145b9565b6145b9856001600160801b031661515e565b9050600284815481106145ce576145ce615642565b906000526020600020906005020191505b60048201546001600160801b0382811691161461462857815460028054909163ffffffff1690811061461357614613615642565b906000526020600020906005020191506145df565b509392505050565b60008060008060006146418661465f565b9350935093509350614655848484846149b8565b9695505050505050565b600080600080600085905060006002828154811061467f5761467f615642565b600091825260209091206004600590920201908101549091507f000000000000000000000000000000000000000000000000000000000000000090614734906001600160801b03167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b60ff161161476e576040517fb34b5c2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000815b60048301547f000000000000000000000000000000000000000000000000000000000000000090614813906001600160801b03167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b60ff16925082111561488857825463ffffffff166148527f0000000000000000000000000000000000000000000000000000000000000000600161566e565b830361485c578391505b6002818154811061486f5761486f615642565b9060005260206000209060050201935080945050614772565b600481810154908401546001600160801b0391821691166000816001600160801b03166148cd6148c1856001600160801b031660011c90565b6001600160801b031690565b6001600160801b031614905080156149665760006148f3836001600160801b03166144e1565b6001600160801b0316111561494357600061492361491b60016001600160801b038616615836565b896001614567565b6003810154600490910154909c506001600160801b03169a506149499050565b6008549a505b600386015460048701549099506001600160801b031697506149aa565b600061497f61491b6001600160801b0385166001615856565b6003808901546004808b015492840154930154909e506001600160801b039182169d50919b50169850505b505050505050509193509193565b60006001600160801b03841615614a135760408051602081018790526001600160801b038087169282019290925260608101859052908316608082015260a00160405160208183030381529060405280519060200120611662565b8282604051602001614a389291909182526001600160801b0316602082015260400190565b6040516020818303038152906040528051906020012095945050505050565b600080614acb847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b60ff1690508083036001841b600180831b0386831b17039250505092915050565b60008060008360000151600003614b2f576040517f5ab458fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020840151805160001a607f8111614b54576000600160009450945094505050614f83565b60b78111614c6a576000614b696080836156a0565b905080876000015111614ba8576040517f66c9448500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001838101517fff00000000000000000000000000000000000000000000000000000000000000169082148015614c2057507f80000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216105b15614c57576040517fbabb01dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060019550935060009250614f83915050565b60bf8111614dc8576000614c7f60b7836156a0565b905080876000015111614cbe576040517f66c9448500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003614d20576040517fbabb01dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600184015160088302610100031c60378111614d68576040517fbabb01dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b614d72818461566e565b895111614dab576040517f66c9448500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b614db683600161566e565b9750955060009450614f839350505050565b60f78111614e2d576000614ddd60c0836156a0565b905080876000015111614e1c576040517f66c9448500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600195509350849250614f83915050565b6000614e3a60f7836156a0565b905080876000015111614e79576040517f66c9448500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003614edb576040517fbabb01dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600184015160088302610100031c60378111614f23576040517fbabb01dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b614f2d818461566e565b895111614f66576040517f66c9448500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b614f7183600161566e565b9750955060019450614f839350505050565b9193909250565b60608167ffffffffffffffff811115614fa557614fa56155a8565b6040519080825280601f01601f191660200182016040528015614fcf576020820181803683370190505b5090508115615018576000614fe4848661566e565b90506020820160005b84811015615005578281015182820152602001614fed565b84811115615014576000858301525b5050505b9392505050565b60008161509c846001600160801b03167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b60ff16116150b25763b34b5c226000526004601cfd5b6150bb8361515e565b905081615138826001600160801b03167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b60ff1611613abb57613ab861514e83600161566e565b6001600160801b038316906151ea565b600081196001830116816151d9827e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b60ff169390931c8015179392505050565b60008061525e847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f6307c4acdd60e01b67ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b60ff169050808303600180821b0385821b179250505092915050565b60008083601f84011261528c57600080fd5b50813567ffffffffffffffff8111156152a457600080fd5b6020830191508360208285010111156152bc57600080fd5b9250929050565b600080600083850360a08112156152d957600080fd5b60808112156152e757600080fd5b50839250608084013567ffffffffffffffff81111561530557600080fd5b6153118682870161527a565b9497909650939450505050565b6000806040838503121561533157600080fd5b50508035926020909101359150565b634e487b7160e01b600052602160045260246000fd5b6003811061537457634e487b7160e01b600052602160045260246000fd5b50565b6020810161538483615356565b91905290565b6001600160a01b038116811461537457600080fd5b6000602082840312156153b157600080fd5b81356150188161538a565b6000806000606084860312156153d157600080fd5b505081359360208301359350604090920135919050565b6000815180845260005b8181101561540e576020818501810151868301820152016153f2565b81811115615420576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000613ab860208301846153e8565b60006020828403121561547857600080fd5b5035919050565b801515811461537457600080fd5b600080600080608085870312156154a357600080fd5b84359350602085013592506040850135915060608501356154c38161547f565b939692955090935050565b6000602082840312156154e057600080fd5b81356001600160801b038116811461501857600080fd5b6000806000806000806080878903121561551057600080fd5b8635955060208701356155228161547f565b9450604087013567ffffffffffffffff8082111561553f57600080fd5b61554b8a838b0161527a565b9096509450606089013591508082111561556457600080fd5b5061557189828a0161527a565b979a9699509497509295939492505050565b63ffffffff8416815282602082015260606040820152600061166260608301846153e8565b634e487b7160e01b600052604160045260246000fd5b6000608082840312156155d057600080fd5b6040516080810181811067ffffffffffffffff8211171561560157634e487b7160e01b600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561568157615681615658565b500190565b6000600019820361569957615699615658565b5060010190565b6000828210156156b2576156b2615658565b500390565b6000602082840312156156c957600080fd5b81516150188161538a565b6000602082840312156156e657600080fd5b5051919050565b600067ffffffffffffffff80831681851680830382111561571057615710615658565b01949350505050565b600067ffffffffffffffff8083168185168183048111821515161561574057615740615658565b02949350505050565b600067ffffffffffffffff8381169083168181101561576a5761576a615658565b039392505050565b60006020828403121561578457600080fd5b81516150188161547f565b600080604083850312156157a257600080fd5b505080516020909101519092909150565b6000602082840312156157c557600080fd5b815163ffffffff8116811461501857600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826157fe576157fe6157d9565b500490565b600081600019048311821515161561581d5761581d615658565b500290565b600082615831576158316157d9565b500690565b60006001600160801b038381169083168181101561576a5761576a615658565b60006001600160801b0380831681851680830382111561571057615710615658565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6060815260006158d5606083018789615878565b82810360208401526158e8818688615878565b9150508260408301529695505050505050565b600060ff821660ff84168082101561591557615915615658565b90039392505050565b600060ff831680615931576159316157d9565b8060ff84160691505092915050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561598157615981615658565b7f800000000000000000000000000000000000000000000000000000000000000060008712868205881281841616156159bc576159bc615658565b600087129250878205871284841616156159d8576159d8615658565b878505871281841616156159ee576159ee615658565b505050929093029392505050565b600082615a0b57615a0b6157d9565b60001983147f800000000000000000000000000000000000000000000000000000000000000083141615615a4157615a41615658565b50059056fea164736f6c634300080f000a000000000000000000000000000000000000000000000000000000000000000003caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b0000000000000000000000000000000000000000000000000000000000000049000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000000000000000000049d400000000000000000000000006463dee3828677f6270d83d45408044fc5edb908000000000000000000000000d3683e4947a7769603ab6418ec02f000ce3cf30b0000000000000000000000002ff5cc82dbf333ea30d8ee462178ab17073153550000000000000000000000000000000000000000000000000000000000014a34" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x1fd25cd", + "logs": [ + { + "address": "0x0fe884546476ddd290ec46318785046ef68a0ba9", + "topics": [ + "0x66753cd2356569ee081232e3be8909b950e0a76c1f8460c3a5e3c2be32b11bed" + ], + "data": "0x000000000000000000000000a8b8ca1d6f0f5ce63dcea9121a01b302c5801303000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001a4858cc832000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000c69e4c24db479191676611a25d977203c3bdca620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a4ff2dd5a100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f272670eb55e895584501d564afeb048bed261940000000000000000000000000389e59aa0a41e4a413ae70f0008e76caa34b1f303caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082000000000000000000000000646132a1667ca7ad00d36616afba1a28116c770a0000000000000000000000000000000000000000000000000000000000000000010000000000000000000000006af0674791925f767060dd52f7fb20984e8639d80000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000007f10098bd53519c739ca8a404afe127647d947740000000000000000000000000000000000000000000000000000000000000002", + "blockHash": "0x9b45b3ef14485b48fef0d3c24c3c4fc61ed4f2290698cd4db84b6bda2d17d749", + "blockNumber": "0x935539", + "blockTimestamp": "0x691c7ef8", + "transactionHash": "0x248f85399e2a23687bd9d1440b51d9677a94ff763827abcad5a2a4b457c70590", + "transactionIndex": "0x89", + "logIndex": "0x18e", + "removed": false + }, + { + "address": "0xf272670eb55e895584501d564afeb048bed26194", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000002fa28989fc559836e9d66dff3010c7f7f41c65ed" + ], + "data": "0x", + "blockHash": "0x9b45b3ef14485b48fef0d3c24c3c4fc61ed4f2290698cd4db84b6bda2d17d749", + "blockNumber": "0x935539", + "blockTimestamp": "0x691c7ef8", + "transactionHash": "0x248f85399e2a23687bd9d1440b51d9677a94ff763827abcad5a2a4b457c70590", + "transactionIndex": "0x89", + "logIndex": "0x18f", + "removed": false + }, + { + "address": "0x49f53e41452c74589e85ca1677426ba426459e85", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000007cf803296662e8c72a6c1d6450572209acf7f202" + ], + "data": "0x", + "blockHash": "0x9b45b3ef14485b48fef0d3c24c3c4fc61ed4f2290698cd4db84b6bda2d17d749", + "blockNumber": "0x935539", + "blockTimestamp": "0x691c7ef8", + "transactionHash": "0x248f85399e2a23687bd9d1440b51d9677a94ff763827abcad5a2a4b457c70590", + "transactionIndex": "0x89", + "logIndex": "0x190", + "removed": false + }, + { + "address": "0xb1efb9650ad6d0cc1ed3ac4a0b7f1d5732696d37", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000008ee6fb13c6c9a7e401531168e196fbf8b05ceabb" + ], + "data": "0x", + "blockHash": "0x9b45b3ef14485b48fef0d3c24c3c4fc61ed4f2290698cd4db84b6bda2d17d749", + "blockNumber": "0x935539", + "blockTimestamp": "0x691c7ef8", + "transactionHash": "0x248f85399e2a23687bd9d1440b51d9677a94ff763827abcad5a2a4b457c70590", + "transactionIndex": "0x89", + "logIndex": "0x191", + "removed": false + }, + { + "address": "0xd6e6dbf4f7ea0ac412fd8b65ed297e64bb7a06e1", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x00000000000000000000000074fac1d45b98bae058f8f566201c9a81b85c7d50" + ], + "data": "0x", + "blockHash": "0x9b45b3ef14485b48fef0d3c24c3c4fc61ed4f2290698cd4db84b6bda2d17d749", + "blockNumber": "0x935539", + "blockTimestamp": "0x691c7ef8", + "transactionHash": "0x248f85399e2a23687bd9d1440b51d9677a94ff763827abcad5a2a4b457c70590", + "transactionIndex": "0x89", + "logIndex": "0x192", + "removed": false + }, + { + "address": "0x709c2b8ef4a9fefc629a8a2c1af424dc5bd6ad1b", + "topics": [ + "0x9416a153a346f93d95f94b064ae3f148b6460473c6e82b3f9fc2521b873fcd6c", + "0x3b4a6791a6879d27c0ceeea3f78f8ebe66a01905f4a1290a8c6aff3e85f4665a" + ], + "data": "0x000000000000000000000000b686f13aff1e427a1f993f29ab0f2e7383729fe000000000000000000000000022d12e0faebd62d429514a65ebae32dd316c12d6", + "blockHash": "0x9b45b3ef14485b48fef0d3c24c3c4fc61ed4f2290698cd4db84b6bda2d17d749", + "blockNumber": "0x935539", + "blockTimestamp": "0x691c7ef8", + "transactionHash": "0x248f85399e2a23687bd9d1440b51d9677a94ff763827abcad5a2a4b457c70590", + "transactionIndex": "0x89", + "logIndex": "0x193", + "removed": false + }, + { + "address": "0x21efd066e581fa55ef105170cc04d74386a09190", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x00000000000000000000000074f1ac50eb0be98853805d381c884f5f9abdecf9" + ], + "data": "0x", + "blockHash": "0x9b45b3ef14485b48fef0d3c24c3c4fc61ed4f2290698cd4db84b6bda2d17d749", + "blockNumber": "0x935539", + "blockTimestamp": "0x691c7ef8", + "transactionHash": "0x248f85399e2a23687bd9d1440b51d9677a94ff763827abcad5a2a4b457c70590", + "transactionIndex": "0x89", + "logIndex": "0x194", + "removed": false + }, + { + "address": "0xd6e6dbf4f7ea0ac412fd8b65ed297e64bb7a06e1", + "topics": [ + "0xff513d80e2c7fa487608f70a618dfbc0cf415699dc69588c747e8c71566c88de", + "0x000000000000000000000000a1ae4fd5541a3e7a912e45560ed60d3edc5f9a05", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "data": "0x", + "blockHash": "0x9b45b3ef14485b48fef0d3c24c3c4fc61ed4f2290698cd4db84b6bda2d17d749", + "blockNumber": "0x935539", + "blockTimestamp": "0x691c7ef8", + "transactionHash": "0x248f85399e2a23687bd9d1440b51d9677a94ff763827abcad5a2a4b457c70590", + "transactionIndex": "0x89", + "logIndex": "0x195", + "removed": false + }, + { + "address": "0xd6e6dbf4f7ea0ac412fd8b65ed297e64bb7a06e1", + "topics": [ + "0xff513d80e2c7fa487608f70a618dfbc0cf415699dc69588c747e8c71566c88de", + "0x000000000000000000000000ed839a2aa262eccc513308fe7b8f39088ff8e992", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x", + "blockHash": "0x9b45b3ef14485b48fef0d3c24c3c4fc61ed4f2290698cd4db84b6bda2d17d749", + "blockNumber": "0x935539", + "blockTimestamp": "0x691c7ef8", + "transactionHash": "0x248f85399e2a23687bd9d1440b51d9677a94ff763827abcad5a2a4b457c70590", + "transactionIndex": "0x89", + "logIndex": "0x196", + "removed": false + }, + { + "address": "0x0fe884546476ddd290ec46318785046ef68a0ba9", + "topics": [ + "0x78bc67b9bf548ef6410becd31a3e10b9ea6c255974ef6b4530728b431df30030", + "0x0000000000000000000000000000000000000000000000000000000000014a34", + "0x000000000000000000000000f272670eb55e895584501d564afeb048bed26194", + "0x0000000000000000000000000fe884546476ddd290ec46318785046ef68a0ba9" + ], + "data": "0x", + "blockHash": "0x9b45b3ef14485b48fef0d3c24c3c4fc61ed4f2290698cd4db84b6bda2d17d749", + "blockNumber": "0x935539", + "blockTimestamp": "0x691c7ef8", + "transactionHash": "0x248f85399e2a23687bd9d1440b51d9677a94ff763827abcad5a2a4b457c70590", + "transactionIndex": "0x89", + "logIndex": "0x197", + "removed": false + }, + { + "address": "0x0fe884546476ddd290ec46318785046ef68a0ba9", + "topics": [ + "0x442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e" + ], + "data": "0x41a6d7fbb33919d08a40b81927f228de3011cca9ece4c32b179f8e4711572b5a0000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x9b45b3ef14485b48fef0d3c24c3c4fc61ed4f2290698cd4db84b6bda2d17d749", + "blockNumber": "0x935539", + "blockTimestamp": "0x691c7ef8", + "transactionHash": "0x248f85399e2a23687bd9d1440b51d9677a94ff763827abcad5a2a4b457c70590", + "transactionIndex": "0x89", + "logIndex": "0x198", + "removed": false + } + ], + "logsBloom": "0x000000004006000000000008000000004008000000000000000000800440030000000002000000000400010400000000800000000000000000000100000481000004810004000000000000001000020000000400008400400000000011000000000000000201000000000080200008000000000000200000000000000000082000202800000008000000000000000000080400000020000000000000000000000000000004200001000000000a0004020000000000018080040200800000000004000020000000000000000000020400000000000800200001010420400060000000002000000000000000000000000000000000000000000000000000000100", + "type": "0x2", + "transactionHash": "0x248f85399e2a23687bd9d1440b51d9677a94ff763827abcad5a2a4b457c70590", + "transactionIndex": "0x89", + "blockHash": "0x9b45b3ef14485b48fef0d3c24c3c4fc61ed4f2290698cd4db84b6bda2d17d749", + "blockNumber": "0x935539", + "gasUsed": "0x9a7f69", + "effectiveGasPrice": "0xf4249", + "from": "0x7f10098bd53519c739ca8a404afe127647d94774", + "to": "0x0fe884546476ddd290ec46318785046ef68a0ba9", + "contractAddress": null + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1763475193401, + "chain": 11155111, + "commit": "58a1ca7" +} \ No newline at end of file diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/validations/op-signer.json b/sepolia/2025-11-07-upgrade-fault-proofs/validations/op-signer.json index e299f968..f458eef4 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/validations/op-signer.json +++ b/sepolia/2025-11-07-upgrade-fault-proofs/validations/op-signer.json @@ -5,7 +5,7 @@ "expectedDomainAndMessageHashes": { "address": "0x0fe884546476dDd290eC46318785046ef68a0BA9", "domainHash": "0x6f25427e79742a1eb82c103e2bf43c85fc59509274ec258ad6ed841c4a0048aa", - "messageHash": "0x63012f7123ec444c2b91c33f750ad17c662f82ac30075dc2cf4be163c7b07422" + "messageHash": "0xfb472420ca18b7ebe56d16c2efb3b593e9e5ac9df5385fa2e1eef648c21bc488" }, "stateOverrides": [ { @@ -24,7 +24,7 @@ "address": "0x6af0674791925f767060dd52f7fb20984e8639d8", "overrides": [ { - "key": "0x9a696c577589e96cb3fbc50421a9a814cd6f236c810f32af46de8a295e1cbbc9", + "key": "0x33bc665064f9988222f9f4721074db03e0b9e5f3abdfba193c69be36e0eb02b5", "value": "0x0000000000000000000000000000000000000000000000000000000000000001", "description": "Simulates an approval from msg.sender in order for the task simulation to succeed." } @@ -84,8 +84,8 @@ "changes": [ { "key": "0x0000000000000000000000000000000000000000000000000000000000000005", - "before": "0x000000000000000000000000000000000000000000000000000000000000000e", - "after": "0x000000000000000000000000000000000000000000000000000000000000000f", + "before": "0x000000000000000000000000000000000000000000000000000000000000000f", + "after": "0x0000000000000000000000000000000000000000000000000000000000000010", "description": "Increments the nonce", "allowDifference": false } From b853fa8d97456d3d41ae67c5741bd1be8b3f4af3 Mon Sep 17 00:00:00 2001 From: Joby Thundil Date: Tue, 18 Nov 2025 09:14:43 -0500 Subject: [PATCH 23/23] update status --- sepolia/2025-11-07-upgrade-fault-proofs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sepolia/2025-11-07-upgrade-fault-proofs/README.md b/sepolia/2025-11-07-upgrade-fault-proofs/README.md index 07f811ca..aa7e2b6d 100644 --- a/sepolia/2025-11-07-upgrade-fault-proofs/README.md +++ b/sepolia/2025-11-07-upgrade-fault-proofs/README.md @@ -1,6 +1,6 @@ # U17 Jovian Upgrade -Status: READY TO SIGN +Status: [EXECUTED](https://sepolia.etherscan.io/tx/0x248f85399e2a23687bd9d1440b51d9677a94ff763827abcad5a2a4b457c70590) ## Description